ModelSim

上一篇 / 下一篇  2006-08-23 18:27:47 / 天气: 晴朗 / 心情: 高兴 / 个人分类:Backup

第一章 介  绍
pH(u#W X1Xu116680
,hh;ga @? u"LxwB116680本指南是为ModelSim5.5f版本编写的,该版本运行于UNIX和Microsoft Windows 95/98/Me/NT/2000的操作系统环境中。本指南覆盖了VHDLVerilog模拟仿真,但是你在学习过程中会发现对于单纯的HDL设计工作而言,它是一个很有用的参考。ModelSim具备强大的模拟仿真功能,在设计、编译、仿真、测试、调试开发过程中,有一整套工具供你使用,而且操作起来极其灵活,可以通过菜单、快捷键和命令行的方式进行工作。ModelSim的窗口管理界面让用户使用起来很方面,它能很好的与操作系统环境协调工作。ModelSim的一个很显著的特点就是它具备命令行的操作方式,类似于一个shell有很多操作指令供你使用,给人的感觉就像是工作在Unix环境下,这种命令行操作方式是基于Tcl/Tk的,其功能相当强大,这需要在以后的实际应用中慢慢体会。
3S;b(L6L5dV6t K4X116680ModelSim的功能侧重于编译、仿真,不能指定编译的器件,不具有编程下载能力。不象Synplify和MAX+PLUS II可以在编译前选择器件。而且ModelSim在时序仿真时无法编辑输入波形,不象MAX+PLUS II可以自行设置输入波形,仿真后自动产生输出波形,而是需要在源文件中就确定输入,如编写测试台程序来完成初始化、模块输入的工作,或者通过外部宏文件提供激励。这样才可以看到仿真模块的时序波形图。另外对于Synplify来说,也只具有编译能力,但是比MAX+PLUS II可编译的verilog的内容要多,所以常常可以现在Synplify下编译,生成编译文件再送到MAX+PLUS II中使用。EDA中国门户网站mRE)P&Ox
ModelSim还具有分析代码的能力,可以看出不同的代码段消耗资源的情况,从而可以对代码进行改善,以提高其效率。EDA中国门户网站 ay&b8@9w

&V:}b y;~fD D0B116680第二章    ModelSim的主要结构
-Z3dZ}m116680EDA中国门户网站&I d2?v7}4GtF:_
ModelSim的主窗口(Main window)包括菜单栏、工具栏、工作区和命令行操作区。
j5n%A2|4_3j@116680在工作区可以显示Project Tab、Library Tab、Sim Tab(显示Load Design、Hierarchical Structure);在命令行操作区,可以用命令提示符的方式进行编译、仿真设计,同时打开其他窗口。EDA中国门户网站[B1vZd'P"H.Q$H
在菜单栏View下可以打开,source window、list window、wave window、structure window、signal window、dataflow window、process window、viarables window等窗口,用来测试仿真、调试仿真。由此也可以看出该软件具有强大的仿真设计能力,它提供的工具很多。
C`&m2_Lr4e/\'p116680在帮助菜单里有SE的帮助文件和Tcl的帮助文件,是学用ModelSim很好的帮手。EDA中国门户网站)u%d eT;SfO#\&Q"}

Q ~6W3c^ Dvq116680第三章    ModelSim的简要使用方法
XV?9^\c:F m n*^SF116680EDA中国门户网站,eRc*o'uW
在这一章里通过一些课程来简单介绍ModelSim的使用方法,更多的需要在实际应用中熟练和掌握。EDA中国门户网站 Id_:^yo%{d

kQ;Uk4Q116680第一课   Create a ProjectEDA中国门户网站z4Tr [8c)o
1.    第一次打开ModelSim会出现Welcome to ModelSim对话框,选取Create a Project,或者选取File\New\Project,然后会打开Create Project对话框。
s[z1O5~/RI3rrC1166802.    在Create Project对话框中,填写test作为Project Name;选取路径Project Location作为Project文件的存储目录;保留Default Library Name设置为work。EDA中国门户网站/}vxy e%x&|2bn
3.    选取OK,会看到工作区出现Project and Library Tab。
_j G8`)Et&g1166804.    下一步是添加包含设计单元的文件,在工作区的Project page中,点击鼠标右键,选取Add File to Project。EDA中国门户网站{]"ea M5N |:d
5.    在这次练习中我们加两个文件,点击Add File to Project对话框中的Browse按钮,打开ModelSim安装路径中的example目录,选取counter.v和tcounter.v,再选取Reference from current location,然后点击OK。
$R$iP*PZ+Sx1166806.    在工作区的Project page中,单击右键,选取Compile All。
(M/_.qn*v Y1166807.    两个文件编译了,鼠标点击Library Tab栏,将会看到两个编译了的设计单元列了出来。看不到就要把Library的工作域设为work。
eRDRa u4g @1166808.    最后一不是导入一个设计单元,双击Library Tab中的counter,将会出现Sim Tab,其中显示了counter设计单元的结构。也可以Design\Load design来导入设计。EDA中国门户网站 b9Eo9ee-r'o0@c"B'M
到这一步通常就开始运行仿真和分析,以及调试设计,不过这些工作在以后的课程中来完成。结束仿真选取Design \ End Simulation,结束Project选取File \ Close \ Project。
"|7W1G!mM){116680
m ei-e;pxU116680第二课   Basic VHDL SimulationEDA中国门户网站'GS kun t
准备仿真EDA中国门户网站$cf+z.EG'?9?I?:}x
1.    为这次练习新建一个目录,然后拷贝example目录中所有的vhd文件到该目录下。设置该目录为当前工作目录,这一步通过从该目录调用ModelSim或是选取File\Change Directory命令来完成。
`5@ z8QlE1166802.    在编译任何HDL代码前,要建立一个设计库来存放编译结果。选取Design \ Create a New Library生成一个新的设计库。确定选取Create: a new library and a logical mapping to it,在Library Name域中键入work,然后选取OK。这就在当前目录中建立了一个子目录,即你的设计库。ModelSim在这个目录中保存了名为_info的特殊文件。EDA中国门户网站"nmWnC#S9a|4q
( Prompt : vlib work
:D1jT6^$c6?ww0ee116680vmap work work )
#D)N JIg*o'n1166803.    选取工具栏里的Compile命令来编译counter.vhd文件到新库中。这将打开Compile HDL Source Files对话框。使用vcom命令是看不到的。从列表中选取counter.vhd再点击Compile,完成后选取Done。可以编译多个文件,按照设计的需要依次选取进行编译。
r Y9h+}fb,K116680( Prompt : vcom counter.vhd )EDA中国门户网站s;b#N!c-wy\.Q5G
4.    选取工具栏里的Load design按钮,导入设计单元。Load design对话框可以让你选择库和顶级( top-level )设计单元来仿真,你也可以为仿真选取Simulation Resolution限制。这次仿真运行,下述是缺省的显示:EDA中国门户网站1n}!H,Gi
• Simulator Resolution: default (the default is 1 ns)EDA中国门户网站]oK0a%U{
• Library: workEDA中国门户网站)ai.Dn%|
• Design Unit: counter
L&n"dN fAD116680   如果设计单元是一个实体,你可以点击前面的加号,来浏览其关联的结构。
3Z Rz z9Z,`$}116680   ( Prompt : vsim counter )
6}5[8Yx!U e |1166805.    选取counter,然后选择Load接受设置。EDA中国门户网站3ip)d8Ey^/X^}\7M
6.    下面,选取View \ All打开所有的窗口,关于窗口的描述,参阅ModelSim User’s Manual。EDA中国门户网站i4I"^S)KIP U+L!e&w
( Prompt : view * )
`W,n@He @1166807.    在Signals window选取View\List\Signals in Region,这个命令显示List window中的顶级( top-level )信号。EDA中国门户网站|3K,E)R+BP i#P%}
   ( Prompt : add list /counter/* )EDA中国门户网站8w3b z3q!XS
8.    下步,通过从Signals window选取View\Wave\Signals in Region添加顶级( top-level )信号到Wave window。EDA中国门户网站+Gb2DI \A"N
   ( Prompt : add wave /counter/* )EDA中国门户网站C)e^(qq0d5M
运行仿真EDA中国门户网站0W;dqh4vDnw
通过应用始终输入激励来开始仿真。
n%c[T,L?Q gD1166801.    点击主窗口,在vsim提示符下敲如下面的命令:
;LE[$_[m116680   ( force clk 1 50 , 0 100 –repeat 100 )EDA中国门户网站:R5\a0n{0L9n-k
   ( MENU : Signals\Edit\Clock )EDA中国门户网站"Q"WAd,VW9|t
   ModelSim解释force命令如下:
+XTnM"L3IH!f2?g+BL116680    force clk to the value 1 at 50 ns after the current time
|z%o,{4Y@116680    then to 0 at 100 ns after the current timeEDA中国门户网站 QN&@j'aEc!hC
    repeat this cycle every 100 nsEDA中国门户网站;z&_w8OTSC2a d
2.    现在你可以练习来自于主窗口或波形窗口工具条按钮的两个不同的Run功能。(Run功能在主窗口和波形窗口中定义,即这两个窗口中有Run功能)。首先选取Run按钮,运行完成之后选取Run All。
o!Z"t,sC116680Run.  运行仿真,在100ns后停止。
2aFM s!m116680(PROMPT: run 100) (MENU: Run \ Run 100ns)EDA中国门户网站Y e#C*Cn ^ {1^ Y
Run-All.  一直运行仿真,直到选取Break。
Y\D@!hO116680(PROMPT: run -all) (MENU: Run \ Run -All)
/wD&py ?1166803.    选取主窗口或波形窗口的Break按钮来中断仿真,一旦仿真到达一个可接受的停止点,它就停止运行。EDA中国门户网站C6xY})TA8T,[6S
在源文件窗口中的箭头指向下一条将被执行的语句。(如果暂停发生时,仿真没在评测一个过程,则没有箭头显示在源文件窗口上)。
;]L-U:hV ?S116680下面,你将在18行的函数内部设置一个断点。
duH,O!Ql1166804.    移动鼠标到源文件窗口,在18行上点击设置断点,可以看到紧挨着行号有一个红点,可以用鼠标点击切换断点的使能与否,断点禁止后看到是一个小的红色的园环。可以在断点上点击鼠标右键,选取Remove BreakPoint 18来取消断点。EDA中国门户网站8W C#g P!]Vj
( PROMPT : bp counter.vhd 18 )
*Rd:\.D,P7C1166805.    选取Continue Run按钮恢复中断了的运行,ModelSim会碰上断点,通过源文件中的一个箭头或是在主窗口中的一条中断信息来显示出来。
&B*cU%c7wl116680   (PROMPT: run -continue) (MENU: Run \ Continue)EDA中国门户网站vka"APn c-~o
6.    点击Step按钮可以单步执行仿真,注意Variables window中值的变化。如果你愿意可以持续点击Step。
RX$dg]%aqh116680   (PROMPT: run -step) (MENU: Step)EDA中国门户网站p)a] FkT,M ~
7.    当你完成了,敲入以下命令结束仿真。EDA中国门户网站vR4kaB;x
quit -forceEDA中国门户网站 m:`&mWI j#c
8.    命令没有寻求确认就结束了ModelSim。EDA中国门户网站&_@p4@5E` d
第三课   Basic verilog SimulationEDA中国门户网站-M8|#?'r8oP$J&{F

1q` Ub+HU5PD YmX1166801.    新建一个目录,并设置该目录为当前工作目录,通过从该目录调用ModelSim或是选取File\Change Directory命令来完成。EDA中国门户网站 n/r9?.w9m\G9s~L
2.    拷贝example目录中verilog文件到当前目录下。在你编译verilog文件前,你需要在新目录下生成一个设计库。如果你仅仅熟悉解释性verilog仿真器,诸如Cadence Verilog-XL,那么对于你来说这是一个新的方法。因为ModelSim是一个编译性Verilog仿真器,对于编译它需要一个目标设计库。如果需要的话,ModelSim能够编译VHDL和Verilog代码到同一个库中。EDA中国门户网站x_4Pu/F"G1G
3.    在编译任何HDL代码前,要建立一个设计库来存放编译结果。选取Design \ Create a New Library生成一个新的设计库。确定选取Create: a new library and a logical mapping to it,在Library Name域中键入work,然后选取OK。这就在当前目录中建立了一个子目录,即你的设计库。ModelSim在这个目录中保存了名为_info的特殊文件。EDA中国门户网站 uAi+}fDx5ox
 ( Prompt : vlib work
*M&w@&hB&v/U116680vmap work work )EDA中国门户网站{8l$l;C?E6Hc%V
4.    下面你将编译Verilog设计。EDA中国门户网站GM:BF;b:^
这个设计例子由两个Verilog源文件组成,每一个都包含一个唯一的模块。文件counter.v包含一个名为counter的模块,它执行一个简单的八位加法计数器。另一个文件tcounter.v是一个测试台模块(test_counter),通常用来校验counter。在仿真下,你可以看到这两个文件,通过一个被测试台例示了的模块counter的一个简单的实例(名为dut的实例),来层次化的设置了。稍候你将有机会看一下这个代码的结构,现在,你需要编译两个文件到work设计库。
FO6qFFmI,H1166805.    通过选取工具条中的Compile按钮来编译两个文件。EDA中国门户网站a Q7h$Ll"E
   ( PROMPT : vlog counter.v tcounter.v )
G8zi3lv:Z X,@#?116680   这就打开了Compile HDL Source Files对话框。EDA中国门户网站6])DI-b!Ex OY!T#q
   选取两个文件后,选择Compile,编译完成后选取Done。EDA中国门户网站+D)`JV?*C
6.    选取工具条中的Load Design按钮开始仿真。
'I%n [&g%k*gr116680   ( PROMPT : vsim test_counter )EDA中国门户网站/L cco!WhfX
   Load Design对话框允许你从指定的库中选取一个设计单元仿真。你也可以
6aLh:],Rg?L116680   为仿真选取Simulation Resolution限制,缺省的库是work,缺省的Simulation Resolution是1ns。
Q4OEm1k(}#u1166807.    选取test_counter,点击Load接受这些设置。EDA中国门户网站,AL;ld&d3IuY
8.    通过在主窗口下的vsim提示符下敲入下述命令来调出Signals、List and Wave window:
c0@ o.mq/d116680   view signals list wave
Mi:kHU9{Z|"~cw116680   (MENU: View\!y'YZ"G L {%j.V'q.b1166809.    为了列示顶级( top-level )信号,移动鼠标到Signals window,选取View\List\Signals in Region。
N~%u+G*~)q`2w116680   ( Prompt : add list /test_counter/* )EDA中国门户网站3R.o5h8tJ8I sj)Rz
10.    现在向Wave window添加信号。在Signals window选取Edit\Select All选择三个信号,拖动三个信号到Wave window的路径名或是数值窗格的任一个中。
r[y RQAJq116680HDL条目也能够从一个窗口拷贝到另一个窗口(或者是在Wave and List window内部),通过Edit \ Copy和Edit \ Paste菜单命令。也能删除选取的条目Edit \ Delete。
;toxc8M.t:`(IL11668011.    下面打开Source window,选取View \ Source
XgO"~z9G-cK116680   ( Prompt : view source )
3j"wa }9v*\Yd4\11668012.    导入设计的时候会在工作去开出一个新的Sim Tab栏。这个Structure Pane展示了设计的层次结构。你可以点即“+”(expand)或“-”(contract)来观察。
:d2r D#i"z8D11668013.    点击其中的Function increment可以注意到其他窗口是怎么适当的自动更新的。明确地说,Source window显示了你在Structure window所选的层次水平的Verilog代码.在这种方式下使用Structure Pane类似于解释性Verilog的范围命令。现在,点击Structure Pane的顶层线,确定test_counter模块显示在Source window。
%}'la8qb116680运行仿真EDA中国门户网站D |[P^ @
1.    Run运行100ns,缺省设置。
3a:xL?7V T"E116680   (PROMPT: run ) (MENU: Run\Run 100ns)
-Dp\1^ Z1166802.    设置Run Length为500ns,然后Run。EDA中国门户网站h6H4|6@f:z+F.yu
现在仿真运行了600ns,在工作取底部状态栏可以看到这些信息。
-l9ZG x w#G"h2U1166803.    上个命令使仿真器前进了500ns,也可以设置仿真器推进的时间
"Fk*Q1g.p'I@x116680run @ 3000
,@ rnT7T2m5mO6y"r116680实际仿真器向前推进了2400ns(3000-600)EDA中国门户网站.Ngo)}jK9i
4.    选取主窗口Run All。
d8]EM(}116680   (PROMPT: run -all ) (MENU: Run\Run -All)EDA中国门户网站A.D)IUf$C E ~t
5.    选取Break中断运行。
;EDO8tpepKL116680看Source window,察看中断执行的语句。
7E4w4n`(CL116680调试仿真EDA中国门户网站q L'[ Fz
1.    在List window选取/test_counter/count。从List window菜单条中选取 Prop \ Signal Props。Modify Signal Properties (list) 对话框打开了。EDA中国门户网站^!M3g5n8by9l+^k
为信号counter选取十进制(在Radix),相应的List window的输出也发生改变,成为十进制数,而不是缺省的二进制了。EDA中国门户网站~4d-q1Bd,[P:Y;J
2.    我们选取工作区Structure Pane中的dut:counter,然后在counter.v中的30行(这里包含一个到Verilog功能增量的调用)设置断点。
VrU-d&Q5A'Y^1166803.    选取Restart按钮,重载设计组件和重置仿真时间为零。
*xs#XeP J116680   (PROMPT: restart ) (MENU: File\Restart)
'Ob?g4u FR f116680   确认Restart对话框中所有条目被选中,然后点击Restart。
)U6vC U0v(pe T;M116680   例子中的Verilog代码中19行有一个stop语句,如果不Restart的话,将会停EDA中国门户网站$y2T g~/\P5\(Z^
   在这一句上。
RCR4a(~~1166804.    选取Run –All(主窗口),恢复执行仿真。中断后看Source window。
.[Kx"a H{116680   (PROMPT: run -all ) (MENU: Run\Run -All)
7p WMz G1166805.    正常的,当中断到达后你对一个或多个信号的值感兴趣,你有几个选项可以检测这些值。你能看显示在Signals window中的值;可以在Source window中,在变量上点右键;或者使用examine命令。
ni'r rg OO&`116680examine count
s!fIbh,Ug o$Z116680命令的结果是,值会输出在主窗口。
.G"q y4^X)Gd1166806.    执行单步跳使命令Step,遍历Verilog源函数。EDA中国门户网站5O/_} `V Tl
7.    结束仿真的命令为:quit –force。
T(S3]'qS1h116680
-r&M@"W D0i116680第四课   Mixed VHDL/verilog simulationEDA中国门户网站nsK6` ZqQ;d h(H
准备仿真EDA中国门户网站N6T%q4uW
1.    生成一个新的工作目录,拷贝..\examples\mixedhdl\下的*.vhd和*.v文件到新目录中。设置为为当前工作目录。运行软件,如果Welcome对话框出现,选取Proceed to ModelSim。EDA中国门户网站 {_.q5B ^S M
2.    Select Design\Create a New LibraryEDA中国门户网站X8o^.J gX4[
(PROMPT:vlib work)EDA中国门户网站v!X#p Zn%I
Type Library Name:work
7gdIY!A0t.l1A%r_8X116680Select OK!EDA中国门户网站j;y$oUNr/DE-o
3.    编译文件EDA中国门户网站C/\oji%['X;e2\
(PROMPT : vlog cache.v memory.v proc.v)
D6L3R(Rh116680(PROMPT : vcom util.vhd set.vhd top.vhd)
-r4\ Y)d6W116680打开Compile HDL Source Files对话框。 逐个编译Verilog文件。EDA中国门户网站DK |$F;UkM
cache.v  memeory.v  proc.v
*B1{} B}9XH,s1166804.    依赖设计,VHDL的编译次序是特定的。在这个例子中,top.vhd文件必须最后编译。按照下面的顺序编译文件:EDA中国门户网站 CNC?.d3D
util.vhd  set.vhd top.vhd
m5w(M$b&Drm6e3a1166805.    编译完成,点Done。EDA中国门户网站IJ o9t}}'su gE
运行仿真
2eAe-` VGb0Ah1166801.    选取Load Design开始仿真。Load Design对话框打开,选取top实体点击Load。
}"RN6e Z].mCee116680(PROMPT : vsim top)EDA中国门户网站0_%DzW6F X
2.    View\All,(PROMPT : view *)
rPN?]F.a5N1166803.    add list *
/f dz ^*s#a0]116680add wave *EDA中国门户网站1DY0[%Jr
(Signals MENU: View\List\Signals in Region)
6tf3^1~$]+l7Lh9K116680(Signals MENU: View\Wave\Signals in Region)EDA中国门户网站!E{-{aCF$b8u
4.    观察一下工作区的Structure pane。注意设计中两者的层次混合,VHDL级的用一个方框前缀指示,Verilog级的用一个圆形前缀指示。
S(e6y,k0zzc e1166805.    在Structure pane中点击模块c:cache,它的源代码出现在源文件窗口。EDA中国门户网站nl}TC
6.    用查找功能定位cache.v文件中cache_set的声明。
eR/}o-s8\116680Edit\Find。EDA中国门户网站 B6O_qs8Sf'l_?
找到了可以发现,cache_set是cache.v文件内例示了的VHDL实体。
g4m9y {&~W7b1166807.    在Structure window,点击行“s0:cache_set(only)”。则Source window显示了cache_set实体的VHDL代码。
:@s @6PD[1166808.    Quit -forceEDA中国门户网站1l B~AkE7h

Kk L+S,S jGGev116680第五课   Debugging a VHDL simulation
.?~ ~4bq}116680准备仿真EDA中国门户网站0?F.`Z {Of
1.    拷贝..\example\下的gates.vhd,adder.vhd,testadder.vhd文件到新建的工作目录,并定位为当前工作目录。EDA中国门户网站2rw5?T \,H&vP)L
2.    生成一个新库:vlib library_2。
Gx2s:~ jY*_1166803.    在命令行的方式下敲入以下命令将源文件编译到新库中EDA中国门户网站3Kd0BMT
vcom –work library_2 gates.vhd adder.vhd testadder.vhd
;S-~p%x/Z1166804.    下一步是映射新库到工作库,可以编辑modelsim.ini文件来生成映射,或者用vmap命令生成一个逻辑库名字来完成。
1lA)l2b3cb~$M7c116680vmap work library_2
2N8h!_J cC116680ModelSim为你修改modelsim.ini文件。EDA中国门户网站'j6l#j0Qw,` NU
5.    选取Design\Load Design,打开Load Design对话框。EDA中国门户网站1]l}{"| H
6.    确认simulation resolution为缺省;在设计单元中选取名为test_adder_structural的配置;单击Load接受设置。EDA中国门户网站3Lr;? u1za9~Q
   (PROMPT : vsim –t ns work.test_adder_structural)EDA中国门户网站XfQD\K
7.    打开所有的窗口。(PROMPT:View *)(MENU:View\All)EDA中国门户网站 ^o#l3x+L0v+OX
8.    在Signals window中选区所有信号Edit\Select All然后拖到List window中。
RO @`$A8T ]C116680   (MENU:View\List\Signals in Region) (PROMPT:add list *)EDA中国门户网站~gBF7F
9.    同样地,把信号加到Wave window中。键入命令:add wave *
zSCX!SR)vA H116680   (MENU:View\Wave\Signals in Region)(DRAG&DROP)EDA中国门户网站'gD['A!F$\ `%O&[
10.    在主工具条上的运行时间选择器中,改变运行时间设置为1000ns。EDA中国门户网站)Fy O'FQkH%l
   (MENU:Option\Simulation\Defaults)
8j,]"s a{}'d S116680运行调试仿真EDA中国门户网站Js7SAJ)?bO
1.    选取Run,运行仿真。(PROMPT:run)
-g6p2Q)p;?(w,v&a k116680主窗口中的一条消息将通报你有一个判断错误。执行下面步骤查找错误。
VA2A5wx7H5?1166802.    首先,改变仿真判断选项。选取Option\Simulation。
cE;~+^Vv1166803.    选取Assertions页面。改变选择为Break on Assertion to Error并点击OK。这将使仿真停在HDL判断语句上。EDA中国门户网站$bUN[-I-a:H
4.    选取Restart。(MENU:File\Restart) (PROMPT:restart)
6jbn6k6rG116680确定Restart对话框中所有条目被选,然后点击Restart。EDA中国门户网站"Nvi.s c/NE
5.    选取Run。可以看到Source window中的箭头指向判断语句。EDA中国门户网站@`:QH?%|
   (MENU:Run\Run 1000 ns) (PROMPT:run)EDA中国门户网站$r!~*c-\g } [%s$z
6.    在Variables window中,你可以看到i=6。这表示仿真停留在测试模式环路的第六次重复中。
ru@5y f#j$T1166807.    点击加号“+”展开名为test_patterns的变量。EDA中国门户网站9EH5s.p.x:q
8.    也要展开排列test_patterns(6)的第六次纪录。
'P6^S{"L-CM116680判断表明了Signal window中的 sum不等于Variables window中的sum字段。输入a,b和cin的和应该等于输出sum。但是在测试向量内有一个错误。为了改正这个错误,你需要重仿真且修改测试向量的初始值。
4An2~[mm%^Q1166809.    执行restart –f命令EDA中国门户网站X I?%q7Uka8W
参数-f使ModelSim不出现确认对话框就重新仿真。EDA中国门户网站b;q$r&D&J
10.    在test Process window中选取 testbench process更新 Variables window。
#B8d/]PDT11668011.    再次展开Variables window中的test_patterns和test_patterns(6)。点击变量名字,高亮显示.sum纪录,然后选取Edit\Change。
Mj}r;^:n11668012.    把value中数值的最后四位(1000),替换为0111,并点击Change。(这只是暂时编辑,你必须用文本编辑器永久地改变源代码。)
2n5d_o7i!xzo11668013.    选取Run。EDA中国门户网站P&T#C'A ] a
   (MENU:Run\Run 1 us) (PROMPT:run)EDA中国门户网站,e` e'K0r
   这样,仿真运行时就不会报错了。
ri(d.jX)F^0r&A3V5v116680改变new-line触发
,aUbh3X uA0zt116680缺省的,对于列出信号的每一次变化一条新线显示在List window中。下面的步骤将改变触发因而每100ns就列出这些值。EDA中国门户网站#H'f}T'N6p
1.    在List window中,选取Prop\Display Props。
ga}'[LA1166802.    在Triggers页面完成这些步骤。
-I7fM!lH#\Qx6tOj6\l116680   •取消选取Trigger On:Signals以禁止在信号上触发
y4A&w1^m#Lk`h116680   •选取Trigger On:Strobe以开启strobe
3[9@ C$F0V k u116680   •在Strobe Period域键入100EDA中国门户网站y Q\|T bvf8z
   •在First Strobe at域键入70EDA中国门户网站WRDm9NK*SOQLO
   •单击OK接受设置EDA中国门户网站? Fc @ ~B"B5t r
3.    最后一步将把信号a,b和sum改为十进制。选取Prop\Signal Props,打开Modify Signal Properties(list)对话框。
:F#R&D#R"F3} jG[ Wz1166804.    选取信号,改变其属性。然后结束ModelSim,quit –force。EDA中国门户网站}[!q)z({h D

:L@.[ B G116680第六课   Running a batch-mode simulation
Qi(`C3AV x116680批处理模式仿真必须运行在DOS或UNIX提示符下。EDA中国门户网站3b r1Fa4d'D,t!B A
1.    生成一个新目录,设置成当前工作目录。拷贝..\examples\counter.vhd到该目录下。
@#HY GU:r1166802.    生成一个新的设计库:vlib workEDA中国门户网站 ],S X'F$h9f+Z
3.    映射库:vmap work work
|v8p c$o"B2O0?r1166804.    编译源文件:vcom counter.vhd
:H$J+`(j.w _"l [&s1166805.    使用宏文件为计数器提供激励。拷贝..\example\stim.do文件到当前工作目录中。
*i(cDR sn:a1166806.    生成批处理文件,内容为:EDA中国门户网站k} _+\&kQZ6UK
add list –decimal *EDA中国门户网站$v!C0u"O#} Qqet
do stim.do
8i@ As kZ%^116680write list counter.lstEDA中国门户网站C]ga)k
7.    执行下面的命令,运行批处理模式仿真:
1KR6\;Q%a(? q116680vsim –do yourfile –wlf saved.wlf counter
%x%d/Jaq116680•在名为“counter”的设计单元调用vsim仿真器
4P~kJvL116680•通过-wlf这个可选项通知仿真器在名为saved.wlf的日志文件中保存仿真结果EDA中国门户网站/gs6Wk:`2EcY m
•运行yourfile指定:值以十进制的方式列示出来;执行名为stim.do的激励;并将结果写到名为counter.lst的文件中。缺省的设计名为counter。EDA中国门户网站;?9lum5t
8.    浏览仿真结果 vsim –view saved.wlf
#z{W Tus1166809.    打开一些窗口 view signals list waveEDA中国门户网站}"t gDUQ#yi0K-y
10.    在窗口中放置信号 add wave *EDA中国门户网站'Ug2E_Y$qs+l/k.h
                        add list *
]p DU4}dk!^H11668011.    运用Variables windows实验保存的仿真结果。完成了结束仿真:
X;}2A a.q"^116680quit –f
GWH4P'Clv%A H116680有关批处理和命令行模式更多的信息,请参阅ModelSim User’s Manual。
D3kCSz Q6["N2k116680
_m~:~9]|Po116680第七课   Executing Commands at startup
O*] \T{116680本课与第六课所介绍的工作于相同的目录,也是以命令行方式操作。
*Sc6~J\*ey_do$RT1166801.    这里将用到宏文件(DO)提供启动信息。拷贝..\examples\startup.do到当前工作目录。EDA中国门户网站0N tVk#`0r;C
2.    拷贝modeltech目录下的modelsim.ini文件到当前工作目录。然后编辑该文件,指定一个在设计导入之后被执行的命令。用notepad打开ini文件,取消下属语句的注释,它位于文件的[vsim]部分:(修改后保存)EDA中国门户网站-v*p^x/nP js
Startup=do startup.do
qd-E4N!F0h6Z1166803.    浏览这个DO文件,可以发现它用了一个预定义变量$entity来为不同的设计在启动时作不同的事情。
&D2PF2~ r&X7HTNh1166804.    键入以下指令指定将被仿真的顶级设计单元,开始仿真:vsim counterEDA中国门户网站9Oz,`h2j:g|
注意到没有显示对话框仿真器就导入了设计单元。对于一再地仿真同一个设计单元,这样做是很便捷的。还可以注意到所有的窗口都打开了,这是因为命令view *包括在启动宏里面。
"F#QRO!R/U/nT7r1166805.    结束ModelSim,执行quit –f命令。
8g;w/s Hz1166806.    在其他例子中是不需要startup.do文件的,所以用文本编辑器注释掉modelsim.ini文件中的Startup这一行。EDA中国门户网站P{PE9Xp?

b;Q8aoIt116680第八课   Finding names and valuesEDA中国门户网站Q,NeZX }c!C
Finding items by name in tree windowsEDA中国门户网站(C\ It){9u
你可以使用各个窗口(List,Process,Signal,Source,Structure,Variables,and Wave window)中的查找对话框找寻你需要的HDL条目。Edit\FindEDA中国门户网站-L8X3Z,O0}o
Searching for item values in the List and Wave windowsEDA中国门户网站EO8Ui$]/]u8l9e"Il&S
你可以在List and Wave windows中搜寻HDL条目的值。Edit\SearchEDA中国门户网站]%SP-kW;ax`
你能够为Signal Name(s)定位值,搜寻基于以下的选项:EDA中国门户网站sb+M4o^jXfCW
•Search Type:Any Transition搜寻选取信号的任何变化EDA中国门户网站9Th]*HE
•Search Type:Rising Edge搜寻选取信号的上升沿
}"c4~2t+q.vF.e[[2x116680•Search Type:Falling Edge搜寻选取信号的下降沿
d%D&n/j0|:R116680•Search Type:Search for Signal Value
a2~Y"x5f(@116680搜寻Value域中指定的值(符合VHDL or Verilog的数值格式)EDA中国门户网站1X;B\.WV2cb!e r
•Search Type:Search for Expression
Ca p'V'Q6Y116680搜寻评测一个布尔真值的Expression域中的表达式EDA中国门户网站P;Rn SU R5s
表达式可以调用一个以上的信号,但是限制在纪录于List windows上的信号。表达式可以包括常量、变量和Tcl宏。如果没有指定表达式,搜寻将返回一个错误。参阅ModelSim Command Reference以获取更多关于表达式语法的信息。
:q@N&m7|116680•Search Options:Match Count
I!pa%A q R~co8t&q#M116680  你能够搜寻关于值的第n个变化或者是第n个匹配。Match Count指示了搜寻到的变化或匹配的数量。EDA中国门户网站!E(T_+M'p
•Search Options:Ignore Glitches
3N.O4|&P@'P } b116680  忽略VHDL信号和Verilog网表中的零宽度的脉冲干扰。
]C;d\5~4c`116680搜寻的结果显示在对话框的底部。
'k i-f/b1uew116680
d[*{\-I116680第四章    使用中的注意事项EDA中国门户网站rM/P]-x&Z`H

F7KV Dp,yk? N1166801.    如果打开ModelSim,没有出现Welcom to ModelSim对话框,可以在主窗口点击Help \ Enable Welcome,则以后打开ModelSim就会出现该对话框。EDA中国门户网站F WlF8h \T*\${
2.    在工作区底部的状态栏里会显示一些有用的信息。EDA中国门户网站+\1U p)~0[6r _
3.    操作哪个目录中的文件一定要定位到该目录,或者是设置为当前工作目录。
Z7MxIfL1|)}H1166804.    不能用UNIX或window命令来生成work子目录,因为里面没有_info文件,只能用菜单或vlib命令。
/A/\*~ r:L(] yxK1166805.    断点只能设置在可执行的行上,这些行以绿色行号指示
6J9Al3|7N s6W){1F1166806.    在Basic Verilog Simulation一课里面,编译两个文件的次序是不重要的(不同于被编译器指示生成的源码的从属性)。Verilog-Xl的用户可能再次感到奇怪,他们了解设计单元之间的接口检测或是编译器指示的继承关系上可能存在的问题。ModelSim推迟了这样的检测,直到设计被导入。所以在这里,如果你选择在tcounter.v之前或之后编译counter.v不存在任何问题。
]{x2S7r8w"e,k7i V1166807.    一组Verilog文件可以以任意次序编译,但是在一个混合VHDL/Verilog设计中,Verilog文件必须在VHDL文件值前编译。
O H0o8p3Lz^g1166808.    force命令可以驱动clk,相当于给仿真初始化。


FPGA/CPLD器件价格查询

TAG: Simulation

引用 删除 pistacho   /   2007-11-21 16:53:28
5
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-11-16  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 9795
  • 日志数: 96
  • 建立时间: 2006-08-07
  • 更新时间: 2007-06-30

RSS订阅

Open Toolbar