问题汇总
提醒
请大家在提问前,仔细阅读报错信息。向助教提问时,提供尽可能多的操作步骤、报错信息以及自己的分析等。我们将不再回答仅问出问题而不加思考的疑问。
另外,我们建议大家阅读提问的智慧,以便于更高效地交流讨论。
仿真框架为什么报错?
请确保下面的内容:
- 在
vsrc
目录下添加了your_vsrc
目录,并将 CPU 以及其包含的所有子模块(ALU、寄存器堆)等放入该目录下。注意:PDU 以及上板框架的 TOP 不包含在内。 - 如果你使用了 Verilog 头文件,则需要在
vsrc
目录下添加your_include
目录,并放在这里。 - 运行
cmake
时位于build
目录下,执行sim
时位于项目根目录下。 - 正确连接了
commit
和debug
系列的信号。 - 确保自己没有随意修改
configs.vh
文件中的内容。 - 如果是 Hit Bad Trap,请确保使用的测试程序最后将 a0 寄存器置为 0。
- 确保所有的设计文件里均没有
`timescale
语句。
RV 如何仿真?
手动编写一个 CPU_tb
文件,在其中例化 CPU 和存储器 IP 核。将 CPU 给出的 imem_raddr
右移两位后接入存储器的 a
端口,将存储器的 spo
端口接入 CPU 的 imem_rdata
端口。仿真时,将 COE 导入存储器 IP 核,生成合适的时钟信号和复位信号即可。仿真时的 global_en
信号置为 1。
include 相关的问题
- 解决方案 1:直接删除上板框架中的
config.v
文件,将其中的宏定义内容移动到需要使用宏定义的各个文件中(例如 CPU.v、Decode.v 等),最后删除 CPU 以及其包含的各个模块中所有的include
语句。此时使用仿真框架只需要将 CPU 以及其子模块导入到your_vsrc
目录下即可。 - 解决方案 2:按照下面的步骤进行:
- 在所有使用了
config.v
的文件中,将 include 语句改为`include "config.v"
(不再使用相对路径或绝对路径); - 将
config.v
文件放入仿真框架的your_include
目录下,将 CPU 以及其子模块放入仿真框架的your_vsrc
目录下; - 在 Vivado 的项目中,将
config.v
设置成 Verilog 头文件。方法为:在 Vivado 的 Sources 窗口中右键config.v
文件,选择 Set File Type,在弹出的窗口中选择 Verilog Header 即可。将 config.v 设置成 Verilog 头文件 - 此时,仿真框架和上板框架均可正常识别到
config.v
文件。
- 在所有使用了