资源描述
Modelsim 仿真方法总结
Modeling 仿真工具是Model公司开发的。它支持Verilog、VHDL以及他们的混合仿真。Modelsim各版本的使用方法大体一致,Modelsim仿真主要分为前仿真和后仿真。下面来具体介绍modelsim的仿真方法,涉及quartus-modelsim联合(使用)仿真的差异会特别提示。
前仿真与后仿真说明
1.1 前仿真
前仿真也称为功能仿真、行为仿真。旨在验证电路的功能是否符合设计要求,其特点是不考虑延迟(包括门延迟与线延迟),主要验证电路与理想情况是否一致。前仿真需要用到RTL级代码(由源代码经过综合后产生)与Testbench。
1.2)后仿真
后仿真也称为时序仿真或者布局布线仿真。是指在电路已经映射到特定的工艺环境以后,综合考虑门延迟与线延迟的影响,验证电路在一定的时序条件下是否存在时序违规以及能否满足设计构想的过程。需要用到的文件是——从布局布线结果中抽象出来的门级网表、testbench和后缀名为sdo或者sdf的标准时延文件。
注:扩展名为sdo和sdf的标准时延文件包含门延迟与实际布线延迟,能较好的反应芯片的实际工作情况。
二)modelsim仿真主要有以下几个步骤:
(1)建立库并映射库到物理目录;
(2)编译源代码(包括Testbench);
(3)执行仿真;
解释:
①库:modelsim中有两类仿真库。一种是工作库,默认名为work;另一种是资源库。Work库中存放当前工程下所有已经编译过的文件,所以编译前一定要建立一个work库。资源库存放work库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被存放在不同的资源库内。(例如要想对综合在cyclone芯片中的设计做后仿真,就需要有一个名为cyclone_ver的资源库。)
映射库用于将已经预编译好的文件所在目录映射为一个modelsim可识别的库。(此即是为仿真库建立一个逻辑映像的行为过程,后面会提到,在modelsim中新建库时,create a new library and a logical mapping to it或a map to an existing libraryd的提示)
上述三个步骤是大的框架,前仿真和后仿真均是按照这个框架进行的,建立modelsim工程对前后仿真来说都不是必须的。下面分别介绍每一步的操作。
2.1)建立库
在执行一个仿真前先建立一个单独的文件夹,将操作对象文件放在该文件夹下面。然后启动modelsim软件将modelsim当前路径改动到此文件下。修改方法是File>Change Directory。
注意:上面说的是独立运行modelsim仿真的情况。当采用quartus联合modelsim仿真时,在quartus里面设置第三方EDA仿真工具后,编译成功会自动在quartus工程目录下面创建一个simulation\modelsim的文件夹,此文件夹等同于独立运行moddelsim仿真时最先建立的文件夹。另quartus联合modelsim仿真,modelsim默认路径即为其自动创建文件夹simulation\modelsim下,不必人为更改。
启动modelsim后,建立仿真库。点击file>new>library,出现对话框,选择a new library and a logical mapping to it(已默认),在library name 中输入要创建库的名称。
总结步骤为:启动modelsim-->点击file-->chang directory(如需更改路径的话);再file-->new-->(project)-->library,进行相关设置。即可。
2.2)编写源代码及testbench;
在编写目标测试文件(testbench)之前,我们先写完目标文件(既可在quartus中编写,也可以在modelsim中编写),把它编译进工作库。(当然此步也可以等到和测试文件写完以后一起编译)。源代码的编写就不用介绍了,下面介绍编写testbench的两种方法。
A) 可以在modelsim内直接编写测试文件,而且modelsim提供各种testbench模板,我们只需更改其中小部分即可。在modelsim中执行File>New>Source>Library或者直接点新建文件,会出现一个verilog(或VHDL)文本编辑页面,编辑测试文件即可。另modelsim中提供各种测试文件模板,直接拿过来用会减少工作量。在verilog文本编辑页面空白处右键点击Show Language Templates,然后会出现一个加载工程,接着在刚才文本编辑窗口左边出现一个Language Templates窗口,双击Creat Testbench会出现一个创建向导,选择Specify Design Unit工作库下,work工作库中的目标文件(即为目标文件配套testbench),点Next。可以指定Testbench的名称以及要编译到的库等,此处我们使用默认设置直接点Finish。这时在Testbench内会出现对目标文件的各个端口的定义还有调用函数接下来,设计者可以自己往Testbench内添加内容了,我们只需更改其中的少量部分,即可完成testbench,然后保存为.v格式即可。按照前面的方法(点中文件后右键,选中compile即进行该文件的编译,或者点击菜单栏中的compile菜单,然后选中要编译的文件)把Testbench文件也编译到工作库中。
B) 在 Quartus内编写并编译 Testbench ,之后将Testbench 和目标文件放在同一个文件夹下,按照前面的方法把 Testbench 文件和目标文件都编译到工作库中之后。
另如果在工作库中没有该文件(在Testbench文件没有端口的情况下),则在Simulate——>Start Simulate卡片中去掉优化选项Enable optimization之后再重新编译,即可在工作库中找到该文件。
三)执行仿真(分别说明前仿真和后仿真)
3.1)前仿真
前仿真相对来说简单些,在执行到上面一步,把需要的文件编译到作库后,我们只需点simulation>start simulation或快捷按钮。会出现startsimulation对话框,点击Design标签选择work库(工作库)中的测试文件然后点ok既可以。在主界面中会多出来一个Objects窗口,里面显示 Testbench 里定义的所信号引脚,在Workspace里也会多出来一个Sim标签。右键点测试文件,选择Add->Add to Wave,然后将出现Wave窗口,现在就可以仿真了。
3.2)后仿真
后仿真与前仿真步骤大体相同,只不过中间需要添加仿真库(和所选器件资源库,例如在原理图文件中用到IP core,我们这里就要把相关的_mf.v库加进来。)网表和延时文件的步骤。
后仿真的前提是quartus已经对要仿真的目标文件进行编译,注意引脚的分派。并生成modelsim仿真所需要的.vo文件(网表文件)和.sdo文件(时延文件)。具体操作过程又有两种方法,一种是通过Quartus调用Modelsim,Quartus在编译之后自动把仿真需要的.vo文件以及需要的仿真库加到modelsim中,操作简单;一种是手动将需要的文件和库加入modelsim进行仿真,这种方法可以增加主观能动性,充分发挥modelsim的强大仿真功能。
A) 通过quartus调用modelsim;
使用这种方法时首先要对Quartus进行设置。 先运行Quartus,打开要仿真的工程,点菜单栏的Assignments,点EDA Tool settings,选中左边Category中的Simulation.,在右边的Tool name中选ModelSim(Verilog),选中下面的Run Gate Level Simulation automatically after complication。
Quartus中的工程准备好之后点击start complication按钮,此时modelsim会自动启动,而quartus处于等待状态(前提是系统环境变量中用户变量中PATH要设置好modelsim安装路径)。而且work库中出现了需要仿真的文件。Modelsim自动将quartus生成的.vo文件编译到work库,并建立相应的资源库。
编写测试台程序,最好放在生成的.vo文件所在的目录,以方便在需要手动仿真时使用。点Compile在出现的对话框中选中刚写好的测试文件,然后点Compile按钮,编译结束后点Done,这时在Work库中会出现测试台文件。
点击simulate->Start Simulation或快捷按钮 会出现start simulate对话框。点击Design标签选择Work库下的测试文件,然后点击Libraries标签在Search Library中点击Add按钮,选择仿真所需要的资源库(如果不知道需要选择哪个库,可以先直接点Compile看出现的错误提示中说需要的库名,然后再重复上述步骤)。
再点start simulate对话框的SDF标签。在出现的对话框的SDF File框内加入.sdo时延文件路径。在Apply To Region框内有一个“/”, 在“/”的前面输入测试台文件名,在它的后面输入测试台程序中调用被测试程序时给被测试程序起的名称。(一般为DUT)
B) 手动仿真;
手动仿真需要自己添加文件和编译库,但可以充分发挥modelsim强大的仿真功能。操作时也要先对quartus进行设置,设置与前面相同只是不要选中Run Gate Level Simulation automatically after complication。然后启动modelsim,将当前路径改到"工程文件夹\simulation\modelsim"下。向该文件夹中手动添加所需要的仿真文件,包括.vo文件、相关芯片资源库(后缀_atoms.v)以及原理图情况下的IP core相关资源(后缀-mf.v)。然后在modelsim中点编译,将这些文件编译到工作库下,点击simulate->Start Simulation或快捷按钮 会出现start simulate对话框。这里和A情况相比只有Libraries标签在Search Library时不一样,其余2项都一样。Libraries标签在Search Library下选中simulation\modelsim下work库。后面观察波形与前面方法一致。
两种方法的区别在于,modelsim仿真所需要的.vo文件以及.sdo文件,和资源库的建立方法不同,手动仿真需要自己添加这些文件到工作库下。建议使用手动添加的方式,有利于我们对软件使用的更好理解。
以上方法可供参考,modelsim软件自带的教程也是一个不错的学习路径,在help>SE PDF Documentation>Tutorial里面有详细的功能讲解,使用时可以看看。
展开阅读全文