报名编号:CICC2520 团队名称:暗物质队
根据上次的分享,已经把e203成到verdi与vcs仿真环境下。这次简单介绍一下e203的仿真文件与itcm固化程序的仿真。
简单分析一下e203的自带的仿真文件,跟着上次的分享,我们可以在makefile中设置自己想要仿真的testcase,这里使用的rv32ui-p-add.verilog,这里我们把的这个文件复制的上次分享建立的文件testcase中,读取仿真。
仿真主要流程,其实就是把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模块中设置硬件启动方式
如此,也可以不使用jtag下载程序,通过vivado综合后,e203就可以直接从itcm运行程序直接使用。
如有错漏与问题,欢迎讨论。