modelsim后仿真库
ModelSim后仿真详细流程介绍PPT课件
延时信息
2021/3/9
8
目录
仿真的基本概念 ➢后仿真前的基本准备工作
后仿真的基本操作步骤
2021/3/9
9
后仿真前的基本准备工作
▪ ModelSim库
库文件,是指已经编译通过的设计文件的总体。
ModelSim中有两种库类型:
工作库
资源库
1.库的内容会随着使用者 更新设计文件和重新编译 而变化; ▪2D.e存sc放ript当ion前of设th计e b文usi件nes编s 译 后产生的设计单元; 3.编译前必须先创建好工 作库; 4.每次编译只允许有一个 工作库; 5.默认的工作库名是work
2021/3/9
14
后仿真前的基本准备工作
▪ Altera仿真库建立步骤
2.启动ModelSim SE。建立两个新库,从主菜单选择File->New-> Library,选中“a new library and a logical mapping to it”,在“Library Name”填写“altera_base_v”,Library Physical Name填写文件夹绝 对路径,如图所示。
2021/3/9
13
后仿真前的基本准备工作
▪ Altera仿真库建立步骤
1.在ModelSim安装目录中建立两个文件夹,一个是用于存放公用的 库给它取名altera_base_v;另一个是用于存放您要用到的特定的器件 库,取名为altera_device。
比如,F:\Modelsim 6.5\altera\altera_base_v F:\Modelsim6.5\altera\altera_device
注意:要把 Enable optimization 前 面的勾去掉,即不进行自动优化。
Modelsim ae 仿真方法
Modelsim ae 仿真/?_c11_BlogPart_BlogPart=blogview&_c =BlogPart&partqs=cat%3DModelsim仿真验证是CPLD/FPGA设计中的重要一环,QuartusII软件本身带有仿真功能,但是无法使用testbench,而且功能相对简单,对于复杂的设计,画波形图显然不是明智的选择,一般选择Mentor Graphics Corporation的modelsim作为仿真工具。
仿真一般分为功能仿真,前仿真与后仿真。
根据设计需要,编写完代码(Verilog hdl,Vhdl,system Verilog )后,首先进行功能仿真,验证所写代码是否能完成设计功能;前仿真又称为综合后仿真,即在QuartusII完成综合后,验证设计的功能;后仿真又称为时序仿真活布局布线后仿真,是加入延时后的仿真。
对于编译时间较短的小规模设计,一般只进行功能仿真与后仿真。
modelsim有很多版本,ae,pe,le,xe,se等,其中se功能最为强大,见下图:其中ae版本是altera的定制版本,已经包含了altera元器件的编译库,对于altera公司的器件仿真,使用比较简单。
下面以一个设计实例介绍modelsim的仿真过程,工具版本:QuartusII8.1,Modelsim Altera6.1g p1,设计语言使用verilog。
NativeLink 技术在 Quartus II 软件和其它 EDA 工具之间无缝地传送信息,并允许在 Quartus II 软件中自动运行 EDA 工具,所以有两种方式进行QuartusII 与 modelsim的联合设计仿真:QuartusII 软件直接调用modelsim仿真,这种方式步骤简单,但是不方便调试;QuartusII产生modelsim仿真所需要的.vo,.sdo文件,运用 modelsim仿真,这种方式比较麻烦,但是便于调试过程中程序,testbench的更改,一般推荐采用这种方式。
Modelsim仿真库的编译
在使用ModelSim软件对Xilinx ISE进行后仿真时,需要先编译Xilinx的仿真库,否则就会产生无法加载simprim,unisim等库文件的错误。
在许多论坛上都提到了使用compxlib命令来编译Xilinx的仿真库,如使用compxlib -s mti_se –arch all -l all -dir D:\Modeltech_6.0\xilinx_lib -w.但是对于如此复杂,而又不经常使用的命令有谁会愿意记忆呢。
还好我们可以使用一个具有图形化界面的编译向导工具来方便的产生仿真库。
今天无意中在Xilinx ise软件的安装目录下发现了一个名为compxlibgui.exe的程序,根据其名字可以推测这是一个用于编译仿真库的图形化程序。
打开一看,确实很好用,提供向导式的编译过程,只需一路next就可以搞定。
具体使用步骤如下:使用的编译工具:compxlibgui.exe工具位置:Xilinx ISE安装路径\bin\nt目录下步骤一:去除modelsim.ini文件的只读属性modelsim.ini文件是ModelSim软件的配置文件。
Xilinx的仿真库编译软件运行过程中会修改此文件。
在ModelSim软件的安装目录下找到modelsim.ini文件,右击->属性,去除只读属性。
步骤二:运行编译工具,compxlibgui.exe在Xilinx ISE安装路径\bin\nt目录下,双击_compxlibgui.exe程序,界面如下图:首先需要选择仿真器,在此选择ModelSim,选择之后,程序会自动选择仿真软件的安装路径,如果自动选择的有问题,也可以自己指定。
如何用ModelSim se完全编译Xilinx库文件2010-12-28 15:07:29| 分类:默认分类|字号订阅什么是之前的老办法呢?Modlesim 仿真库的建立:将Modelsim根目录下的modelsim.ini的属性由只读改为可写。
modelsim使用 + 前仿真 + 后仿真 + verilog
Modelsim 6.0 使用教程1. Modelsim简介Modelsim仿真工具是Model公司开发的。
它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。
对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。
但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。
2.安装同许多其他软件一样,Modelsim SE同样需要合法的License,通常我们用Kengen产生license.dat。
⑴.解压安装工具包开始安装,安装时选择Full product安装。
当出现InstallHardware Security Key Driver时选择否。
当出现Add Modelsim To Path选择是。
出现Modelsim License Wizard时选择Close。
⑵.在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后复制到该文件夹下。
⑶.修改系统的环境变量。
右键点击桌面我的电脑图标,属性->高级->环境变量->(系统变量)新建。
按下图所示内容填写,变量值内如果已经有别的路径了,请用“;”将其与要填的路径分开。
LM_LICENSE_FILE = c:\flexlm\license.dat⑷.安装完毕,可以运行。
modelsim后仿真详解
modelsim后仿真想很多人跟我一样,被ModelSim的后仿真搞的头晕脑胀。
为了这个问题,我在网上找了很多的资料,但发现这些资料往往说的不明白。
一些步骤被作者有意无意地省略掉,这常常给读者造成不必要的麻烦,所以我决定写下这一篇文章,把这3天我努力的结果拿出来,与大家分享。
首先,我把我用到的软件说明一下。
如果你发现根据我的操作,你还是解决不了ModelSim后仿真的问题,那就可能是软件版本的问题。
1, ModelSim Se 6.1b2, Synplify Pro 7.5.13, ISE 5.2i (这个是老了点)4, WindowsXP(这个应该没有多大的关系)还有就是我使用的是verilog,我想VHDL的方法与verilog是差不多的,最多也就是在建库方面有点差别而已。
下面的这些方法,是我这3天搞出来的。
当然也参考了一些文章。
如果谁有更方便的方法,欢迎指出来。
我的邮箱是vf1983cs@。
有空大家多交流。
一、为modelsim生成3个库。
首先,介绍一下这三个库。
Simprim_ver:用于布局布线后的仿真。
Unisim_ver :如果要做综合后的仿真,还要编译这个库。
Xilinxcorelib_ver:如果设计中调用了CoreGen产生的核,则还需要编译这个库。
我们要为modelsim生成的是标准库。
所谓的标准库就是modelsim运行后,会自动加载的库。
不过这方面我还不是很肯定。
因为我在后仿真时,还是要为仿真指定库的路径,不然modelsim找不到。
第一步:在modelsim环境下,新建工程,工程的路径与你想把库存储的路径一致。
第二步:新建库,库名起作simprim_ver。
我们首先就是要建的就是这个库。
第三步:在modelsim的命令栏上,打下如下命令:vlog -work simprim_ver d:/Xilinx/verilog/src/simprims/*.v其中的d:/Xilinx是我的Xilinx的安装路径,你把这个改成你的就行了。
用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法
用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法作者:毕成炜2012年1月30日星期一我使用的是ISE_12.2,集成MODELSIM_6.5e。
后仿真的方法分为直接和间接两种。
直接是指从ISE上起动MODELSIM。
间接是单独起动MODELSIM,然后使用ISE生成的用于后仿的文件夹netgen。
下面分别叙述。
(一) 直接方法:1.建立一个文件夹给ISE工程用,比如D:\timing_sim,然后将源文件和测试文件放到它的下面:2.在ISE中如有旧的Project正在使用,则关闭它:这样画面清静。
然后新建一个New Project,点Next,选好器件和仿真器:点Next,点Finish.为了能够在ISE中直接唤起MODELSIM,还需要一些设置,主要是两处:双击器件:保证下图红圈处选中你要的仿真器:点OK后,在主菜单中点:保证在红圈处指定好MODELSIM执行文件所在的位置编译仿真库可以在这里双击Compile HDL Simulation Libraries,也可以在C:\Xilinx\12.2\ISE_DS\ISE\bin\nt下面找到,双击它,注意红圈处所标的是你的ISE版本所支持的MODELSIM版本,不能低于它。
否则仿真过程可能出问题。
点Next,点Next,选定你针对什么器件编译仿真库,点Next,点Next,注意,ISE可能最初不带modelsim.ini,它在此步会自动生成这个文件,并且是可写的,即它的“只读”属性是已经自动去掉的。
生成仿真库的映射关系自动写入了ISE的这个modelsim.ini,位于C:\Xilinx\12.2\ISE_DS\ISE\bin\nt,但是,它并不会自动去更新MODELSIM软件的modelsim.ini,而且MODELSIM使用的是它自己的modelsim.ini,位于C:\modeltech_6.5e。
所以需要把ISE的modelsim.ini中的映射关系再COPY到MODELSIM自己的modelsim.ini中。
利用do文件启动modelsim仿真vivado器件库
河北科技大学卫星导航技术研究中心利用do文件启动modelsim仿真vivado器件库版本:V1.0作者:袁宏拓日期:2020-2-18利用modelsim仿真第三方器件库,首先是要生成第三方库(带IP核),然后把第三方库加到modelsim的library中,仿真和编译时就能调用了。
所以这里分成几个步骤说一下:1.利用vivado编译并生成一个可调用库进入vivado软件Tools-Compile Simulation Library选项卡出现如下界面,选择modelsim,设置好仿真库的路径和modelsim路径,其它选择All,IP核部分打勾,这样编译出来的就是最基本最全的vivado库了。
2.将vivado库添加到modelsim中这个方法我觉得应该不止一种,但是我只用一种方法做成功了,所以我说的是我做成功的方法。
先在vivado中关联modelsim,然后vivado会自动把刚才的库添加到modelsim中,并且完成库的映射(否则要一个个映射好半天)。
出现下图界面就代表第三方库已经存在modelsim中了。
注意右侧路径显示/modelsism/vivadolib,证明这里的库就是vivado编译出来的库。
值得注意的一点是,如下图所示:以blk_mem_gen_v8_4_3库为例,库的所在路径,是vivado编译出来的地址,vivadolib,但是内部文件的路径却是Xilinx下的路径(这个路径是vivado安装时就有的),也就是说,这个库的皮儿在vivadolib下,瓤还在Xilinx下。
这里只是相当于建立了一个独立的包含modelsim.ini启动文件的库,然后库的内容是用物理地址映射的方式映射到Xilinx下。
总结1 :总的来说这不是最完美的方法,因为没有脱离开Xilinx的物理路径,但是这个比较省事,本来一堆库的映射,用vivado点几下命令就帮你做了。
总结2 :就目前我能想到的方法,用vivado建vivadolib库,然后将Xilinx下的库文件都拷贝走,单独包装在一起,然后手动在modelsim映射库(或者do文件操作)。
Modelsim 中建立仿真库的简单方法(我一直用方法3)
方法一(参照方法二,设置真的很复杂....):奶奶的,搞了一晚上的modelsim仿真库,找了很多方法,找到一种一劳永逸的,介绍如下:看下图,我新建一个工程时,注意到最下面的Copy Setting From,里面的内容是D:/Program Files/modeltech_6.5b/examples/modelsim.ini,我发现这个是modelsim系统的一个默认配置,所以一劳永逸的方法就是更改这个文件:modelsim.ini。
1.参照我的上述路径取消Modelsim.ini配置文件的只读属性。
2.找一个永久保存的路径,比如我的是在在D:\2_Project\FPGA\sim_lib。
打开modelsim,然后file->change Direcory,指向D:\2_Project\FPGA\sim_lib。
3.执行File->New->Library,在弹出的对话框中,Create项选择"a new library and a logical mapping to it";Library Name项填写新建库的名称,我的是altera_mf_sim;Library Physical Name中也自动修改为altera_mf_sim。
点击OK后,在D:\2_Project\FPGA\sim_lib下将会看到新建的altera_mf_sim文件夹。
4.执行Compile->Compile,弹出如下对话框。
在Library下拉列表中选择库,表示编译工作是对该库进行的,我选择新建的altera_mf_sim库;然后在下面窗口中选择仿真模型文件,这里以altera_mf.v为例,它是quartus自带的仿真模型文件,在quartus安装路径\eda\sim_lib 文件夹中可以找到。
选择库和文件后(可以是多个文件),点击"Compile"按钮,等待编译完成,然后点击"Done"按钮退出。
用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法
用ISE与Modelsim进行FPGA后仿真(时序仿真)的两种方法作者:毕成炜2012年1月30日星期一我使用的是ISE_12.2,集成MODELSIM_6.5e。
后仿真的方法分为直接和间接两种。
直接是指从ISE上起动MODELSIM。
间接是单独起动MODELSIM,然后使用ISE生成的用于后仿的文件夹netgen。
下面分别叙述。
(一) 直接方法:1.建立一个文件夹给ISE工程用,比如D:\timing_sim,然后将源文件和测试文件放到它的下面:2.在ISE中如有旧的Project正在使用,则关闭它:这样画面清静。
然后新建一个New Project,点Next,选好器件和仿真器:点Next,点Finish.为了能够在ISE中直接唤起MODELSIM,还需要一些设置,主要是两处:双击器件:保证下图红圈处选中你要的仿真器:点OK后,在主菜单中点:保证在红圈处指定好MODELSIM执行文件所在的位置编译仿真库可以在这里双击Compile HDL Simulation Libraries,也可以在C:\Xilinx\12.2\ISE_DS\ISE\bin\nt下面找到,双击它,注意红圈处所标的是你的ISE版本所支持的MODELSIM版本,不能低于它。
否则仿真过程可能出问题。
点Next,点Next,选定你针对什么器件编译仿真库,点Next,点Next,注意,ISE可能最初不带modelsim.ini,它在此步会自动生成这个文件,并且是可写的,即它的“只读”属性是已经自动去掉的。
生成仿真库的映射关系自动写入了ISE的这个modelsim.ini,位于C:\Xilinx\12.2\ISE_DS\ISE\bin\nt,但是,它并不会自动去更新MODELSIM软件的modelsim.ini,而且MODELSIM使用的是它自己的modelsim.ini,位于C:\modeltech_6.5e。
所以需要把ISE的modelsim.ini中的映射关系再COPY到MODELSIM自己的modelsim.ini中。
modelsim+ISE后仿真流程
一、为modelsim 添加ISE的3 个仿真库。
首先,介绍一下这三个库。
Simprim_ver:用于布局布线后的仿真。
Unisim_ver :如果要做综合后的仿真,还要编译这个库。
Xilinxcorelib_ver:如果设计中调用了CoreGen产生的核,则还需要编译这个库。
我们要为modelsim生成的是标准库。
所谓的标准库就是modelsim运行后,会自动加载的库。
不过这方面我还不是很肯定。
因为我在后仿真时,还是要为仿真指定库的路径,不然modelsim找不到。
第一步:在modelsim环境下,新建工程,工程的路径与你想把库存储的路径一致。
第二步:新建库,库名起作simprim_ver。
我们首先就是要建的就是这个库。
第三步:在modelsim的命令栏上,打下如下命令:vlog -work simprim_ver C:/Xilinx/12.4/ISE_DS/ISE/verilog/src/simprims/*.v (注意斜线的方向是与windows默认方向相反的)其中的c:/Xilinx是我的Xilinx的安装路径,你把这个改成你的就行了。
以下凡是要根据自己系统环境改变的内容,我都会用绿色标出,并加一个下划线。
编译完之后,你会发现你的工程文件夹下出现了一个simprim文件夹,里面又有很多个文件夹。
这些就是我们要的库了。
第四步:按照上面的方法,编译另外两个库。
所需要键入的命令分别如下:vlog –work unisim_ver C:/Xilinx/12.4/ISE_DS/ISE/verilog/src /unisims/*.vvlog -work xilinxcorelib_ver C:/Xilinx/12.4/ISE_DS/ISE/verilog/src /XilinxCoreLib/*.v第五步:把库建好后,接下来的事情就是使它成为modelsim的标准库。
这只要修改modelsim安装目录下的modelsim.ini文件就可以了。
ModelSim的前后仿真(Quartus)
利用Quartus5.0实现功能仿真1)打开一个工程文件。
2)打开Settings设置栏,选择Fitting Settings下的Simulator栏。
在右边出现的设置栏中将“Simulation Mode”的下拉菜单选择“Functional”,即可以实现软件下的功能仿真。
(下拉菜单中有“Functional”、“Timing”和“Timing using Fast Timing Model”,分别代表可以在Quartus软件下实现功能仿真,时序仿真和快速时序仿真。
最后一项一般不选,如果在Settings->Timing Requirement->More Settings下“Report Combined Fast/Slow Timing”选项设为“On”,就可以选择最后一项。
编译的报告里也会分别列出最快和最慢的时序报告。
)3)选择“Processing”菜单下的“Generate Functional Simulation Netlist”命令,否则将无法启动仿真。
4)新建一个波形仿真文件,文件后缀名为.vwf。
选择File菜单下的New->Other Files->VectorWaveform File。
如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。
波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。
将新建的波形仿真文件保存下来。
5)将需要仿真的信号加入波形编辑窗口。
在列表区任一位置双击或者点击右键选择“InsertNode or Bus…”,弹出的对话框点击“Node Finder”按钮。
在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。
如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。
使用ModelSim的仿真步骤
使用ModelSim的仿真步骤:
1.建立工程:选file/new/project菜单,打开Create Project窗口.
填Project Name栏,为你的工程启一个名子.
按Browse按纽,为你的工程指定一个盘上目录,作为以后工程文件的存放位置.
指定缺省库名为Work库.
2.在出现的ADD ITEMS TO THE PROJECT窗口中选Create New File为当前工程加入一个新建文件,或选Add existing File为当前工程加入一个已存在的文件.
3.选Compile/compile All对当前设计工程进行编译.
4.选Simulate/Star Simulation菜单项,打开仿真器.
5.在仿真器中选Design页,点击WORK页前的加号,打开WORK 库,选一个仿真文件,选好后,点击右下脚的OK按纽.
6.在出现的Object窗口中,会有芯片的引脚列表.选一个引脚,压鼠标右键,弹出一菜单,在其中选Add to wave/Selected Signal菜单项,可将引脚对象加入到Wave窗口中.重复上述过程,将全部引脚加入到Wave波形窗口中.
7.在WAVE中,选一个引脚,用WAVE窗口的工具画加在引脚上的波形.
8.画完输入引脚的波形后,输入RUN –ALL,回车,执行仿真.
注:上述仿真过程,可用命令:
vsim work.filename
启动仿真窗口.
view wave
打开波形窗口
add wave –dec *
加入所有波形信号,以十进制方式force
为每个引脚加入驱动信号
run –all
执行仿真任务。
荐)ModelSim SE仿真Altera库的一些问题 常见仿真错误 问题 合集
荐)ModelSim SE仿真Altera库的一些问题常见仿真错误问题合集1. modelsim怎么调用altera的库仿真啊?(megafunctions)以前有个帖子说把quartus安装目录下的sim文件夹里面的文件编译进modelsim里面就可以了,可是sim文件夹里面我要的那个函数不是.v文件啊,还有他里面的一些.vhd文件怎么编译错误啊?是eda/sim_lib里,编译错误,我想是你编译的顺序不对用EDA/SIM_LIB中文件直接放到PROJECT中,你需要看看它的告错信息。
一般是缺库。
你可以按提示缺的库,在FILE/NEW/LIBRARY菜单里创建一个映射到WORK的库。
这样一般就好了。
如何在modelsim里如altera的库中做后仿真啊,急死了我用synplify综合后,用modelsim做后仿真,我在modelsim里面加入了C:quartusedasim_libmodelsimvhdl里面的两个库,但是编译的时候还是提示我找不到library apex20k。
还要加什么库啊???郁闷死了vlib apex20kvmap apex20k apex20kvcom -work apex20k c:/quartus/eda/sim_lib/apex20k_atoms.vhdvcom -work apex20k c:/quartus/eda/sim_lib/apex20k_components.vhd谢谢i8086,我现在知道怎么加入altera的库了,但是错误依然在,不知道是什么原因,modelsim里面的提示如下:vcom -reportprogress 300 -work work {D:/caiyang/rev_1/caiyang_1.vhd}# Model Technology ModelSim SE vcom 5.7e Compiler 2003.07 Jul 8 2003# -- Loading package standard# ** Error: (vcom-19) Failed to access library 'acex2k' at "acex2k".# No such file or directory. (errno = ENOENT)# ** Error: D:/caiyang/rev_1/caiyang_1.vhd(7): Library acex2k not found.# -- Loading package std_logic_1164# -- Loading package numeric_std# -- Loading package components# ** Error: D:/caiyang/rev_1/caiyang_1.vhd(12): Unknown identifier: acex2k# ** Error: D:/caiyang/rev_1/caiyang_1.vhd(14): VHDL Compiler exitinglibrary ieee, acex2k;use ieee.std_logic_1164.all;use ieee.numeric_std.all;library synplify;use ponents.all;use acex2k.acex2k_components.all;~~~~~~~~~~~~~~~就是提示找不到这个东西,这是用synplify综合后的文件的前面几行代码。
Modelsim-仿真方法总结
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工程对前后仿真来说都不是必须的.下面分别介绍每一步的操作。
Modelsim的功能仿真和时序仿真
FPGA 设计流程包括设计输入,仿真,综合,生成,板级验证等很多阶段。
在整个设计流程中,完成设计输入并成功进行编译仅能说明设计符合一定的语法规范,并不能说明设计功能的正确性,这时就需要通过仿真对设计进行验证。
在FPGA 设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿真)。
功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证;而时序仿真是在布局布线后进行,它与特定的器件有关,又包含了器件和布线的延时信息,主要验证程序在目标器件中的时序关系。
在有些开发环境中,如Xilinx ISE 中,除了上述的两种基本仿真外,还包括综合后仿真,转换(post-translate)仿真,映射后(post-map)仿真等,这样做完每一步都可进行仿真验证,从而保证设计的正确性。
ModelSim 是Mentor Graphics 子公司MentorTechnology 的产品,是当今最通用的FPGA 仿真器之一。
ModelSim 功能强大,它支持FPGA 设计的各个阶段的仿真,不仅支持VHDL 仿真,Verilog仿真,而且支持VHDL 和Verilog 混合仿真。
它不仅能做仿真,还能够对程序进行调试,测试代码覆盖率,对波形进行比较等。
ModelSim 有很多版本,像ModelSim/SE 是首要版本,除此之外还有ModelSim/XE 和Model Sim/AE,分别是为Xilinx公司和Altera 公司提供的OEM 版,其中已包含各公司的库文件,故用特定公司OEM 版进行仿真时就不需编译该公司的库了。
用ModelSim 进行功能仿真进行功能仿真首先要检查设计的语法是否正确;其次检查代码是否达到设计的功能要求。
下文主要介绍仿真步骤和测试激励的加载。
仿真步骤(1)建立库并映射库到物理目录因为用ModelSim 进行仿真是建立在仿真库的基础上的(此处进行的是功能仿真,因而不用编译特定厂商的库),所以首先要建立库并把库映射到实际的物理路径。
ModelSim编译仿真库的方式
3.编译
如果没做好第1步,Compile会是灰色的。 右图先选择目标库,再选择文件,再点击 Compile,一次可以编译多个文件,全部编译 完成就点击Done
成功后产生左侧三张图的结果 这次还需要一个vivado_unisims库 这个就不写出来了。
4.使用
我这里是仿真一个Xilinx的PLL。 启动top的同时还需要同时启动一个glbl(这个也可以例化在top里,随心情)。 然后真正需要添加的库是vivado_unisims
点小三角就行了,要不然库就算是白建了一半。
最后一张图,选完,仿真,结束。 这就是ModelSim的库的创建及应用方式
ModelSim编译仿真库
作者:张成宇
1.确定没有打开的工程
先把工程关闭
2.创建新的库
ModelSim开启以后就会在一个工作目录下运行。 假如当前工作目录为”E:/workspace”,则图2所创建的vivado_glbl实际是创建了” E:/workspace/ vivado_glbl”。 这次使用图3的方式,直接输入路径。(不
modelsim后仿步骤
Modelsim 后仿真操作步骤后仿就是时序仿真,因为时序仿真是在综合之后故称后仿真。
现将综合到后仿的简单步骤细列如下(并附图):一,综合(所用工具是quartus)1,建立工程,其他不变,只是在选择仿真工具时留意下图红圈处。
(图1)2,设置仿真工具:assignments->settings...->EDA Tool Settings->Simulation 的Toll name 选择modelsim,其他默认设置即可,3,综合,综合成功后,可以看到再工程目录的simulateion->modelsim下面有两个文件.sdo和.vo文件,前者是加了标准延时的时序反标注文件,后者是综合出来的网标文件。
(图2)那么后仿时就是对.vo文件进行仿真,且仿真文件(testbench)就是前仿真时的文件。
只是还要加入库文件,和延时文件(.sdo)。
二,时序方针(所用工具是modelsim)1.首先编译altera 库文件: 在modelsim新建工程,在工程的library下新建一个库命名为sim;(图3)再加入文件,浏览到altera/quartus的安装目录再找eda->sim_lib,(图4)我的是:D:\altera\80\quartus\eda\sim_lib,选择所有.vhdl文件或者.verilog文件(根据自己设计所采用的语言,选择相应的文件,如果阁下是两种语言联合编程,那就把所有的文件全部编译,肯定错不了,我试过了。
),全部编译后,可以在libraray->sim中看到编译后的文件了。
2,在modelsim下建立新的工程,将在quartusII下生成的.vo文件和测试文件testbench加入工程中,(图5)全部编译,通过后,选择状态栏中start simulation打开一个仿真对话框,(图6)选择仿真对象为work->testbench,(图7)再选择library添加库sim,(图8)再选择SDF,添加延时文件.sdo,注意这里在Apply to Region文本框中填上所选择延时文件的作用域,即您老在testbench里面所实例化的顶层文件的实例化名(红色圈出)。
modelsim后仿真过程
Modelsim后仿真过程具体流程:1、在综合后的网表中关联库文件:在综合后文件开头使用`include "路径/文件名.v"语句即可。
2、新建库:在库信息栏(如图1)空白处右击,选择new,library,打开创建库窗口(如图2),在creat一栏选择新建库并逻辑映射到该库,库名自己命名(注意不要与库信息栏已经存在的库如work、std等起相同的名字,以免冲突),库物理名默认与已命名的库名一致,建议不做修改,然后点击ok。
图1图23、设置文件编译到新建库:在project信息栏(如图3)空白处右击,选择properties,打开工程编译设置窗口(如图4),Do Not Compile不选;点击Compile to library旁边的倒三角,选择自己已新建的库;Place in Folder同样点击旁边的倒三角选择,一般都是默认顶层;然后点击ok。
图3图44、编译与仿真:编译步骤1中所得的综合后的网表文件,并进行仿真,其过程与前仿过程一样,这里不再赘述,但注意此时仿真时要在自己新建的库中找欲仿真模块,与前仿时在work中找欲仿真模块是同样的过程。
疑点回答:(1)`include "路径/文件名.v"中的路径可以是绝对路径,也可以是相对路径,若库文件(.v文件)与综合后的网表文件在同一路径下,则路径可以省略,即为`include "文件名.v"。
(2)在综合后的网表中添加库文件的目的是将他们“关联”成一个文件,这样编译时就可以识别综合后的网表中调用的库元件,也就是实现了库的调用。
(3)我们新建的库只是一个空的可存储编译信息的库类型文件包,并不是实际的引入了库,其目的就是用来存放已关联库文件的综合后的网表的编译信息,至于与实际库信息的关联是通过网表关联实现的;而其他自带的库(work库除外,其用于存放前仿编译信息,也是空的,不含任何库信息)比如std等都是实际存在的,若不新建,直接在这些库中编译会造成不必要的麻烦。
ModelSim仿真工具的使用
门级仿真和时序仿真
设置完后,成功编译,quartus II会自动在当前project目录下生成一个 simulation目录,在该目录下有一个Modelsim的文件夹,此文件夹下有仿真所 需要的网表文件及延时反标文件. 如果使用vhdl语言,则网表文件是.vho,反标文件是.sdo;如果使用verilog语 言,则网表文件是.vo,sdf文件也是.sdo.
门级仿真和时序仿真
more settings 中设置如左图 底下的test bench mode name 是*— vlg_vec_tst(对应verilog,*是你的主 程序名),用*_vhd_vec_tst对应vhdl。
然后编译,以后的同上
门级仿真和时序仿真 先在quartus中生成网表文件和时延文件,然后调用modelsim进行仿 真。Quartus II 中设置仿真工具,more settings 也不用设置
Modelsim的安装
Modelsim的安装
使用Modelsim进行仿真 Modelsim运行方式有4种: 用户图形界面模式 交互式命令行模式 不显示modelsim的可视化界面 ,仅通过命令控制台输入的 命令完成所有工作 Tcl和宏模式 编写可执行扩展名为do或者tcl语法文件 批处理模式
其所有操作都在后台进行,用户看不到modelsim的界面,也不需要交 互式输入命令。当工程很大,文件比较多时,用批处理比较方便。直 接运行批处理文件,在后台调用modelsim,执行modelsim的脚本文件 * .do,完成操作
2.建立工程
在modelsim中建立project,选择File ->New ->Project. 在Project Name栏中填写你的项目名字,建议和你的顶层文件名字一 致。Project Location是你的工作目录,你可通过Brose按钮来选择 或改变。Ddfault Library Name可以采用工具默认的work。 Workspace窗口的library中就会出现work库.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ModelSim作布局布线后仿真的库问题[日期:2009-3-4]Modelsim是目前最流行的应用最广泛的FPGA仿真器,是Mentor Graphics的子公司Model Technology开发的。
因为Modelsim好学易用,调试方便,仿真速度快,功能强大,所以很多芯片厂商的开发系统都OEM Mentor Graphics公司的Modelsim仿真器,包括Xilinx,Altera,Lattice和Actel等。
Modelsim是一个单内核仿真器,同一个内核可以进行VHDL仿真、Verilog仿真和VHDL/Verilog混合仿真;支持所有的VHDL和Verilog标准;采用直接编译技术(Direct-Compiled),大大提高了HDL编译和仿真速度。
Modelsim支持三个层次的仿真:RTL仿真、综合后仿真和布局布线后仿真。
为了加快仿真速度,一般情况下设计中调用的库都是已经进行编译过的,然后对设计进行仿真,此时仿真器直接调用库中已经编译过的单元,而不是再次对设计中的单元模块进行编译。
所以如果要对设计进行综合后仿真和布局布线后仿真,必须先对设计中调用的库进行编译处理。
这也是本文的重点内容。
因为每个厂商的库不一样,而且同一个厂商,不同的器件库就有可能不同,所以下面就目前国内比较常用的几个公司的芯片的库问题分别进行探讨。
1.Xilinx公司的器件其库的处理方式有两种,一种是在Xilinx的网站上,我们可以下载到压缩文件xilinx_lib_4.zip,解压缩后有一个xilinx_lib_4.tcl(将来的版本可能会升级)。
单独运行Modelsim,然后在工具菜单中有一项是执行宏(这里Modelsim5.5 和5.6、5.7有一些差异,不过在5.5中仍可以找到执行宏Execute Macro),运行xilinx_lib_4.tcl后可以看到。
你可以根据你的厂商软件版本选择,指定Xilinx 的安装路径,在Install Path中指定你编译后的数据将要放的目录位置(可以是任何一个目录,最好是设计者数据盘中的某个目录,因为库编译一次就可以了,重新安装软件不需要重新编译库)。
对于Xilinx作布局布线后仿真只需要simprim库即可;如果要作综合后仿真,就需要编译Unisim库;如果设计中调用了CoreGen产生的核就需要编译CoreGen库。
这应该根据设计者的具体情况进行选择。
如果编译完了后,在Modelsim中库会自动变为标准库(注意:Xilinx提供的早期脚本文件作不到这一点)。
所谓标准库,也就是说这个库会和IEEE这些库一样,当Modelsim启动时,这些库会自动加载,里面的单元在VHDL代码中可以随意调用。
比如:在布局布线后的VHDL文件中大家可以看到Library simprim这样的语句。
当然也可以自己手动改变这些库的性质,只用修改在Modelsim安装路径下的Modelsim.ini文件即可。
比如:修改后的Modelsim.ini可以看到为[Library]std = $MODEL_TECH/../stdieee = $MODEL_TECH/../ieeeverilog = $MODEL_TECH/../verilogstd_developerskit = $MODEL_TECH/../std_developerskitsynopsys = $MODEL_TECH/../synopsysmodelsim_lib = $MODEL_TECH/../modelsim_libsimprim = D:/test/test/simprimunisim = D:/test/test/unisimlogiblox = D:/test/test/logibloxsimprims_ver = D:/test/test/simprims_verunisims_ver = D:/test/test/unisims_verxilinxcorelib = D:/test/test/xilinxcorelibxilinxcorelib_ver = D:/test/test/xilinxcorelib_verlpm = d:/test/test/lpm…可以看到修改后的文件中simprim库和IEEE等标准库处于同等的位置。
如果关于这些库的行不加到这个文件中,那么每做一个项目的时候,设计者都要建立一个库,然后把这个库和编译后的目录映射好。
比如:在Modelsim中用命令vlib simprimvmap simprim D:/test/test/simprim在一个项目中设置的库对其他项目是无效的,所以如果你经常用一些库,就可以把这些库设置成标准库。
另外一种编译库的方法更本质一些,上面这种方法是厂商做一个脚本文件方便大家对库进行处理。
事实上,我们可以手工处理这些库。
在Xilinx的ISE安装目录下,比如:D:/xilinx/vhdl/src和D:/xilinx/Verilog/src下都有这些库源文件;simprim库的源文件就在…/src/simprims目录下,CoreGen 库的源文件就在…/src/XilinxCoreLib下等。
在Modelsim的命令窗口运行下面的命令即可:vlib simprimvmap simprim d:/test/test/simprim (路径可以自己任意指定)vcom –work simprim $XILINX/vhdl/src/simprims/simprim_Vcomponents.vhdvcom –work simprim $XILINX/vhdl/src/simprims/simprim_Vpackage.vhdvcom –work simprim $XILINX/vhdl/src/simprims/simprim_VITAL.vhd(注意:编译顺序不能颠倒),Unisim库如下所示:vlib unisimvmap unisim D:/test/test/unisimvcom -work unisim $XILINX/vhdl/src/unisims/unisim_VCOMP.vhdvcom -work unisim $XILINX/vhdl/src/unisims/unisim_VPKG.vhdvcom -work unisim $XILINX/vhdl/src/unisims/unisim_VITAL.vhdvcom -work unisim $XILINX/vhdl/src/unisims/unisim_VCFG4K.vhd如果是Verilog语言,可以进行同样的处理。
不过必须注意一定要编译glbl.v文件。
如果要了解更详细的信息,可以参考相关文献。
库编译后就可以手工修改安装目标下的Modelsim.ini文件。
修改后的文件如前所述即可。
2.Altera公司的器件对于Altera公司,其MaxplusII软件能开发的器件的库的名字是alt_vtl,仿真模型在maxplus2/vhdl87/vital或者maxplus2/vhdl93/vital下面可以找到。
如果是Quartus,则库的名字不再用alt_vtl。
该公司不同的器件库名字是不一样的,库名如下:如果是lpm库,要编译的文件是220model.vhd和220pack.vhd,在安装目录下可以搜索的到。
比如:…quartus/eda/sim_lib/关于lpm库设置过程是这样的,进入MODELSIM,创建一个库,例如:vlib lpmvmap lpm <…/myalteralib/lpm>(自己指定绝对路径,或者用菜单创建)vcom –work lpm <…/sim_lib/220pack.vhd> (自己指定绝对路径,或者用菜单编译)vcom –work lpm <…/sim_lib/220model.vhd> (自己指定绝对路径,或者用菜单编译)现在可以到Modelsim的安装目录,编辑modelsim.ini。
[Library]std = $MODEL_TECH/../stdieee = $MODEL_TECH/../ieeeverilog = $MODEL_TECH/../verilogstd_developerskit = $MODEL_TECH/../std_developerskitsynopsys = $MODEL_TECH/../synopsysmodelsim_lib = $MODEL_TECH/../modelsim_liblpm = <…/myalteralib/lpm>(一定要和自己刚才创建的lpm库目录一致)此时,即可在Modelsim的library窗口中看到有这个库了。
其他的库同理可以这么作。
下面举例apex20k库为例:运行Modelsim,创建库apex20k,vlib apex20kvmap apex20k <…/myalteralib/apex20k>vcom –work ape x20k <…/eda/sim_lib/apex20k_atoms.vhd>vcom –work apex20k <…/eda/sim_lib/apex20k_componenets.vhd>然后修改modelsim.ini文件即可。
3.Actel公司的器件因为大多数设计者使用Actel公司器件的原因是其反熔丝特性,这些芯片是一次编程的,所以布局布线后仿真显的更加重要。
安装Actel公司的Designer后其库的原文件位置是:VHDL 的VITAL Library: :/Actel/ Designer_R1-2001/ lib/vtl/95Verilog Library: :/Actel/ Designer_R1-2001/lib/vlog此处以VHDL为例进行库编译说明。
对应于不同的器件系列其库名字分别是act1, act2, act3,a3200dx, a40mx, a42mx, a54sx,a54sxa, ex and a500k等。
Verilog的库名稍微有所不同,库名分别是act1, act2, act3, 3200dx, 40mx, 42mx, 54sx, 54sxa, ex and a500k等。
源文件分别和库名相对应,很容易看出。
下面以act2库为例进行说明。
vlib act2vmap act2 d:/test/test/act2vcom –93 –work act2 :/Actel/ Designer_R1-2001/ lib/vtl/95/act2.vhd然后对Modelsim安装目录下的Modelsim.INI文件进行修改即可。