赞
踩
目录
2.Modelsim 2020.4编译源代码文件,报告“-novopt”相关错误;
3.Modelsim 2020.4仿真之前成熟的modelsim工程,报告“-novopt”相关错误,或者仿真开始后“sim”界面无功能模块;
做FPGA项目开发,编写完成的代码或新搭建的工程一般都会先放到Modelsim中仿真,测试功能是否满足要求。之前因为FPGA开发软件版本的原因,仿真时用到的Modelsim版本也一直是10.6e。在对Modelsim破解时,只需要将modelsim.ini中的VoptFlow参数从1改为0,后续就可以正常使用。
最近有项目用到Xilinx的芯片,开发软件也统一到了Vivado 2021.2,恰好又有一些对Xilinx官方ip的仿真需求。因为头几年也做过X家芯片和A家芯片,用Vivado或Quartus自带的仿真程序做仿真测试效率过于低下。就想着把Xilinx官方ip仿真库编译后导入到Modelsim,再在Modelsim中建立仿真工程进行代码测试。
接着,问题出现了!!!
首先把X家的ip仿真库导出到Modelsim,详细步骤可参考C站大佬的文章:
Modelsim独立仿真带有vivado IP核的文件-CSDN博客
在Vivado中选择好仿真软件类型、仿真库导出目录及执行文件目录后,点击开始编译,报告Modelsim版本与Vivado版本不适配。
为了保证Vivado软件的版本统一,只有取消重新找与Vivado 2021.2适配的Modelsim版本,安装上后再导出仿真文件。
在Xilinx官网找到文档UG973有关于各个Vivado版本对应的Modelsim版本说明。
所以,下个Modelsim 2020.4吧!!!
https://zhuanlan.zhihu.com/p/646172508
上述链接有大佬关于Modelsim 2020.4安装及破解的一切流程。
注:如果平台之前有安装其他版本的Modelsim,切记先卸载其他版本的Modelsim,并清除卸载残留。
安装破解完成后,重新导出仿真文件。文件导出完毕后Vivado会生成一个仿真报告,可以看一看。
软件安装破解完成了,自然需要试一试。
随便找之前的一个已经经过验证的Modelsim项目打开,先试一试源代码文件编译。
报错了!?研究研究咋回事。
网上有很多关于这个问题的描述,个人觉得C站大佬的这篇文章讲得比较详细:
Modelsim编译Vivado仿真库报错(vlog-12110)_novopt-CSDN博客
个人理解根本原因是Modelsim 10.7后不再支持novopt(即“关闭优化”),后续所有版本在编译、仿真时都会存在信号优化。
在10.7之前的版本中,我们破解时将VoptFlow这个参数从1改为了0,即关闭了Modelsim的信号优化功能,仿真时源代码中所有信号和参数都可以添加在波形图中显示,不管该信号和参数是否参与源代码的功能实现。
但在10.7后面的版本中,不管是源代码文件的编译还是工程的仿真都需要经过优化这个过程。如果像之前那般通过声明novopt来编译或仿真工程,modelsim软件会自动报错!!!
那么我的疑问来了?你M家不支持就不支持了呗,自己软件内部迭代搞定不就行了?在这儿给我报告一个错误是个什么鬼?难道我哪步操作还在继续声明novopt吗?检查一下。
①首先,确认之前版本破解Modelsim时都需要修改的Modelsim.ini文件里面的VoptFlow参数。
没问题。
②其次,确认软件的编译配置。右键选中一个源代码文件,在properties中找到verilog&sysetem verilog页面。
嗯,在这儿,把它勾选上,重新编译看看。
OK,成了!!!
但一个工程那么多源代码文件,难道后面每一个源代码文件都需要这样手动勾选上?这个版本的软件既然不再支持novopt,那么不应该在工程层面就自动把这个选项勾选上?或者说在工程层面,是不是有一个选项可以一步搞定?
咦?等等!!!工程层面!!!
“随便找之前的一个已经经过验证的Modelsim项目打开”!!!
“难道我哪步操作还在继续声明novopt吗”!!!
这个工程是我用10.6e版本生成的,10.6e的版本破解时是修改了VoptFlow参数的,即这个工程应该是基于VoptFlow=0建立的,那么自然就与新安装的2020.4不适配。那如果在2020.4上建立一个全新的工程,将代码移植到新工程里面来是不是可以直接编译成功?
果然,而且编译配置里面的”use vopt flow“也是勾选上的。
所以,只要保证modelsim.ini文件里面的VoptFlow=1,且软件工程是在2020.4版本的Modelsim上建立的,源代码文件的编译一般不会报错。
可能有的同仁会发现自己Modelsim安装目录下的modelsim.ini文件明明已经确认过没问题了,但为什么“use vopt flow”这个选项还是未默认勾选,编译时还是通过“-novopt”编译而不是“-vopt”。如果你的电脑之前有安装过10.7版本之前的Modelsim,建议查看一下之前版本的卸载是否存在文件残留,特别是modelsim.ini文件,可能存在调用之前版本的modelsim.ini文件的情况。
ps:那么有没有一种一步到位的方法可以让之前版本的工程在新版本的Modelsim上也能顺利编译呢?有的。
a.找到工程目录下的.mpf文件,用记事本打开;
b.找到voptflow参数,没错,将它修改为1;
c.保存.mpf文件,重新用新版本Modelsim打开工程;
d.全编译源代码文件。
如果有的同仁平时都是通过cmd跑Modelsim,而不是GUI,那么这个问题对他来说是很直观的,因为编译指令就不同。
源代码文件编译完成后,自然开始工程的仿真。
10.7版本之前的Modelsim,“start simulation”界面中的“optimization”选项默认是未勾选的,选中工程的testbench文件后,就可以直接开始工程仿真。
但在10.7之后的版本中,如果该选项未勾选,便会报告“-novopt”错误。
但如果你的工程仿真是在10.7之后的版本上建立的,该选项也是默认勾选的,无需特别关注。
那么我们把该选项勾选上,开始工程仿真。
发现“sim”界面没有工程模块,“objects”界面也没有信号、参数。
还是“optimization”的问题,退回到仿真之前。
“simulate”目录→“design optimization”选项→“visibility”页面,将“design object visibility”参数从默认的第一个选项“no design object visibility”切换到第二个选项“full debug mode”。
也可以通过“simulate”目录→“start simulation”选项→“design”页面→“optimization options”选项进入“visibility”页面。
我们切换到“full debug mode”,重新开始仿真。
OK,问题解决。
同样,上述所有操作过程都是通过GUI实现,网上很多大佬解释这个问题时会站在cmd的角度,因为cmd的角度更加直观,但却会让对cmd不够熟悉的人有一些懵,在这里简单说明一下。
“no design object visibility”选项下的指令:
“full debug mode”选项下的指令:
单独使用Modelsim进行verilog工程仿真,源代码里面调用有X家的原语,直接选中testbench开始仿真,报告找不到调用的原语。
这是因为当前的verilog工程库里面没有所调用的原语的声明。
在前文中,我们已经将X家的ip仿真库导入到Modelsim,这里我们需要把相关的原语文件加入到我们的verilog工程。
在Vivado的安装目录下,......\Xilinx\Vivado\2021.2\data\verilog\src,找到glbl.v文件,将它copy到当前的verilog仿真工程目录下,然后将verilog仿真工程目录下的glbl.v文件添加到仿真工程。当然,也可以直接将Vivado安装目录下的glbl.v文件添加到仿真工程。
打开verilog仿真工程,依次点击“simulate”目录→“design optimization”选项→“libraries”页面,在“search libraries”栏添加Vivado原语仿真库,地址为之前导出的Vivado IP仿真库存储目录下的"unisims_ver"。如果你的源代码是VHDL,那么则选择目录下的“unisim”。
这里的vivado_lib是我的Vivado IP仿真文件的存储地址。
ps:如果verilog仿真工程里面调用不是原语,而是其他的ip,则需要将ip对应的仿真库加入到工程中。同样,如果工程里调用了多个ip或原语,且这些ip和原语的仿真库不为同一个,在这里则需要将这些ip和原语对应的仿真库都添加到工程中。
依次点击“simulate”目录→“start simulation”选项。在不调用原语或ip的仿真中,我们只需要选择work目录下的testbench文件(激励文件),就可以直接开始工程仿真。但如果调用了原语或ip,则需要同时选择work目录下的testbench文件和步骤1中添加的glbl.v文件,才能顺利开始仿真。
选中的两个文件会呈现在“design unit”栏。
如果只选择了testbench文件。
那么仿真时则会报告glbl相关错误。
至此,Modelsim 2020.4编译、仿真时报告novopt错误的问题已解决。后续可能会继续更新一些Vivado和Modelsim联合仿真的事项。
当然,上述所有内容仅代表个人理解,如有错误恳请指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。