questasim 下的仿真(vivado)

1.编译仿真库

以vivado为例,Tools>Compile Simulation Libraries,出现对话框中选择simulator、路径,然后点compile开始编译,大概30分钟完成。

questasim 下的仿真(vivado)_第1张图片

编译完成后,在设定的路下会生成仿真库文件,该文件下会有一个modelsim.ini 文件,里面添加了生成的所有库

我本来想直接在qustasim 的安装路径下的modelsim.ini 文件中source 上面编译生成的这个modelsim.ini,但是好像不能识别,最后用了最笨的办法,直接将编译生成的modelsim.ini中的库文件申明全部复制到questasim 安装路径下的modelsim.ini中。

2.新建工程

questasim 新建工程,在工程目录下新建一个文件xxx_filelist.tcl ,指定所有的代码文件,包含ip core,如下所示

questasim 下的仿真(vivado)_第2张图片

 在FPGA设计中,glbl.v常用来定义全局复位/置位、全局三态信号和DUT的连接,并且用来为设计提供有效地复位信号,对设计中使用到的全局信号进行初始化。在仿真起始的100ns中,glbl将自动产生全局复位/置位

.说明:Verilog header 文件不需要加到这个filelist 中

3.vlog

vlog  +acc -work work xxx_filelist.tcl

将代码编译到work 库中

4.vsim

vsim -novopt -l simulation.log +TESTNAME=sample_smoke_test0 -L unisims_ver -L unisim -L unimacro_ver -L unimacro -L simprims_ver  -L secureip -lib work board work.glbl

view wave
add wave /board/*

run  -all

其中-novopt指不进行优化,这会让仿真变的很慢,根据实际需求选择吧

+TESTNAME=sample_smoke_test0 是针对系统函数$value$plusargs的命令选项

关于wave 有一点:

如上的命令执行时,会发现,每次只能看board这一层的信号,而其余模块的信号都没有波形

因此改成如下命令,可以解决问题,其中log -r /*表示记录所有的波形,仿真后打开wave 就能看到所有的信号波形了,但是这样会浪费时间,也可以将需要的信号选择出来存成wave.do 文件,然后执行do wave.do

view wave:
add wave *
log -r /*

run  -all
 

详细的命令和选项说明可以参考help信息

另外,vivado中有提供脚本导出,可以选择file>export>simulation导出questasim 脚本 作为参考

你可能感兴趣的:(FPGA,PCIE)