- 通过以下命令克隆本项目
git clone --depth 1 https://github.com/OSCPU/ysyxSoC.git
- 将
ysyxSoC/ysyx/peripheral
目录及其子目录下的所有.v
文件加入verilator的Verilog文件列表 - 将
ysyxSoC/ysyx/soc/ysyxSoCFull.v
文件加入verilator的Verilog文件列表 - 将处理器Verilog文件加入verilator的Verilog文件列表
- 将
ysyxSoC/ysyx/peripheral/uart16550/rtl
和ysyxSoC/ysyx/peripheral/spi/rtl
两个目录加入包含路径中 (使用verilator的-I
选项) - 将
ysyxSoC/ysyx/peripheral/spiFlash/spiFlash.cpp
文件加入verilator的C++文件列表 - 将处理器的复位PC设置为
0x3000_0000
- 在verilator编译选项中添加
--timescale "1ns/1ns"
- 在verilator初始化时对flash进行初始化, 有以下两种方式:
- 调用
spiFlash.cpp
中的flash_init(img)
函数, 用于将bin文件中的指令序列放置在flash中, 其中参数img
是bin文件的路径, 在ysyxSoC/ysyx/program/bin/flash
和ysyxSoC/ysyx/program/bin/loader
目录下提供了一些示例 - 调用
spiFlash.cpp
中的flash_memcpy(src, len)
函数, 用于将已经读入内存的指令序列放置在flash中, 其中参数src
是指令序列的地址,len
是指令序列的长度
- 调用
- 将
ysyxSoCFull
模块(在ysyxSoC/ysyx/soc/ysyxSoCFull.v
中定义)设置为verilator仿真的顶层 - 将
ysyxSoC/ysyx/soc/ysyxSoCFull.v
中的ysyx_000000
模块名修改为自己的处理器模块名 - 通过verilator进行仿真即可