RISC-V MCU中文社区

【分享】 芯来e203移植开发分享(二)——仿真文件简述与itcm固化程序

发表于 全国大学生集成电路创新创业大赛 2022-03-09 12:21:02
3
2729
3

报名编号:CICC2520 团队名称:暗物质队

简单介绍

根据上次的分享,已经把e203成到verdi与vcs仿真环境下。这次简单介绍一下e203的仿真文件与itcm固化程序的仿真。

仿真文件

简单分析一下e203的自带的仿真文件,跟着上次的分享,我们可以在makefile中设置自己想要仿真的testcase,这里使用的rv32ui-p-add.verilog,这里我们把的这个文件复制的上次分享建立的文件testcase中,读取仿真。

图片alt

仿真主要流程,其实就是把rv32ui-p-add.verilog中16进制文件加载到itcm的ram中,需要主要的itcm中的ram是64bit宽度,.verilog的文件是由$readmemh读上来的8bit数据,所以itcm_mem暂存,然后转为64bit存入itcm中的ram运行。

同时tb文件中,也引出了pc值,每条指令在存储空间中所处的地址称为它的PC (Program Counter) 。在程序运行时我们可以同观察pc值,来判断程序运行到具体哪一步,这也是之后重要的debug地方。

程序固化

既然tb的主要功能是固化程序,那么我们可以把这个程序直接初始的时候就加载到itcm的ram中,这里主要有两个方法:
1、将itcm中的ram替换为vivado的bram ip核,通过ip核配置时,加载.verilog文件。
2、在/rtl/e203/general/sirv_sim_ram.v中,添加initial语句,使用readmemh语句读取需要固化的程序.verilog,这需要注意的宽度不一样。解决方法可以使用脚本修改.verilog文件,或者和tb中一样暂存一下。

同时在system.v模块中设置硬件启动方式
图片alt
如此,也可以不使用jtag下载程序,通过vivado综合后,e203就可以直接从itcm运行程序直接使用。

如有错漏与问题,欢迎讨论。

喜欢3
用户评论 (3)
  • markman

    2023-11-11 22:21:51 markman 1#

    H.H

    你好,我按照方式二进行的程序固化,将BIT流烧进开发板后没得任何反应,请问还需要其他操作么

    可能是位宽不对,或者是大小端没对齐, 只能用小端存储

  • markman

    2023-11-11 22:21:48 markman 2#

    vivado里面  $readmemh函数支持读取超过8bit的,只要是16进制的数据即可

  • H.H

    2023-04-22 21:22:45 H.H 3#

    你好,我按照方式二进行的程序固化,将BIT流烧进开发板后没得任何反应,请问还需要其他操作么

未通过实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板