【工具教程】ModelSim Altera软件非免费版本的破解方法
首先,在软件安装的时候,请选择安装非免费版本的软件,选择modelsim-altera edition.(注意,不是modelsim-altera starter edition),然后在安装完成后再执行下面的步骤破解:
1、下载”modelsim_全版本压缩包.rar”文件
2、解压,将其中的两个文件复制并粘贴到modelsim的安装路径下,例如我的电脑中,就是D:\altera\13.0\modelsim_ae\win32aloem
下,实际上根据经验,任何一个版本的破解工具都能破解任何一个版本的modelsim,所以不一定非要找版本对应的破解器。
3、在此路径下运行刚刚复制过来的文件中的patch_dll.bat,如果有必要,使用管理员方式运行。大约10秒后破解完成,会生成一个license.txt。将此文件保存在一个不容易误删除的文件夹下,如D:\altera
,,如果为了方便识别,甚至可以把文件名改的更有辨识度一点,例如改成modelsim_LICENSE.TXT
。
4、在计算机的环境变量中添加一个变量:MGLS_LICENSE_FILE,变量值则指向刚刚生成的license路径。如D:\altera\modelsim_LICENSE.TXT
重启Quartus软件,重新调用Modelsim仿真就可以了。有的电脑因为软件权限问题,需要以管理员方式运行Quartus软件才能正常使用。所以推荐安装软件时候就以管理员身份安装。
根据部分网友反馈,有些电脑使用管理员身份运行破解的工具会无法生成License,或者生成的License无效,因此,如果管理员方式破解不成功,请不使用管理员身份,即直接双击运行破解工具的方式再执行一次破解,
【Modelsim常见问题】Instantiation of ‘xxxx’ failed,The design unit was not found
问题原因
该问题经常出现在仿真时添加了其他模块辅助仿真,典型的如仿真模型,在小梅哥FPGA设计思想与验证方法视频教程里的按键消抖、串口接收里面都有这个过程,例如对于串口接收,我们在编写testbench仿真接收模块时,使用了串口发送模块来产生测试数据,而串口发送模块并不包含在Quartus 的RTL逻辑中,因此不会自动参与编译,无法得到仿真数据库,按键消抖时,设计了一个按键模型,该模型仅用作仿真,也不会被Quartus自动交付给Modelsim编译
解决方案
为此我们需要在设置NativeLink的时候手动添加该文件。如下图可以看到,我们设置时不仅添加了tb文件,还添加了key_model文件,这样Moselsim才会根据该设置去编译key_model文件。
【Modelsim常见问题】You selectedModelSim-Altera as Simulation Software in EDA Tool Settings,however NativeLinkfound ModelSim in the pata – correct path or change EDA Tool Settings and tryagain.
问题原因
该工程设置的仿真工具名称与在QuartusII软件中指定的该软件路径不匹配。例如,本来设置的仿真工具是modelsim–altera,结果在Quartus II软件的modelsim-altera路径下设定的是Tools下设置的是modelsim-se的路径,导致软件版本不匹配而报错。
设置的仿真工具为modelsim-altera
Modelsim-altera路径却指向了modelsim-se版本。
解决方法
1、 如果你电脑装的是modelsim-se版本,请按照如下图所示的设置进行工程和工具路径设置:
2、 如果你的电脑装的是modelsim-altera版本,请按照如下图所示的设置进行工程和工具路径设置:
【Modelsim常见问题】Error: (vsim-3170) Could not find
问题原因
testbench文件名与其中module 后紧跟的名称不匹配,如下图文件名为HEX4_tb,而实际文件中的module名为HEX_tb:
而在设置testbench链接设置时,却将Testbench name和Top level module in test bench的名字都设置为了HEX4_tb,导致modelsim仿真时无法找到时找toplevel (HEX4_tb),因为testbench中命名的是HEX_tb,而通过脚本告诉modelsim的时候却是告诉的HEX4_tb,当然找不到。
解决方法
方法1:将Testbench中的module名改为HEX4_tb,仿真即可通过,如下图所示:
方法2:在quartus 的testbench设置部分将Toplevel module in test bench部分设置为testbench中命名的名字,即不更改testbench中的module名字,让其依旧保持为HEX_tb,而在设置部分如下设置:
然后运行仿真,也可以正常进行仿真。如下图:
【Modelsim常见问题】Error deleting “msim_transcript”:permissiondenied. Check the NativeLink log file
问题现象
Error deleting “msim_transcript”:permissiondenied.
Check the NativeLink log file
问题原因
同一工程Modelsim窗口多开。
解决方法
关闭正在运行的modelsim软件,再启动仿真。
【Modelsim常见问题】Unable to checkout a license
问题原因
使用了非免费版本的Modelsim软件,却没有获得软件使用许可证
解决方法
方法1:使用免费版本的modelsim软件,如modelsimaltera stater edition。
方法2:购买软件许可证。
方法3: 破解modelsim软件
获得许可后最好重启Quartus II软件
【Modelsim常见问题】Analysis and Synthesis should be completed
Analysis and Synthesis should be completed successfully beforestarting RTL NativeLink Simulation
问题原因
仿真前需要在Quartus II中执行一次分析和综合。
解决方法
仿真前需要在Quartus II中执行一次分析和综合。
【Modelsim常见问题】Modelsim报语法错误
很多人最开始学习FPGA使用Modelsim进行仿真时候都会遇到Quartus软件编译没有错误的工程,Modelsim编译提示语法错误的情况。
典型现象:
问题解析
Modelsim和Quartus对语法的分析严谨程度不一样,Modelsim更严谨,或者更像C语言。所有信号必须先定义后使用。所以很多随心所欲写的代码,在Quartus中编译没问题,但是在modelsim中编译可能通不过。举个例子:
两者的区别仅仅在于,上面的代码是先定义cnt,然后对其进行赋值操作用到了该信号(除赋值操作外,其他任何操作也都算使用该信号),这样写在Quartus软件和Modelsim软件中都是没有问题的,但是下面,先使用了cnt这个信号,后面才来定义,这样的写法,在Quartus软件中没问题,但是Modelsim软件中编译就会报错,提示找不到cnt这个信号。
解决方法
大家在写代码时候一定要规范,先定义信号再使用。参考举例代码的上面代码。
【Modelsim常见问题】仿真不出波形,波形窗口无内容
问题描述
这是很多新手在开始进行Modelsim仿真学习时最常遇到的问题,往往点击运行仿真后,Modelsim软件能够打开,但是无法正确出现波形内容,或者波形窗口出现,但是没有任何信号和波形。
问题出现原因
你的代码编写有误,或者你的仿真脚本(nativelink)设置有误,或者其他原因
解决方法
遇到这种问题,解决思路很简单,查看Modelsim仿真软件的Transcript窗口中的报告内容。这个窗口里面的内容有很多,是可以通过滑动条或者鼠标滚轮上下翻动的,找到报error的信息,双击,如果是代码错误,就可以自动定位到错误位置。一定要看这个信息窗口,还要翻滚着看,把里面的error、waring都分析一下。
【Modelsim常见问题】Can’t launch the ModelSim-Altera software
报错信息:
问题原因
Quartus II软件中与Modelsim关联设置不对,即modelsim路径设置有误。
解决方法
补充解决方案:
如果上述方法设置后任旧不能成功,在路径的最后面加上一个右斜线 \
【Modelsim常见问题】TestBench中端口reg和wire定义解惑
TestBench中端口reg和wire定义解惑
很多学员在学习TestBench的编写的时候,容易死记概念,最典型的就是,被测试模块的输入端口在测试文件中要定义成reg,输出端口要定义为wire。
例如,最典型的这种写法,大家都能看得懂。
那我现在换一种写法,我定义一个中间信号,名叫clkin,然后按照下述方法写:
这个时候,被测试模块的输入端口就链接到了clkin这个被定义为wire型的信号上,是不是就与我们所说的基本规律相违背了呢?
这个实际就是看你有没有真正理解激励信号的意义,使用reg定义激励信号,然后我们可以通过对reg信号在不同的时候赋予不同的值来产生激励。如果使用reg信号定义的信号名称和你的被测试模块的端口在测试文件中的命名一样,就可以默认连接上,第一种写法就是这种形式。在第二种写法中,增加了一个中间信号,这个信号是个wire型的,一端连接到了reg型的clk这个信号上,另一端连接到了被测试模块的clk50输入端口。实质上等同于直接将reg型的clk信号直接连接到被测试模块的clk50上,所以并没有冲突。
为什么我在最开始讲测试文件的编写时候要重点使用示波器和信号发生器来类比,就是希望大家真正理解这些信号的实质。
【Modelsim常见问题】Port ‘xxxx’ not found in the connected module
这个报错很明显,是说你在例化的时候,被例化的模块中有个信号并不存在于真正的模块设计中,例如,用户编写一个二选一多路器模块,模块端口如下表左侧所示,但是在testbench或上层模块例化使用该模块时,例化内容如下表右侧所示:
可以看到,例化时候,用了一个叫sel的端口,但是实际被例化的模块中并没有sel这个端口,因此就会报上述错误。根据此思路对应检查设计模块的代码即可。
【Modelsim常见问题】不报错但一直显示Loading
Modelsim仿真时,不报错,也不出波形,一直显示Loading
问题原因
该问题的原因为Windows开启了防火墙,且对Modelsim实施了屏蔽。
解决方法
关闭Windows防火墙。
【Modelsim常见问题】Error loading design
问题原因
提示信息中提示没有Verilog的仿真许可证,表明是没有获得软件使用许可。
即使用了非免费版本的Modelsim软件,却没有获得软件使用许可证
另外,如果没有提示仿真许可问题,可能是你的代码问题,最大的可能是你的testbench文件的文件名和文件中的模块名不一致,例如testbench文件名叫led_tb.v,而文件中命名模块时写的却是lde_tb。
解决方法
方法1:使用免费版本的modelsim软件,如modelsim altera stater edition。
方法2:购买软件许可证。
方法3: 破解modelsim软件,获得许可后最好重启Quartus II软件