Vivado与Modelsim联合仿真
Vivado仿真器版本支持
首先查阅xilinx官方文档ug900(v2019.2),里面指出了vivado2019.2所支持的不同平台的仿真器版本。对于其他版本的vivado,应该也会在官方文档出给出,一定要注意查阅。
笔者采用的vivado版本为2019.2,可以从文档中看出,modelsim的版本也需要是对应的2019.2

编译Modelsim仿真库
关于编译仿真库,已经有很多其他博客给出了方法,不管是在vivado的图形化界面操作,或者输入tcl命令都非常方便。
但是笔者在编译仿真库的时候就一直出问题。一直出现“vlog-12110”的报错。查了很多资料,包括下图中的modelsim官方用户手册,都说modelsim10.7版本之后都不再使用-novopt的参数,按理说我不应该会遇到这个问题,我都已经是2019.2版本的modelsim了。

“vlog-12110”问题解决
该错误的主要问题是“-novopt”的参数一直在生效,但我并没有给出这样的参数,就很奇怪。
笔者详细查看了vivado给出的conpile_simlib编译后的log文件,可以看到执行的命令中也没有给出这一参数。因此问题大概率是出现在modelsim。
单独运行modelsim进行编译,在compile option里面需要勾选 use voptflow。对应的modelsim.ini文件中的VoptFlow参数就会置为1。而后能够正常编译。
笔者在安装modelsim2019.2之前安装过modelsim10.7,可能是资源来源有问题,对modelsim10.7卸载的时候卸载得不彻底。导致在编译库的时候调用的还是10.7版本的参数,而这个编译的参数就是在modelsim.ini文件中给出的。
最后用“every thing”搜索modelsim.ini,只将modelsim安装目录下的modelsim.ini保留,删除了其他以前残留的文件,而后就可以正常编译了。
关于Modelsim的优化
从10.7版本开始Modelsim废弃了-novopt的选项,相应的modelsim.ini文件中的VoptFlow参数也没用了。所以
10.7版本之后的Modelsim必须得开优化
除了modelsim.ini文件中的VoptFlow参数要去掉,还有右键源文件之后可以看到"Verilog & Systemverilog"标签栏下有一个"Use vopt flow"的选项需要勾上。


上面这些优化是编译相关的,还有仿真相关的优化。在"Simulate->Design Optimization"里面,Options标签栏下面有关于仿真优化的设置。

