本设计针对内存管理单元(Memory Management Unit, MMU),进行VCS和Verdi的联合仿真。
MMU兼容RISC-V SV39标准,主要的作用有地址转换、页面保护和页面属性管理。MMU主要利用地址转换后援缓冲器(Translation Look-aside Buffer,TLB)来实现上述功能。TLB将CPU访存所使用的虚拟地址作为输入,转换前检查TLB的页属性,再输出该虚拟地址所对应的物理地址。
1、仿真工具简介
1.1 VCS
Verilog Compilation and Simulation(VCS)是一款高性能、大容量的模拟器,将高级抽象验证技术集成到一个开放的本地平台中。它是Synopsys公司开发的一款商业化工具,是业界主流的仿真工具之一。
VCS能够编译Verilog、VHDL等硬件语言,并处理包括RTL级别、门级级别和行为级别的各个层次的设计描述。VCS还支持原生的低功耗仿真和UPF格式,在已经具备的完整调试手段和高性能仿真的基础之上,可提供创新的电压感知验证技术,解决现代低功耗设计中的缺陷。
1.2 Verdi
Verdi是Synopsys公司针对复杂SoC的调试问题所开发的一个调试平台,具有强大的分析引擎,是广泛应用的EDA工具之一,它具有良好的可视化操作界面:
源代码窗口以树型排布的方式展示了设计的层次结构,在具体的设计代码部分可实现信号驱动的查找、仿真结果反标等功能。
波形窗口可以导入两种格式的仿真文件,VCD和FSDB,在波形窗口可以对感兴趣的信号进行可视化分析,可以极大的提高调试效率。
原理图窗口可以以电路的形式展示设计代码,既可以显示某一层的电路结构,也可以显示信号的局部电路图,有助于使用者理解各个模块之间的层次关系。
2、仿真环境的配置及编译
- 配置工程的环境变量
$ csh
$ cd your_directory
$ source setup/setup.csh
- 初始化环境变量
$ source setup/example_setup.csh
-
为使得在编译后生成.fsdb波形文件,在testbench中加入以下命令
initial
begin
$fsdbDumpfile("tb.fsdb")
$fsdbDumpvars(0)
end
-
调用Makefile文件对RTL文件和testbench文件进行编译
$ make compile SIM=vcs
3、仿真结果
-
运行MMU模块的仿真,仿真成功后,在工作目录下生成了tb.fsdb波形文件,供Verdi进一步使用
$ make runcase CASE=MMU SIM=vcs DUMP=on
- 打开Verdi,导入波形文件
$ cd ./work && verdi -sv -f ../logical/filelists/sim.fl
-ssy -ssv -top tb -ssf tb.fsdb
-
在波形窗口中添加MMU寄存器的输入输出端口信号,波形如图所示