Modelsim/QuestaSim教程——基础篇

写完HDL代码,当然要仿真一下,这时可以使用quartus自带的qsim或者ISE自带的isim来仿真,但是,业界推荐使用Modelsim

Modelsim的版本比较多,一般是用功能最全的SE版,不建议用AE/ASE/XE等其它版本。

其中,AE/ASE是集成了Altera库的版本(仿真quartus的IP核,会轻松很多),XE是集成了Xilinx库的版本(仿真ISE的IP核,会轻松很多)。

QuestaSim其实就是Modelsim的扩展版,增加了System Verilog仿真的功能,除此之外,几乎没区别。这里以QuestaSim为例,介绍如何使用testbench来仿真HDL代码。

这里,不建议使用quartus或者ISE直接调用QuestaSim(问题多多),而是在QuestaSim下新建工程。

1、准备好HDL和testbench文件。

因为QuestaSim不支持原理图输入方式,所以,如果你的工程有原理图的话,一定要先转成HDL(在本博客的《彻底掌握Quartus》有介绍)。

然后,在Assignments->Settings。

设置好仿真工具,这里选Modelsim就可以了。


在Processing->Start->开始生成testbench模板。


细心的读者会看到上图写着Template,没错,就是模板,具体的激励还是得自己写的,别以为生成了tb文件就完事

如果成功生成模板的话,会有如下字样显示。


在工程目录下,simulation\modelsim文件夹里,可以找到这个tb文件。

再把HDL文件和tb文件都拷贝在一个文件夹里面,如下图所示。


2、仿真。

新建工程。


填好工程名和工程目录。


添加已存在的文件(就刚才准备好的HDL文件和tb文件)。


这里Reference from current location是引用文件路径,而Copy to project directory是拷贝到工程目录,这里选择引用就可以了,因为上一步已经拷贝好了。

修改一下自动生成的testbench模板,让它能产生正确的激励。


如果HDL文件里面,用到reg型变量,就必须全部对它们赋初值。当然,这个初值是仿真时用的,不影响综合出来的电路。


随便右击一个文件,点击编译全部。


成功的话,会出现如下字样。如有错误,就要改到正确为止。


接下来,依次输入三条指令,如下图所示。(这里的命令,都可以点鼠标完成,但是建议大家用命令)


结果出来了,是个非冗余开方,用的是改进的不恢复余数算法。其中,D是被开方数,Q是商,R是余数。

开方的原理跟除法差不多,都是先上商,然后再逼进实际值。

这个算法是向左逼进,如果要算63的开平方,得到的是7,误差有点大。其中,迭代的次数越多,计算的结果越精确(余数的位数越长)。

sqrt(36)=6,结果正确。

sqrt(129)=11,结果正确(取整之后的结果)。


3、DO文件。

DO文件就是把刚才仿真时用的命令,打包成一个文件。比如,把刚才vsim,add wave,run三条命令,合成一条命令,大大简化操作。

同时DO文件支持TCL脚本,可以实现自动化仿真,比点鼠标要高效很多。

首先,新建一个DO文件。


把刚才的命令写上,这里用了set命令,把文件名改成变量,方便后面使用。保存DO文件的时候,记得要写.do后缀。


在控制台下面,用do dosim.do可以调用刚才那几条命令。


仿真的结果,跟刚才是一样的。

DO文件(force,clock等命令),同样可以实现testbench的功能,这个,看大家喜欢哪个就用哪个了。

更具体的DO文件,可以参考本博客的《Modelsim/QuestaSim教程——DO文件篇》。

4、其它问题。

a、为什么不能仿真quartus或者ISE自带的IP核?

      某些IP是以.v或者.vhd文件的形式保存,如:quartus、diamond,用的时候,添加这些.v或者.vhd文件即可。

     某些自带的IP核,一般不以HDL文件的形式保存,而是封装成库文件/网表文件(目的就是要收费和保护知识产权,同时还可以在底层做优化)。

      用modelsim的SE版仿真这些IP的时候,需要添加库。而ASE/AE无需添加altera的库,XE就无需添加xilinx的库。但是ASE/AE/XE的仿真速度比SE要慢。

b、明明修改了tb/HDL文件,但是每次仿真的结果都一样?

      修改了tb/HDL,就要重新编译,重新运行仿真。

c、testbench是否等同于验证?

      不等同。testbench只是产生激励信号而已,一般不是用它来做验证。

      验证需要验证的语言,如:system verilog、system C、openVera,目前用得比较多的是system verilog。

d、为什么不建议用quartus自带的qsim画波形来仿真?

      用鼠标画波形当然简单,易学。但是复杂一点就不好操作了,而且画好的波形也不便于重复使用。

      此外,qsim的仿真速度要比modelsim慢很多很多。

      所以,还是建议用testbench+modelsim的方法来仿真,这是一劳永逸的方法。

e、为什么在wave窗口里看不到任何波形?

      首先要编译代码,代码没问题的话,再用add wave *添加波形,最后再仿真,run一段时间才有波形。

  • 33
    点赞
  • 248
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: ModelSimQuestasim都是Verilog和VHDL仿真工具,但是它们有一些区别: 1. Questasim是Mentor Graphics公司的产品,而ModelSim是Mentor Graphics公司的竞争对手Mentor Graphics公司的产品。 2. Questasim支持SystemVerilog,而ModelSim只支持Verilog和VHDL。 3. Questasim具有更好的性能和更高的仿真速度,因为它使用了更先进的仿真技术。 4. Questasim具有更好的调试功能,包括更好的波形查看器和调试器。 5. Questasim的价格比ModelSim更高,但它提供了更多的功能和更好的性能。 ### 回答2: ModelSimQuestasim都是常见的EDA工具,用于设计验证和仿真。其中,ModelSim基于Verilog和VHDL语言,而Questasim则支持更多种类的硬件描述语言,比如Verilog、VHDL、SystemVerilog和VHDL-AMS等。 首先,ModelSim是Mentor Graphics公司出品的仿真工具,只支持硬件描述语言的仿真,而Questasim则是MentorGraphics公司的HDLSim系列产品的升级版本,支持大多数硬件描述语言的仿真。简单来说,Questasim支持的语言更多。 其次,ModelSimQuestasim仿真速度和性能上也有所不同。ModelSimQuestasim略慢,但与其他竞争产品相比,速度较快,因此在对速度要求较高的的项目中,ModelSim更为适合。 此外,ModelSimQuestasim在友好程度、仿真调试、仿真精度等方面也有所不同。例如,Questasim支持更全面的调试功能,因为它支持多种编程语言和进行复杂的仿真和调试操作。而ModelSim虽然无法像Questasim那样支持多种编程语言,但在仿真和调试方面更加简单直观。 综上所述,ModelSimQuestasim都是优秀的仿真工具,应根据具体项目需求来选择。如果您需要支持多种型号的仿真,并且对调试功能和高速运行更为看重,建议使用Questasim。如果您的项目的仿真速度较为关键,且您已建立了与ModelSim工具的基本技能,建议使用ModelSim。 总之,ModelSimQuestasim各有其优势和劣势,根据需要为您的工程选择最适合您的EDA工具。 ### 回答3: ModelsimQuestasim是常用的数字电路仿真软件,都是业界领先的仿真引擎。这两个软件在操作和功能方面都有不同之处,下面将从以下几个方面对其进行比较: 1. UI(用户界面) Modelsim的UI简洁明了,使用方便。Questasim的UI更加现代化,具有更多的调试、故障定位和分析功能。 2. 工程设计 在工程设计方面,两者都支持Verilog、VHDL等设计语言。但是,Questasim支持更多的设计语言和IP库,也能处理更大、更复杂的项目。Questasim还支持OVM和UVM这样的先进的验证方法。 3. 性能 在性能方面,QuestasimModelsim更快。Questasim支持更高的时序分辨率和更大的仿真规模,因此它更适合于大型项目的仿真。而在小型项目中,Modelsim可能更适合一些。 4. 结果分析 对于仿真结果的分析,Questasim提供更丰富的功能,比如支持使用Tcl脚本实现结果分析,该脚本能自动导出仿真结果图像、数据等。而在Modelsim中,这些功能需要用户自己实现。 总的来说,QuestasimModelsim更适合处理大型、复杂的项目,具有更好的性能和更丰富的功能。而对于小型项目,Modelsim可能更加方便实用。最终选择哪个仿真软件要根据具体的设计项目和个人需求来决定。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值