利用ModelSim进行的功能,综合后,时序仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用ModelSim 进行的功能仿真,综合后仿真,时序仿真
功能仿真,就是在理想状态下(不考虑延迟),验证电路的功能是否符合设计的要求。

功能仿真需要:
I. TestBe nch或者其他形式的输入激励
2•设计代码(HDL源程序)
3•调用器件的模块定义(供应商提供,如FIFO, RAM等等)
值得一提的是,可以在ModelSim直接编写TestBench,使用
View->Source->Show language templates.
综合后仿真(门级仿真),实际上就是将对综合后的门级网表进行仿真, 只考虑门延迟,而没有加入时延文件。

在功能仿真之后检验综合的结果是否满足功能要求。

综合后仿真需要:
1. 综合后的门级网表,注意这里变成了*.vo 文件,而不是原来功能仿真中所需要的HDL源代码.
2. 测试激励
3. 元件库Altera 的仿真库位置为*:
\altera\quartus\eda\sim_lib
所谓时序仿真,就是在综合后仿真的基础上加上时延文件(sdf 文件),综合考虑了路径延迟和门延迟的情况,验证电路是否存在时序违规。

时序仿真需要:
1. 综合后的门级网表,注意这里变成了*.vo 文件,而不是原来功能仿真中所需要的HDL源代码.
2. 测试激励
3. 元件库Altera 的仿真库位置为*:
\altera\quartus\eda\sim_lib
4 .较门级仿真还需要具有包含时延信息的反标记文件*.sdf
可以有两种方法实现门级仿真,或时序仿真。

1. 工程编译成功后,自动启用ModelSim 来运行门级仿真,前提是要在
Quartus II的Options中设置好ModelSim的路径
(和有些参考PDF上说的环境变量好像无关,至少我用的Quartus II
9.0 Web Edtion 是这样的)具体方法是,进入
Quartus
9.0->Tools->Options,在Categroy里选中General 下的EDA Tool Options 在ModelSim 右边的Location of
Executable中双击来改变路径,就并且在工程中设置了自动启动ModelSim,就可以自动启用了。

1. 在EDA Tool Settings首先将仿真工具设置为ModelSim,然后点击让它自动启动。

2. NativeLinksettings中选择testbench,完成相关的设置,例如test bench n ame,top level module in test ben ch,Desig n in sta nee n ame in test bench 仿真时间,然后编译时会自动启动ModelSim 然后完成所有操作,大概这就是Altera 所指的和很多EDA工具的无缝连接。

另外一种方法,则是现在quartus ii 中生成门级网表和延时文件,然后调用ModelSim 进行仿真
1•在quartus ii设置仿真工具为ModelSim,这样设置完成后,在当前目录下会生成一个simulation 的目录,该目录下有
一个simulation 文件夹,里面包含了网标文件和时延反标文件,vhdl 语言对应的是网表文件为*vho,时延文件为
*.sdo。

Verilog 则为*.vo,*.sdo。

2. 建立库并映射到物理目录,编译TestBench,执行仿真。

对库的理解:
我想所谓库,实际上就是一个代替文件夹的符号,区别就是,库中的文件的表述皆是经过了编译的实体或者
m od u l e ,一切操作都在库中进行。

ModelSim有两种库,一种是资源库,一种是工作库(默认名为work,保存当前工程下已通过编译的所有文
件,资源库放置work 库已编译文件所要调用的资源)。

所以编译前,一定要有work 库,而且只能有一个。

3. 加入仿真库,可以看出,门级仿真和时序仿真都需要仿真库,在
ModelSim 中可以通过两种方法将Altera 的
仿真库调入进来,一种是新建一个库,用来存放仿真是需要调用的文件,另一种是将Altera 的器件直接编译
到work 这个library 中去。

3.1 新建一个库,用来存放调用的仿真库文件
在Modelsim中建立一个新的project,将*vo,*v(TestBench),所用器件的库,一起加入到project 当中
去。

新建一个库,名字实际是都可以的,当然将名字命名为所用的altera
库的名字比较合适。

最重要的是,
这个库中去,否则的话,编译的文件就都会出现在你的工作库当中,可见新建的第二库就是作为资源库来使
用的。

至此,我们已经完成了所有的准备工作,点击你的工作库,然后选择Simulate 中的start
simulation,在library标签中,将自己编译的资源库加入。

在design标签中选择testbench 作为设计单
元,要说明的是,如果你没有使用work 库的默认库名,而是自己命名了,那么此时你可以使用work 库,也可
以使用自己命名的库,二者是等价的。

到这里,就可以完成了门级仿真,如果是时序仿真,那么还需要将反
标记*.sdo文件加入,具体方法是单击start simulation后,在SDF标签中可以加入时延反标记文件。

但要
注意须在Apply to Region中将里面的"/"改写为"testbench名(这个很重要,是testbench文件名,而不是顶层module名)/testbench中实例化顶层的名称”,如果是
用模板创建的testbench,这个顶层名称叫做DUV(Design Under
Test/Verification ,待测设计)。

当然了,不是一帆风顺的,就在加入了SDF文件之后,准备开始的时候,
出现了ERROR,vsim-sdf-
3894:Compiled SDF file was n ot fou nd不过幸好很快找到了解决办法,那就是将你的testbench 和
*.sdo 文件放在同一个目录下,这种错误就可以解决了,默认的会在当前工程下的simulation/modelsim
中。

3.2 将库文件直接编译到work 的library 中,这种会比
3.1 简单一些,不用建立库,直接编译到工作库就可以
了。

如何对Altera 的megacore 进行仿真呢?基本和上面一致,一般要用到仿真库中的220model.v 和
altera_mf.v 。

我只找了一个很简单的计数器的例子来试,但发现了一个很有意思的现象,也是原来我没有考虑到的,如果你想做功能仿真,那么由于你的设置中包含了Altera公司的一
些原语,比如lpm_XX等等,那么就需要将220model或者altera_mf.v 编译进你的工程,但是再做时序仿真或门级仿真的时候却不需要这些,因为你可以自己去看一下生成的门级网表(*.vo),里面没有任何的原语,但是需要库文件和反标记文件(如果做时序仿真的话需要反标记文件)。

补充:
我正在为怎么每次都要重新选库文件困扰的时候,实际上发现那是因为我右键了文件,选择了simulate,如果还是点work库,然后start simulation就可以不用再次选择库了。

相关文档
最新文档