Modelsim仿真方法 前仿真和后建模和仿真的区别别

查看: 5669|回复: 1
modelsim仿真平台的搭建教程-非常详细
--------------《modelsim仿真平台的搭建——理论篇》--------------------------
通常情况下,每当用硬件描述语言(HDL)设计完逻辑电路之后,我们接着要做的一件非常重要的事情就是对逻辑电路的功能进行仿真。那用什么软件对其进行仿真呢?笔者用得比较多的是Mentor公司的modelsim,他是业界最优秀的HDL仿真软件。而大多数人习惯基于它的图形界面操作来对逻辑电路进行仿真。这些操作看似简单方便,殊不知图形界面仿真会消耗很多时间,尤其仿真大量数据时该现象会特别明显。这时我就在想,有没有什么办法既可以达到仿真的目的又可以减少仿真的时间呢?想了想,办法还是有的,就是搭建一个统一的验证平台,即需要观察仿真波形时,用图形界面方式;当仿真大量数据时,用命令形式。二、验证平台的架构
该平台是基于批处理、脚本、一键化的可运行于图形界面或命令形式的仿真机制的。图1所示为验证平台的文件组织架构,下面将分别对各文件夹的作用进行介绍。
验证平台文件组织结构1、 test
验证平台的顶层文件夹。2、 rtl
存放rtl的文件夹。3、 verify
存放与验证相关的文件夹。4、 run
存放与启动modelsim仿真相关的批处理文件。5、 script
存放与modelsim仿真相关的脚本文件。6、 testbench
存放测试文件。7、 log
存放modelsim仿真过程中产生的垃圾文件。三、验证平台的运行机制
验证平台的运行机制如图2所示,通过批处理和脚本文件之间的调用、传递参数来启动仿真的。其中do文件的执行顺序如图3所示。
验证平台运行机制
do文件执行顺序
-------------《modelsim仿真平台的搭建——额外篇》-----------------------
为了下一篇博文《验证平台的搭建——实现篇》更好地描述,这里需要增加额外的一篇博文来介绍altera器件库的编译,并以quartusII13.0器件库编译为例。1、在modelsim安装目录下新建文件夹altera_lib_1(altera_lib文件夹之前在我的电脑上已经建立过,并存放着器件库)用于器件库编译的地方(用户可在任意路径下新建该库文件),如图1所示。
新建库文件夹2、选择电脑“开始”菜单,找到quartusII13.0的器件库编译工具并左键单击,如图2所示。
器件库编译工具3、在弹出的对话框中设置库编译参数的设置,包括仿真软件modelsim、需要编译的器件、库语言以及库文件夹的选择,如图3所示。设置好参数后点击Start Complation开始器件库的编译,如图4所示。
库编译参数设置
正在编译器件库4、当库编译完成后,将弹出如图5所示的对话框。点击OK、Close完成器件库的编译。
器件库编译完成6、器件库编译后,在库文件夹altera_lib_1中产生相应的器件库,如图6和图7所示。也可以打开modelsim.ini文件看里面生成的内容,如图8所示,很明显与生成的器件库一一对应。
编译产生的器件库1
编译产生的器件库2
打开modelsim.ini文件
----------------《modelsim仿真平台的搭建——实现篇》---------------------------------------------------
在前面的博文中已经介绍了“验证平台”搭建的原因、理论基础以及结构框架,那么今天就以最简单功能(即modelsim既可运行于图形界面模式下也可运行于命令模式下,更多功能只能靠自己去扩展了)来介绍一下该验证平台是如何搭建的!二、批处理文件内容介绍
根据理论篇的验证平台架构可知,验证平台的启动以及参数的传递是从run目录下的批处理文件开始的。那就先从这里开始吧。在run目录下新建如图1所示的批处理文件。
新建各批处理文件
各批处理文件的作用正如命名那样,其中sim.bat主要设置各种变量、参数的判断及执行相应的功能等,sim_start.bat起到启动验证平台并传递参数的功能。下面对各批处理文件内容的实现进行介绍。1、sim.bat
打开sim.bat文件,开始内容的编写。首先是关闭显示信息和清屏,如程序清单1所示。程序清单1@echo off
设置各文件夹路径变量,如程序清单2所示。程序清单2set verify_path=.... erify
set run_path=..
set script_path=..script
set rtl_path=....
set tb_path=.. estbench
set log_path=..log
if not exist %log_path% (md %log_path%)
设置变量的默认值,包括器件库的确定、modelsim界面启动与否、使用帮助、清除日志等,如程序清单3所示。程序清单3set LIBRARY=nolib
set usage=0
进入log目录,让垃圾文件都产生在log目录下,如程序清单4所示。程序清单4cd %log_path%
判断是否有参数传递过来(包括是否需要编译器件库、是否基于图形界面仿真、是否启动帮助显示信息以及是否清楚垃圾文件)并做相应的处理,如程序清单5所示。程序清单5:decode_parameter
if not "%1" == "" (
if "%1" == "-lib" (set LIBRARY=%2)
if "%1" == "-gui" (set GUI=1)
if "%1" == "help" (set usage=1)
if "%1" == "clean" (set clr=1)
goto decode_parameter
设置仿真库,以上一篇博文《验证平台的搭建——额外篇》为基础,该平台目前以只支持altera器件库为例,如程序清单6所示。程序清单6if "%LIBRARY%" == "altera" (
xcopy /Y C:modeltech64_10.2caltera_lib_1modelsim.ini .
set MODELSIM=.modelsim.ini
echo "use altera lib"
启动modelsim软件并根据参数决定验证平台运行于图形界面下或命令行下,如程序清单7所示。程序清单7if "%usage%" == "0" (
if "%clr%" == "0" (
if "%GUI%" == "1" (
vsim -do ../script/full_sim.do
vsim -c -do ../script/full_sim.do
显示帮助信息,如程序清单8所示。程序清单8if "%usage%" == "1" (
echo 脚本使用方法
echo "call sim "
echo options:
echo "-lib 指定仿真库,默认值为nolib,目前仅支持altera器件库"
echo "-gui 加上该参数表示modelsim运行在界面下,否则运行在命令下"
echo "help 显示帮助信息"
echo "clean 清除log目录下所有文件"
返回run目录,如程序清单9所示。程序清单9cd %run_path%
清除垃圾文件,如程序清单10所示。程序清单10if "%clr%" == "1" (
rd %log_path% /s /q
md %log_path%
)2、显示帮助信息.bat
调用sim.bat并传递help参数,如程序清单11所示。程序清单11call sim help
pause3、清除log目录下的文件.bat
调用sim.bat并传递clean参数,如程序清单12所示。程序清单12call sim clean4、sim_start.bat
该批处理文件的使用,将在下一篇博文《验证平台的搭建——应用篇》进行详细介绍。三、do脚本文件内容介绍
在script目录下新建如图2所示的do脚本文件。下面将对各脚本的内容进行介绍。
新建各do脚本文件1、full_sim.do
该脚本文件的作用是获取批处理文件传递过来的变量、获取文件列表、编译、仿真、添加波形、运行等,如程序清单13所示。程序清单13transcript off
onbreak {resume}
$::env(LIBRARY)
$::env(GUI)
$::env(notb)
se et verify_path $::env(verify_path)
set run_path
$::env(run_path)
set script_path $::env(script_path)
set rtl_path
$::env(rtl_path)
set tb_path
$::env(tb_path)
set log_path
$::env(log_path)
set verify_path
[string map {"\" "/"} $verify_path]set run_path
[string map {"\" "/"} $run_path]
set script_path
[string map {"\" "/"} $script_path]
set rtl_path
[string map {"\" "/"} $rtl_path]
set tb_path
[string map {"\" "/"} $tb_path]
set log_path
[string map {"\" "/"} $log_path]
do $script_path/filelist.do
do $script_path/vlog.do
do $script_path/vsim.do
do $script_path/wave.do
quit2、filelist.do
该脚本文件的作用是获取文件列表,如程序清单14所示。程序清单14proc search_ver_rtl {dir_name file_ver_id} {
set dirlist [glob -directory $dir_name -nocomplain -type d *]
foreach fname [glob -directory $dir_name -nocomplain -types f "*.v" "*.sv"] {
puts $file_ver_id $fname
foreach dir $dirlist {
search_ver_rtl $dir $file_ver_id
set file_list_ver [file join $log_path "filelist_ver.f"]
if {[file exist $file_list_ver]} {
file delete $file_list_ver
set file_ver_id [open $file_list_ver w]
search_ver_rtl $rtl_path $file_ver_id
search_ver_rtl $tb_path $file_ver_id
close $file_ver_id3、vlog.do
该脚本文件的作用是编译库和列表文件,如程序清单15所示。程序清单15if {[file exists $log_path/rtl_work]} {
vdel -lib $log_path/rtl_work -all
vlib $log_path/rtl_work
vmap work $log_path/rtl_work
vlog -sv -incr +initreg=r+0 +notimingchecks -quiet -timescale 1ns/1ps -cover bcestf -work work -f $file_list_ver4、vsim.do
该脚本文件的作用是启动仿真并判断是否需要用到器件库,如程序清单16所示。程序清单16if {$lib == "altera"} {
vsim -suppress 3009 -t 1ps -quiet -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L cyclone_ver -L cycloneii_ver -L cycloneiii_ver -L cycloneiiils_ver -L cycloneive_ver -L cycloneiv_hssi_ver -L cycloneiv_pcie_hip_ver -L cycloneiv_ver -L work -voptargs="+acc" -wlf $log_path/vsim.wlf work.testbench
vsim -suppress 3009 -t 1ps -quiet -L work -voptargs="+acc" -wlf $log_path/vsim.wlf work.testbench
}5、wave.do
该脚本文件的作用是在图形模式下调用波形窗口和添加波形信号等,如程序清单17所示。程序清单17view wave
add wave *
#log -r /*四、总结
上面简单介绍了验证平台中批处理和do脚本文件的内容,里面具体什么意思不重要,关键是如何把它给运用起来,否则一切都是浮云。请留意下一篇博文《验证平台的搭建——应用篇》。
---------------------《modelsim仿真平台的搭建——应用篇》------------------------------------------------
基于上一篇博文《验证平台的搭建——实现篇》的基础上,讲讲该验证平台的使用方法。一、基本参数设置
针对不同的计算机以及软件的安装路径,需要对验证平台的一些参数进行设置。首先是器件库的路径设置,打开批处理文件sim.bat,根据具体情况进行设置,如图1所示。
库路径的设置
其次是设置需要用到哪些器件库,打开do脚本文件vsim.do,可根据具体需求进行设置(这里用到的器件库有altera_ver、lpm_ver、sgate_ver、altera_mf_ver、altera_lnsim_ver等),如程序清单1所示。程序清单1if {$lib == "altera"} {
vsim -suppress 3009 -t 1ps -quiet -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L
cyclone_ver -L cycloneii_ver -L cycloneiii_ver -L cycloneiiils_ver -L cycloneive_ver -L cycloneiv_hssi_ver -L
cycloneiv_pcie_hip_ver -L cycloneiv_ver -L
work -voptargs="+acc" -wlf $log_path/vsim.wlf work.testbench
vsim -suppress 3009 -t 1ps -quiet -L work -voptargs="+acc" -wlf $log_path/vsim.wlf work.testbench
一般情况下,以上参数只需设置一次。二、验证平台启动参数设置
关于验证平台的启动参数说明可双击批处理文件“显示帮助信息.bat”进行查看,如图2所示。
显示帮助信息
而参数的设置是在批处理文件“sim_start.bat”中进行的。验证平台运行于命令下且不需要器件库,如程序清单2所示;验证平台运行于命令下且需要器件库,如程序清单3所示;验证平台运行于图形界面下且不需要器件库,如程序清单4所示;验证平台运行于图形界面下且需要器件库,如程序清单5所示。程序清单2call sim程序清单3call sim -lib altera程序清单4call sim -gui程序清单5call sim -lib altera -gui
接下来,举一个简单的例子并通过验证它的功能来介绍验证平台的使用。此次要验证的是altera的PLL核,输入时钟为50MHz,输出时钟为100MHz和50MHz,IP核参数设置如程序清单6所示。程序清单6altpll_component.bandwidth_type = "AUTO",
altpll_component.clk0_divide_by = 1,
altpll_component.clk0_duty_cycle = 50,
altpll_component.clk0_multiply_by = 2,
altpll_component.clk0_phase_shift = "0",
altpll_component.clk1_divide_by = 1,
altpll_component.clk1_duty_cycle = 50,
altpll_component.clk1_multiply_by = 1,
altpll_component.clk1_phase_shift = "0",
altpll_component.compensate_clock = "CLK0",
altpll_component.inclk0_input_frequency = 20000,
altpll_component.intended_device_family = "Cyclone IV E",
相应的测试代码如程序清单7所示。程序清单7`timescale 1ns/1ps
clk_in_50M;
clk_out_100M;
clk_out_50M;
parameter CLK_CYCLE = 20;
clk_in_50M = 0;
forever #(CLK_CYCLE/2)
clk_in_50M = ~clk_in_50M;
sys_pll u_sys_pll (
clk_in_50M
clk_out_100M),
clk_out_50M ),
#(CLK_CYCLE*10);
#(CLK_CYCLE*1000);
由于需要查看输入输出时钟的波形关系,因此PLL功能的验证主要基于图形界面。又因为对PLL的仿真需要器件库,故验证平台的仿真参数设置如程序清单8所示。程序清单8call sim -lib altera -gui
双击sim_start.bat批处理文件,启动仿真,仿真结果如图3所示。输入50MHz的时钟、输出100MHz和50MHz的时钟,很显然,PLL的功能是正确的。
PLL仿真结果
如果不指定器件库的话,将出现错误,如图4所示。图4
好像讲完了,其他的就自己去创造吧。哈哈*^_^*
非常棒哦,学习了。先按博主的方法试试。
Powered by 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
QuartusII与Modelsim波形仿真区别
下载积分:1200
内容提示:QuartusII与Modelsim波形仿真区别
文档格式:DOCX|
浏览次数:38|
上传日期: 14:16:59|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1200 积分
下载此文档
该用户还上传了这些文档
QuartusII与Modelsim波形仿真区别
关注微信公众号豆丁微信公众号
君,已阅读到文档的结尾了呢~~
Quartus II 与 ModelSim
功能仿真与后仿真扫盲
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Quartus II 与 ModelSim
功能仿真与后仿真扫盲
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口 上传我的文档
 下载
 收藏
粉丝量:26
该文档贡献者很忙,什么也没留下。
 下载此文档
如何使用ModelSim作前仿真与后仿真
下载积分:30
内容提示:如何使用ModelSim作前仿真与后仿真
文档格式:PDF|
浏览次数:319|
上传日期: 06:44:40|
文档星级:
全文阅读已结束,如果下载本文需要使用
 30 积分
下载此文档
该用户还上传了这些文档
如何使用ModelSim作前仿真与后仿真
关注微信公众号Modelsim怎么用?Modelsim仿真软件使用教程
18:01 & 作者:小思 & 来源:121下载站 & 浏览:156 & 评论:
Modelsim是一款好用的仿真软件,可以用于前仿真、后仿真等操作,那么Modelsim怎么使用呢?下面小编为大家讲一下这款软件的使用教程:
Modelsim使用教程
Modelsim的仿真主要有以下几个步骤:
(1)建立库并映射库到物理目录;
(2)编译原代码(包括 Testbench);
(3)执行仿真。
上述3个步骤是大的框架,前仿真和后仿真均是按照这个框架进行的,建立modelsim工程对前后仿真来说都不是必须的。
在执行一个仿真前先建立一个单独的文件夹,后面的操作都在此文件下进行,以防止文件间的误操作。然后启动Modelsim将当前路径修改到该文件夹下,修改的方法是点File-&Change Directory选择刚刚新建的文件夹见下图。
做前仿真的时候,推荐按上述建立新的文件夹。
做后仿真的时候,在 Quartus II 工程文件夹下会出现一个文件夹:工程文件夹\simulation\modelsim,前提是正确编译 Quartus II 工程;因此,不必再建立新的文件夹了。
仿真库是存储已编译设计单元的目录,modelsim 中有两类仿真库,一种是工作库,默认的库名为work,另一种是资源库。Work库下包含当前工程下所有已经编译过的文件。所以编译前一定要建一个work库,而且只能建一个work库。资源库存放work库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被放在不同的资源库内。例如想要对综合在cyclone芯片中的设计做后仿真,就需要有一个名为cyclone_ver的资源库。
映射库用于将已经预编译好的文件所在的目录映射为一个modelsim可识别的库,库内的文件应该是已经编译过的,在Workspace窗口内展开该库应该能看见这些文件,如果是没有编译过的文件在库内是看不见的。
建立仿真库的方法有两种。一种是在用户界面模式下,点File-&New-&Library出现下面的对话框,选择a new library and a logical mapping to it,在Library Name内输入要创建库的名称,然后OK,即可生成一个已经映射的新库。另一种方法是在Transcript窗口输入以下命令:
vmap work work
如果要删除某库,只需选中该库名,点右键选择Delete即可。
需要注意的是不要在modelsim外部的系统盘内手动创建库或者添加文件到库里;也不要modelsim用到的路径名或文件名中使用汉字,因为modelsim可能无法识别汉字而导致莫名其妙的错误。
2编写与编译测试文件
在编写Testbench之前,最好先将要仿真的目标文件编译到工作库中,点Compile-&Compile或,将出现下面的对话框,
在Library中选择工作库,在查找范围内找到要仿真的目标文件(Library选择刚才建立的库,查找范围选择目标文件所在的文件夹),然后点Compile和D或在命令行输入vlog Counter.v。此时目标文件已经编译到工作库中,在Library中展开work工作库会发现该文件。
当对要仿真的目标文件进行仿真时需要给文件中的各个输入变量提供激励源,并对输入波形进行的严格定义,这种对激励源定义的文件称为Testbench,即测试台文件。下面先讲一下Testbench的产生方法。
方法一:我们可以在modelsim内直接编写Testbench,而且modelsim还提供了常用的各种模板。具体步骤如下:
⑴ 执行File-&New-&Source-&verilog,或者直接点击工具栏上的新建图标,会出现一个verilog文档编辑页面,在此文档内设计者即可编辑测试台文件。需要说明的是在Quartus中许多不可综合的语句在此处都可以使用,而且testbench只是一个激励源产生文件,只要对输入波形进行定义以及显示一些必要信息即可,切记不要编的过于复杂,以免喧宾夺主。
⑵ Modelsim提供了很多Testbench模板,我们直接拿过来用可以减少工作量。在verilog文档编辑页面的空白处右键点Show Language Templates然后会出现一个加载工程,接着你会发现在刚才的文档编辑窗口左边出现了一个Language Templates窗口,见下图。
双击Creat Testbench会出现一个创建向导,见下图。
选择Specify Design Unit工作库下,work工作库下的目标文件,点Next,出现下面对话框:
可以指定Testbench的名称以及要编译到的库等,此处我们使用默认设置直接点Finish。这时在Testbench内会出现对目标文件的各个端口的定义还有调用函数接下来,设计者可以自己往Testbench内添加内容了(有注释的为添加的内容),然后保存为.v格式即可。按照前面的方法把Testbench文件也编译到工作库中。
方法二:在 Quartus II 内编写并编译 Testbench ,之后将 Testbench 和目标文件放在同一个文件夹下,按照前面的方法把 Testbench 文件和目标文件都编译到工作库中之后。
PS:如果在工作库中没有该文件(在Testbench文件没有端口的情况下),则在Simulate&&&Start Simulate卡片中去掉优化选项,如下图所示。之后再重新编译,即可在工作库中找到该文件。
因为仿真分为前仿真和后仿真,下面分别说明如何操作。
前仿真,相对来说是比较简单的。在上一步我们已经把需要的文件编译到工作库内了,现在我们只需点simulate-&Start Simulation或快捷按钮 会出现start simulate对话框。点击Design标签选择Work库下的 Testbench 文件,然后点 OK 即可,也可以直接双击 Testbench文件Counter_tb.v,此时会出现下面的界面。
在主界面中会多出来一个Objects窗口,里面显示 Testbench 里定义的所有信号引脚,在Workspace里也会多出来一个Sim标签。右键点击Counter_tb.v,选择Add-&Add to Wave,如下图所示。然后将出现Wave窗口,现在就可以仿真了,见下图。
窗口里面已经出现了待仿真的各个信号,点 将开始执行仿真到100ns,继续点仿真波形也将继续延伸,见下图。
图13 仿真波形
若点,则仿真一直执行,直到点 才停止仿真。
也可以在命令行输入命令: run @1000
则执行仿真到1000ns,后面的1000也可以是别的数值,设计者可以修改。在下一次运行该命令时将接着当前的波形继续往后仿真。至此,前仿真步骤完成。
这里是采用的Cyclone ii做的一个counter的例子。
后仿真与前仿真的步骤大体相同,只不过中间需要添加仿真库(和所选器件及所有IP Core相关)、网表和延时文件的步骤。
后仿真的前提是quartus已经对要仿真的目标文件进行编译,并生成modelsim仿真所需要的.vo文件(网表文件)和.sdo文件(时延文件),具体操作过程又有两种方法,一种是通过Quartus调用Modelsim,Quartus在编译之后自动把仿真需要的.vo文件以及需要的仿真库加到modelsim中,操作简单;一种是手动将需要的文件和库加入modelsim进行仿真,这种方法可以增加主观能动性,充分发挥modelsim的强大仿真功能。
① 通过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安装路径,如:D:\Modeltech_6.3\win32)。在打开的modelsim的Workspace窗口中你会发现多了工作库和资源库,而且work库中出现了需要仿真的文件。Modelsim自动将quartus生成的.vo文件编译到work库,并建立相应的资源库。如图所示。
观察库,可以发现,多了verilog_libs库、gate_work库和work库,但是在"工程文件夹\simulation\modelsim"下,只有verilog_libs和gate_work文件夹,为什么库里面却多了一个work库呢?而且gate_work库和work库文件内容相同!
gate_work 库是Quartus II 编译之后自动生成的,而work库是modelsim默认库。仔细观察二者路径,二者路径相同,均为gate_work文件夹,可知 modelsim 将 gate_work 库映射到 work 库。因此,在后续的工作中操作gate_work 库或者 work 库都能得到正确结果。
编写测试台程序Counter_tb.v ,最好放在生成的.vo文件所在的目录,以方便在需要手动仿真时使用。点Compile在出现的对话框中选中Counter_tb.v文件,然后点Compile按钮,编译结束后点Done,这时在Work库中会出现测试台文件。如下图所示。
点击simulate-&Start Simulation或快捷按钮 会出现start simulate对话框。点击Design标签选择Work库下的Counter_tb.v文件,然后点击Libraries标签在Search Library中点击Add按钮,选择仿真所需要的资源库(如果不知道需要选择哪个库,可以先直接点Compile看出现的错误提示中说需要的库名,然后再重复上述步骤)见下图。
再点start simulate对话框的SDF标签。在出现的对话框的SDF File框内加入.sdo时延文件路径。在Apply To Region框内有一个&/&,在&/&的前面输入测试台文件名,即&Counter_tb&,在它的后面输入测试台程序中调用被测试程序时给被测试程序起的名称,本例中为&DUT&,见下图。然后点OK。后面观察波形与前仿真步骤相同。
自动仿真和手动仿真的区别:
这种方法比较简单,因为Quartus II调用Modelsim ,所以除了生成自动生成了modelsim仿真所需要的.vo文件(网表文件)和.sdo文件(时延文件)外,还生成了gate_work文件夹、verilog_libs文件夹;gate_work文件夹(可以叫工作库,也可以叫编译库)下存放了已编译的文件,verilog_libs文件夹下存放了仿真所需要的资源库,上例是cycloneii_ver库(文件夹)。而手动仿真则需要自己添加这些文件和库。具体如下。
② 手动仿真
手动仿真需要自己添加文件和编译库,但可以充分发挥modelsim强大的仿真功能。操作时也要先对quartus进行设置,设置与前面相同只是不要选中Run Gate Level Simulation automatically after complication。然后启动modelsim,将当前路径改到"工程文件夹\simulation\modelsim"下。如下图所示。
相比①中,这里少了一些库(实际是verilog_libs库、gate_work库和work库),因此下面要添加一个库。新建一个库,此处默认库名为work,此时,"工程文件夹\simulation\modelsim"文件夹下出现了一个work文件夹,work库下面没有目标文件和测试文件,即work文件夹下没有任何文件,建库的目的就是将编译的文件都放在该库里,即放在该文件夹下。编译之前,还需要添加仿真所需要的资源库cycloneii_atoms(用到EP2C8),将D:\altera\90\quartus\eda\sim_lib目录下的cycloneii_atoms文件复制到.vo所在的目录,即"工程文件夹\simulation\modelsim"下。
如果按照①中的方法编写testbench并同样放在.vo所在的目录,这时点Compile下的Compile或点将会出现下面的对话框,将所选文件进行编译。
编译完成之后,work工作库下多了很多文件,同样work文件夹下也多了很多文件(夹),建库的目的可见一斑,其中有Counter_tb测试文件和counter目标文件。点击simulate-&Start Simulation或快捷按钮 会出现start simulate对话框。这里和①相比只有Libraries标签在Search Library时不一样,其余2项都一样。Libraries标签在Search Library的设置如下图。
后面的观察波形步骤跟前面一样。
网友评论已有 0 人参与评论&&
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!}

我要回帖

更多关于 线条眉和仿真眉区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信