如何直接从main函数开始仿真
提出问题
用最新的官方编译器得到的汇编文件在程序开始运行时会有很多初始化和预处理的步骤,但是仿真时不需要这些初始化,我们只关心main函数开始后CPU及NICE_core的表现。否则可能会仿真很久。
解决办法
1. 首先我们要将.verilog文件的地址全部改成0开头的,@8000_0000是ITCM的寻址基址,我们要将其写到存储器中就要从@0000_0000开始。(源文件共有4个@,后面是数据段地址也要修改)

2. 修改前三条指令:
80000000: 10010117 auipc sp,0x10010 #堆栈指针从90010000开始
80000004: 293000ef jal ra,80000a92 #跳转到main所在80000a96,需要根据具体地址更改80000008: a001 j 80000008 #原地跳转等待仿真结束 - 替换原.Verilog文件的前10个字节:

- 3. 最后修改一下tb_top.v的仿真时间
- 40000000太长了,可能几万ns就够了吧。
initial begin
#40000000
$display("Time Out !!!");
$finish;
end- 4. 仿真结果

- 程序正确从80000a96开始运行了

- 这里到30000多ns就运行完毕了,这个可能要试一下。
- 5. 该方法没有经过大量检测,仅给大家提供个思路
💡 请 登录 后参与讨论(微信扫码即登录/注册)
帖子信息
版块全国大学生集成电路创新创业大赛
回复2
浏览6232
发布2021-03-20 11:27