队伍编号:CICC3327
在Ubuntu 虚拟机中使用verilator对蜂鸟E203内核进行仿真
蜂鸟E203是一款基于RISC-V架构的嵌入式处理器核,在开发中需要进行仿真操作来验证其功能性。本教程将介绍如何利用Verilator软件实现对蜂鸟E203内核的仿真操作。
1.安装Verilator。可以在Ubuntu虚拟机中使用以下命令进行安装:
sudo apt-get install verilator
2.下载蜂鸟E203处理器的跑分测试文件夹。
从蜂鸟E203官方github仓库获取跑分测试文件夹,具体方法为:
git clone https://github.com/Nuclei-Software/riscv-tests.git
3.编译测试程序。
进入riscv-tests的工程目录,执行以下命令进行编译:
cd riscv-tests
make clean
make RISCV_PREFIX=riscv32-unknown-elf-
4.编写第三方仿真模块代码,并将其集成到测试文件中。
在riscv-tests的工程目录下,创建一个名为”verilator”的文件夹,并在其中创建一个名为”verilator_tb.cpp”的文件。
编写”verilator_tb.cpp”代码如下:
#include
#include
#include "Vcore.h"
Vcore* dut;
VerilatedVcdC* trace;
int main(int argc, char** argv) {
Verilated::commandArgs(argc, argv);
dut = new Vcore;
trace = new VerilatedVcdC;
dut->trace(trace, 99);
trace->open("core.vcd");
dut->reset = 1;
while (!Verilated::gotFinish()) {
dut->clk = 0;
dut->eval();
trace->dump(dut->tick);
dut->clk = 1;
dut->eval();
trace->dump(dut->tick);
dut->tick++;
}
dut->final();
trace->close();
delete dut;
delete trace;
return 0;
}
上面的代码定义了一个名为”dut”的指针,指向蜂鸟E203内核的Verilog描述文件生成的仿真模块。它还定义了一个名为”trace”的变量,用于生成波形文件。最后,它启动了仿真器,执行了一个简单的时钟驱动循环,并在每次时钟上升沿时对仿真器进行更新和波形文件写入。
5.编写Makefile并进行仿真测试。
在”verilator”文件夹中创建一个名为”Makefile”的文件,编写以下代码:
verilator_sim: verilator_tb.cpp
verilator --cc core.v --exe verilator_tb.cpp
make -C obj_dir/ -f Vcore.mk
./obj_dir/Vcore
clean:
rm -rf obj_dir/ core.vcd verilator/verilator_tb
上面的Makefile文件通过verilator将核心模块进行C++化,然后编译链接生成可执行文件并进行仿真测试。
6.执行以下命令进行测试:
make -C riscv-tests/ verilator_sim RISCV_PREFIX=riscv32-unknown-elf-
如果一切顺利,输出的结果将显示仿真的时钟周期、模块状态和仿真结束的消息。