ModelSim

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

第一章 介  绍EDA中国门户网站zz"c*^+|M/[@

:`+j,tIH v0本指南是为ModelSim5.5f版本编写的,该版本运行于UNIX和Microsoft Windows 95/98/Me/NT/2000的操作系统环境中。本指南覆盖了VHDLVerilog模拟仿真,但是你在学习过程中会发现对于单纯的HDL设计工作而言,它是一个很有用的参考。ModelSim具备强大的模拟仿真功能,在设计、编译、仿真、测试、调试开发过程中,有一整套工具供你使用,而且操作起来极其灵活,可以通过菜单、快捷键和命令行的方式进行工作。ModelSim的窗口管理界面让用户使用起来很方面,它能很好的与操作系统环境协调工作。ModelSim的一个很显著的特点就是它具备命令行的操作方式,类似于一个shell有很多操作指令供你使用,给人的感觉就像是工作在Unix环境下,这种命令行操作方式是基于Tcl/Tk的,其功能相当强大,这需要在以后的实际应用中慢慢体会。
W"d4G ay1m%Y0ModelSim的功能侧重于编译、仿真,不能指定编译的器件,不具有编程下载能力。不象Synplify和MAX+PLUS II可以在编译前选择器件。而且ModelSim在时序仿真时无法编辑输入波形,不象MAX+PLUS II可以自行设置输入波形,仿真后自动产生输出波形,而是需要在源文件中就确定输入,如编写测试台程序来完成初始化、模块输入的工作,或者通过外部宏文件提供激励。这样才可以看到仿真模块的时序波形图。另外对于Synplify来说,也只具有编译能力,但是比MAX+PLUS II可编译的verilog的内容要多,所以常常可以现在Synplify下编译,生成编译文件再送到MAX+PLUS II中使用。
i&z G)l,n3L3v5s0ModelSim还具有分析代码的能力,可以看出不同的代码段消耗资源的情况,从而可以对代码进行改善,以提高其效率。
wNx{,d0EDA中国门户网站q SRYuqt
第二章    ModelSim的主要结构
'B{ R0q k0EDA中国门户网站oV JK \A;DD j5YN s
ModelSim的主窗口(Main window)包括菜单栏、工具栏、工作区和命令行操作区。EDA中国门户网站w }H"Vqf2_
在工作区可以显示Project Tab、Library Tab、Sim Tab(显示Load Design、Hierarchical Structure);在命令行操作区,可以用命令提示符的方式进行编译、仿真设计,同时打开其他窗口。EDA中国门户网站%{9z"N3q&it D-[
在菜单栏View下可以打开,source window、list window、wave window、structure window、signal window、dataflow window、process window、viarables window等窗口,用来测试仿真、调试仿真。由此也可以看出该软件具有强大的仿真设计能力,它提供的工具很多。EDA中国门户网站 E3X3~ M#dd[ X
在帮助菜单里有SE的帮助文件和Tcl的帮助文件,是学用ModelSim很好的帮手。
l |;Zn2D{ Q0EDA中国门户网站x&`u;^1R @,w
第三章    ModelSim的简要使用方法EDA中国门户网站:F V(\;aO [

.z|aqce:tR-g0在这一章里通过一些课程来简单介绍ModelSim的使用方法,更多的需要在实际应用中熟练和掌握。EDA中国门户网站 Eg1C-xm D:HyF O

9lY*g"_OYGIalV0第一课   Create a ProjectEDA中国门户网站P3]*q7k%XW n_d2a"C
1.    第一次打开ModelSim会出现Welcome to ModelSim对话框,选取Create a Project,或者选取File\New\Project,然后会打开Create Project对话框。
6E[)T5Uh/r.sj;S&X02.    在Create Project对话框中,填写test作为Project Name;选取路径Project Location作为Project文件的存储目录;保留Default Library Name设置为work。EDA中国门户网站,F C|kS9Hy#ffp
3.    选取OK,会看到工作区出现Project and Library Tab。EDA中国门户网站,GM?$Cz
4.    下一步是添加包含设计单元的文件,在工作区的Project page中,点击鼠标右键,选取Add File to Project。
G&i@oqS2N05.    在这次练习中我们加两个文件,点击Add File to Project对话框中的Browse按钮,打开ModelSim安装路径中的example目录,选取counter.v和tcounter.v,再选取Reference from current location,然后点击OK。EDA中国门户网站P$S3m\5oj[f5I
6.    在工作区的Project page中,单击右键,选取Compile All。
C{o7EOUS|Q07.    两个文件编译了,鼠标点击Library Tab栏,将会看到两个编译了的设计单元列了出来。看不到就要把Library的工作域设为work。EDA中国门户网站z3M9{+W+C ]K6X"E3B
8.    最后一不是导入一个设计单元,双击Library Tab中的counter,将会出现Sim Tab,其中显示了counter设计单元的结构。也可以Design\Load design来导入设计。
|H,Kb)uW8m1l0到这一步通常就开始运行仿真和分析,以及调试设计,不过这些工作在以后的课程中来完成。结束仿真选取Design \ End Simulation,结束Project选取File \ Close \ Project。EDA中国门户网站x L+E'U WGq5uv a

iE,X:nT yla k0第二课   Basic VHDL SimulationEDA中国门户网站"up4f Wwd)\/h:f
准备仿真EDA中国门户网站OC D!A#g3Q7`
1.    为这次练习新建一个目录,然后拷贝example目录中所有的vhd文件到该目录下。设置该目录为当前工作目录,这一步通过从该目录调用ModelSim或是选取File\Change Directory命令来完成。EDA中国门户网站 w.rw z;l!jjg
2.    在编译任何HDL代码前,要建立一个设计库来存放编译结果。选取Design \ Create a New Library生成一个新的设计库。确定选取Create: a new library and a logical mapping to it,在Library Name域中键入work,然后选取OK。这就在当前目录中建立了一个子目录,即你的设计库。ModelSim在这个目录中保存了名为_info的特殊文件。
s4u3WM!V3[0( Prompt : vlib workEDA中国门户网站c;O!M ui
vmap work work )EDA中国门户网站Ni F aSWf?x
3.    选取工具栏里的Compile命令来编译counter.vhd文件到新库中。这将打开Compile HDL Source Files对话框。使用vcom命令是看不到的。从列表中选取counter.vhd再点击Compile,完成后选取Done。可以编译多个文件,按照设计的需要依次选取进行编译。EDA中国门户网站;TxN3t zJ g5u
( Prompt : vcom counter.vhd )
#A0~.v6n%r04.    选取工具栏里的Load design按钮,导入设计单元。Load design对话框可以让你选择库和顶级( top-level )设计单元来仿真,你也可以为仿真选取Simulation Resolution限制。这次仿真运行,下述是缺省的显示:EDA中国门户网站7{^r(`+{7aj
• Simulator Resolution: default (the default is 1 ns)
)[C.}{*l [7NN0• Library: work
t+@]9s.t7_ Z0n8[-g0• Design Unit: counterEDA中国门户网站V {#| ufi%H2[
   如果设计单元是一个实体,你可以点击前面的加号,来浏览其关联的结构。
w5?[|'w.OFb }0   ( Prompt : vsim counter )
Y3q4nT?+agL05.    选取counter,然后选择Load接受设置。EDA中国门户网站4p3b{C/]I|G
6.    下面,选取View \ All打开所有的窗口,关于窗口的描述,参阅ModelSim User’s Manual。
Y!L3R)nL7~dZ0( Prompt : view * )
1vbf8f}cM07.    在Signals window选取View\List\Signals in Region,这个命令显示List window中的顶级( top-level )信号。
-xQ cW1G1i+}|0   ( Prompt : add list /counter/* )EDA中国门户网站6p+DtSui#n}f
8.    下步,通过从Signals window选取View\Wave\Signals in Region添加顶级( top-level )信号到Wave window。
7I5sG7DK W0   ( Prompt : add wave /counter/* )EDA中国门户网站U R)O{A,Q
运行仿真EDA中国门户网站$~_ ~lRCVAh
通过应用始终输入激励来开始仿真。
$nAb}j#l"qn01.    点击主窗口,在vsim提示符下敲如下面的命令:
9_0i }n ^#~r#]k$YU0   ( force clk 1 50 , 0 100 –repeat 100 )EDA中国门户网站|+l.i[*Rze9hr
   ( MENU : Signals\Edit\Clock )EDA中国门户网站:U/z]3\ I)I
   ModelSim解释force命令如下:
6d%PP[![7g/a0    force clk to the value 1 at 50 ns after the current time
On0K'K}~S0    then to 0 at 100 ns after the current time
o Ojxc0    repeat this cycle every 100 nsEDA中国门户网站b"^gF k zX0\a
2.    现在你可以练习来自于主窗口或波形窗口工具条按钮的两个不同的Run功能。(Run功能在主窗口和波形窗口中定义,即这两个窗口中有Run功能)。首先选取Run按钮,运行完成之后选取Run All。EDA中国门户网站 S.\(aptnQ{4Rk2q
Run.  运行仿真,在100ns后停止。EDA中国门户网站1e@{/X,V#u
(PROMPT: run 100) (MENU: Run \ Run 100ns)
,y V8g/i5eS9b#Z)X0Run-All.  一直运行仿真,直到选取Break。EDA中国门户网站,pV X7f PzL[
(PROMPT: run -all) (MENU: Run \ Run -All)
/ak&}k;gS&h$v03.    选取主窗口或波形窗口的Break按钮来中断仿真,一旦仿真到达一个可接受的停止点,它就停止运行。
5A G!sc;D0在源文件窗口中的箭头指向下一条将被执行的语句。(如果暂停发生时,仿真没在评测一个过程,则没有箭头显示在源文件窗口上)。
Y HHk;o@0下面,你将在18行的函数内部设置一个断点。EDA中国门户网站F/rL,sEl-z
4.    移动鼠标到源文件窗口,在18行上点击设置断点,可以看到紧挨着行号有一个红点,可以用鼠标点击切换断点的使能与否,断点禁止后看到是一个小的红色的园环。可以在断点上点击鼠标右键,选取Remove BreakPoint 18来取消断点。
"P yK4m%y6p0( PROMPT : bp counter.vhd 18 )
@{qfW4A05.    选取Continue Run按钮恢复中断了的运行,ModelSim会碰上断点,通过源文件中的一个箭头或是在主窗口中的一条中断信息来显示出来。EDA中国门户网站 _4~Z U~ J*r,v
   (PROMPT: run -continue) (MENU: Run \ Continue)
(yws f QH:^06.    点击Step按钮可以单步执行仿真,注意Variables window中值的变化。如果你愿意可以持续点击Step。
eD0gO1bs(]0   (PROMPT: run -step) (MENU: Step)EDA中国门户网站5]3l5jbl:_/G%d
7.    当你完成了,敲入以下命令结束仿真。
#R-uG#[rOS xjf0quit -forceEDA中国门户网站0p;~9I*u Q;@ xy ^O4|C
8.    命令没有寻求确认就结束了ModelSim。EDA中国门户网站mD&d)l*O ?2Z
第三课   Basic verilog Simulation
I2b)\.h1L%J0
T%FL k(}+hG(b01.    新建一个目录,并设置该目录为当前工作目录,通过从该目录调用ModelSim或是选取File\Change Directory命令来完成。
pqtlP02.    拷贝example目录中verilog文件到当前目录下。在你编译verilog文件前,你需要在新目录下生成一个设计库。如果你仅仅熟悉解释性verilog仿真器,诸如Cadence Verilog-XL,那么对于你来说这是一个新的方法。因为ModelSim是一个编译性Verilog仿真器,对于编译它需要一个目标设计库。如果需要的话,ModelSim能够编译VHDL和Verilog代码到同一个库中。EDA中国门户网站.LI/Eo+WD?
3.    在编译任何HDL代码前,要建立一个设计库来存放编译结果。选取Design \ Create a New Library生成一个新的设计库。确定选取Create: a new library and a logical mapping to it,在Library Name域中键入work,然后选取OK。这就在当前目录中建立了一个子目录,即你的设计库。ModelSim在这个目录中保存了名为_info的特殊文件。
7d(R T?mc X M0 ( Prompt : vlib workEDA中国门户网站5D Hr Ri[c"P
vmap work work )EDA中国门户网站8MFwI7{
4.    下面你将编译Verilog设计。
9A ^ d0这个设计例子由两个Verilog源文件组成,每一个都包含一个唯一的模块。文件counter.v包含一个名为counter的模块,它执行一个简单的八位加法计数器。另一个文件tcounter.v是一个测试台模块(test_counter),通常用来校验counter。在仿真下,你可以看到这两个文件,通过一个被测试台例示了的模块counter的一个简单的实例(名为dut的实例),来层次化的设置了。稍候你将有机会看一下这个代码的结构,现在,你需要编译两个文件到work设计库。
?~/N2_z"Jx0Km05.    通过选取工具条中的Compile按钮来编译两个文件。
:by{ ~U_Y;kd4S0   ( PROMPT : vlog counter.v tcounter.v )EDA中国门户网站2G,o F/Dao'P
   这就打开了Compile HDL Source Files对话框。EDA中国门户网站]+Y8@0A0r`H l
   选取两个文件后,选择Compile,编译完成后选取Done。EDA中国门户网站&h|l$uB@ x$TE*jV
6.    选取工具条中的Load Design按钮开始仿真。EDA中国门户网站*V9M+fPkbE U$J;_
   ( PROMPT : vsim test_counter )EDA中国门户网站Ej*_d$f b8F;j1_
   Load Design对话框允许你从指定的库中选取一个设计单元仿真。你也可以EDA中国门户网站TcKJScpV
   为仿真选取Simulation Resolution限制,缺省的库是work,缺省的Simulation Resolution是1ns。EDA中国门户网站2W8bi"Yb(P"UY
7.    选取test_counter,点击Load接受这些设置。EDA中国门户网站)A(|'g5e!cp${`Q#|
8.    通过在主窗口下的vsim提示符下敲入下述命令来调出Signals、List and Wave window:EDA中国门户网站4k[nM:n/M4E&J
   view signals list waveEDA中国门户网站#g6[T%}h7s%tGx
   (MENU: View\%IM&G*\'Z]09.    为了列示顶级( top-level )信号,移动鼠标到Signals window,选取View\List\Signals in Region。
q3W'R+Mk5T#o0   ( Prompt : add list /test_counter/* )
1P0\ b rO;`X V(V010.    现在向Wave window添加信号。在Signals window选取Edit\Select All选择三个信号,拖动三个信号到Wave window的路径名或是数值窗格的任一个中。
ro)V/m,?q d0HDL条目也能够从一个窗口拷贝到另一个窗口(或者是在Wave and List window内部),通过Edit \ Copy和Edit \ Paste菜单命令。也能删除选取的条目Edit \ Delete。EDA中国门户网站]F?#X'B;Lp!I+Vq
11.    下面打开Source window,选取View \ SourceEDA中国门户网站%E.W1qs$k9~5fo5~
   ( Prompt : view source )
;]V'wbs+w#M012.    导入设计的时候会在工作去开出一个新的Sim Tab栏。这个Structure Pane展示了设计的层次结构。你可以点即“+”(expand)或“-”(contract)来观察。
RgD'lHK013.    点击其中的Function increment可以注意到其他窗口是怎么适当的自动更新的。明确地说,Source window显示了你在Structure window所选的层次水平的Verilog代码.在这种方式下使用Structure Pane类似于解释性Verilog的范围命令。现在,点击Structure Pane的顶层线,确定test_counter模块显示在Source window。EDA中国门户网站?m,z+A[ F
运行仿真
;k#QQ5x"B01.    Run运行100ns,缺省设置。
\VC9d4B(Rk.BU0   (PROMPT: run ) (MENU: Run\Run 100ns)
w/d)Baa#q#k \;J$r02.    设置Run Length为500ns,然后Run。
,o[#TN M:Y0db0现在仿真运行了600ns,在工作取底部状态栏可以看到这些信息。EDA中国门户网站)SG,O oY
3.    上个命令使仿真器前进了500ns,也可以设置仿真器推进的时间
#me{.cz;?'P)IF0run @ 3000EDA中国门户网站J_ z5Wd
实际仿真器向前推进了2400ns(3000-600)EDA中国门户网站;VQ4A%gTyik#RrY
4.    选取主窗口Run All。EDA中国门户网站q o#CL*{!jl
   (PROMPT: run -all ) (MENU: Run\Run -All)EDA中国门户网站*OM6Bn x^wy%t
5.    选取Break中断运行。
cJe(eI yH-F0看Source window,察看中断执行的语句。EDA中国门户网站1Q)g?-J+{5P| DP
调试仿真EDA中国门户网站~B@'_)n:L;p
1.    在List window选取/test_counter/count。从List window菜单条中选取 Prop \ Signal Props。Modify Signal Properties (list) 对话框打开了。EDA中国门户网站MEO{(uKd
为信号counter选取十进制(在Radix),相应的List window的输出也发生改变,成为十进制数,而不是缺省的二进制了。EDA中国门户网站OR(M&];X&i-A
2.    我们选取工作区Structure Pane中的dut:counter,然后在counter.v中的30行(这里包含一个到Verilog功能增量的调用)设置断点。EDA中国门户网站!s m9^V%pr
3.    选取Restart按钮,重载设计组件和重置仿真时间为零。
?J%xa-jn0   (PROMPT: restart ) (MENU: File\Restart)EDA中国门户网站+| SV$jP^Sp n.|eg
   确认Restart对话框中所有条目被选中,然后点击Restart。EDA中国门户网站'^/F{ LdPlbs
   例子中的Verilog代码中19行有一个stop语句,如果不Restart的话,将会停EDA中国门户网站8i)@w*G,]2L8{
   在这一句上。EDA中国门户网站h7E%b `:^7W[;c o@u
4.    选取Run –All(主窗口),恢复执行仿真。中断后看Source window。EDA中国门户网站,Q.|8b}i3]
   (PROMPT: run -all ) (MENU: Run\Run -All)
+G,?"^i6V/H P'WP05.    正常的,当中断到达后你对一个或多个信号的值感兴趣,你有几个选项可以检测这些值。你能看显示在Signals window中的值;可以在Source window中,在变量上点右键;或者使用examine命令。EDA中国门户网站 Yt` VNG7g(Y
examine countEDA中国门户网站~ ZR"n \5gY8@'N@:\
命令的结果是,值会输出在主窗口。
}7a,m#{T1~:JL'p06.    执行单步跳使命令Step,遍历Verilog源函数。
'RkQ/M!J'S5_ s B07.    结束仿真的命令为:quit –force。EDA中国门户网站?vTw[[L8D N#q

/GiH`7t)yx3W0第四课   Mixed VHDL/verilog simulationEDA中国门户网站,Zo&JC_?[8J%l;J
准备仿真
&@,aE nI1R A01.    生成一个新的工作目录,拷贝..\examples\mixedhdl\下的*.vhd和*.v文件到新目录中。设置为为当前工作目录。运行软件,如果Welcome对话框出现,选取Proceed to ModelSim。EDA中国门户网站%l e&v%Q P*Cf&j p
2.    Select Design\Create a New LibraryEDA中国门户网站3YY.Pg DR;F MjE
(PROMPT:vlib work)
UBK3}-Z\0_:w@0Type Library Name:work
p^ u_ u0Select OK!EDA中国门户网站#N LW,d^6jN#C
3.    编译文件EDA中国门户网站 O5p0mr$U7o
(PROMPT : vlog cache.v memory.v proc.v)
,_F9q,h.f+qKF0(PROMPT : vcom util.vhd set.vhd top.vhd)
:C8G^&Lz P!~2n0打开Compile HDL Source Files对话框。 逐个编译Verilog文件。
9}exm)~5G;^.U(V0cache.v  memeory.v  proc.vEDA中国门户网站Yq,_qH,k+tIXQW
4.    依赖设计,VHDL的编译次序是特定的。在这个例子中,top.vhd文件必须最后编译。按照下面的顺序编译文件:
'H o LD Ow(] ?0util.vhd  set.vhd top.vhdEDA中国门户网站$F!m w N/np4]X0`
5.    编译完成,点Done。
bE;zyH0运行仿真EDA中国门户网站:R2KNU&B
1.    选取Load Design开始仿真。Load Design对话框打开,选取top实体点击Load。EDA中国门户网站SeGw.~b;l1k_v,h,T
(PROMPT : vsim top)
q9Yt5cO02.    View\All,(PROMPT : view *)
Y b\-V:n y:O03.    add list *
yYZLy\:b R"l9z#t]0add wave *EDA中国门户网站S7_zcE/@6O
(Signals MENU: View\List\Signals in Region)EDA中国门户网站(tnvGm\7R?
(Signals MENU: View\Wave\Signals in Region)
5K v}K6KKH#r04.    观察一下工作区的Structure pane。注意设计中两者的层次混合,VHDL级的用一个方框前缀指示,Verilog级的用一个圆形前缀指示。
yHYS&O6}D*cf05.    在Structure pane中点击模块c:cache,它的源代码出现在源文件窗口。EDA中国门户网站 Nt-^}6K;Zc] [W
6.    用查找功能定位cache.v文件中cache_set的声明。
h"xU7[roH8CX$h0Edit\Find。
.Fg.lx8j+pF#h0找到了可以发现,cache_set是cache.v文件内例示了的VHDL实体。
N/c6I$Yz@9_CDU07.    在Structure window,点击行“s0:cache_set(only)”。则Source window显示了cache_set实体的VHDL代码。
^0o4U:QS hDwf9r08.    Quit -forceEDA中国门户网站r#N)I V2\P
EDA中国门户网站vYZ0b(z+}XU:L
第五课   Debugging a VHDL simulation
:B,R9e ~6ns0准备仿真EDA中国门户网站M4{ge+A6|
1.    拷贝..\example\下的gates.vhd,adder.vhd,testadder.vhd文件到新建的工作目录,并定位为当前工作目录。EDA中国门户网站ky I0pK#z
2.    生成一个新库:vlib library_2。
7X P4yR9D[\1]4S03.    在命令行的方式下敲入以下命令将源文件编译到新库中EDA中国门户网站k6l2}wu
vcom –work library_2 gates.vhd adder.vhd testadder.vhd
(wd-@LbV&Rei04.    下一步是映射新库到工作库,可以编辑modelsim.ini文件来生成映射,或者用vmap命令生成一个逻辑库名字来完成。EDA中国门户网站 ^tYh9PZ4x
vmap work library_2EDA中国门户网站7}V4k{Kwn-V
ModelSim为你修改modelsim.ini文件。EDA中国门户网站J/A*hG6q&?
5.    选取Design\Load Design,打开Load Design对话框。EDA中国门户网站#{N8i*ql(nI
6.    确认simulation resolution为缺省;在设计单元中选取名为test_adder_structural的配置;单击Load接受设置。
+~z1pW0W0   (PROMPT : vsim –t ns work.test_adder_structural)EDA中国门户网站AU,p$ox#?{5Q(m
7.    打开所有的窗口。(PROMPT:View *)(MENU:View\All)EDA中国门户网站5q-O o0d/XbEmc#B
8.    在Signals window中选区所有信号Edit\Select All然后拖到List window中。EDA中国门户网站/gm,d3g}
   (MENU:View\List\Signals in Region) (PROMPT:add list *)EDA中国门户网站X YO*p ~*@uh"t7V
9.    同样地,把信号加到Wave window中。键入命令:add wave *
iq(A8rPb0   (MENU:View\Wave\Signals in Region)(DRAG&DROP)EDA中国门户网站2QN%s:_D^8a
10.    在主工具条上的运行时间选择器中,改变运行时间设置为1000ns。EDA中国门户网站 P+`!^lM"~"tZw
   (MENU:Option\Simulation\Defaults)EDA中国门户网站 x*J3XJ.Y^2b
运行调试仿真
K Z k2lJ01.    选取Run,运行仿真。(PROMPT:run)EDA中国门户网站1U1Ckz4Ahj.u(k
主窗口中的一条消息将通报你有一个判断错误。执行下面步骤查找错误。EDA中国门户网站XF/];d!Cy
2.    首先,改变仿真判断选项。选取Option\Simulation。
'[G:qu0M9{-l03.    选取Assertions页面。改变选择为Break on Assertion to Error并点击OK。这将使仿真停在HDL判断语句上。EDA中国门户网站 Q3u'J gX-f`&K[a
4.    选取Restart。(MENU:File\Restart) (PROMPT:restart)
j(}&sf*? b6V3`;k0确定Restart对话框中所有条目被选,然后点击Restart。EDA中国门户网站(dgH#Sx^a#}o
5.    选取Run。可以看到Source window中的箭头指向判断语句。EDA中国门户网站cL\8m;\n2S
   (MENU:Run\Run 1000 ns) (PROMPT:run)
;g DZz/|,U/u06.    在Variables window中,你可以看到i=6。这表示仿真停留在测试模式环路的第六次重复中。
LlO@'@8[/uf07.    点击加号“+”展开名为test_patterns的变量。EDA中国门户网站 ~5JG,r6M^2}
8.    也要展开排列test_patterns(6)的第六次纪录。
,P0mC/K+I0判断表明了Signal window中的 sum不等于Variables window中的sum字段。输入a,b和cin的和应该等于输出sum。但是在测试向量内有一个错误。为了改正这个错误,你需要重仿真且修改测试向量的初始值。EDA中国门户网站6hX\-B(Sg
9.    执行restart –f命令
a0K4R l `|`0参数-f使ModelSim不出现确认对话框就重新仿真。EDA中国门户网站e(Gxb? IFfy)Y
10.    在test Process window中选取 testbench process更新 Variables window。
0QrQ.Je{Q R+@011.    再次展开Variables window中的test_patterns和test_patterns(6)。点击变量名字,高亮显示.sum纪录,然后选取Edit\Change。EDA中国门户网站 YL5p r\LcD
12.    把value中数值的最后四位(1000),替换为0111,并点击Change。(这只是暂时编辑,你必须用文本编辑器永久地改变源代码。)
"s,[G:js!C$?-{q#I013.    选取Run。EDA中国门户网站 NIcw)~o*X
   (MENU:Run\Run 1 us) (PROMPT:run)EDA中国门户网站%n3krIay
   这样,仿真运行时就不会报错了。EDA中国门户网站+u X9^6Tgv^
改变new-line触发EDA中国门户网站M znP&Bo
缺省的,对于列出信号的每一次变化一条新线显示在List window中。下面的步骤将改变触发因而每100ns就列出这些值。
/Q5g_]|01.    在List window中,选取Prop\Display Props。EDA中国门户网站2npz3kI8eU
2.    在Triggers页面完成这些步骤。
P(SCs,gS!x gC0   •取消选取Trigger On:Signals以禁止在信号上触发
)@WXOQ(jn0   •选取Trigger On:Strobe以开启strobe
D hG-A mi!k0   •在Strobe Period域键入100
o#Q$tY#l0N!b#g0   •在First Strobe at域键入70
t(\"@*F*AqJ0   •单击OK接受设置EDA中国门户网站`])iqqX5I6i
3.    最后一步将把信号a,b和sum改为十进制。选取Prop\Signal Props,打开Modify Signal Properties(list)对话框。
J8Bzv [%g;S`:s04.    选取信号,改变其属性。然后结束ModelSim,quit –force。
Y'N$y;E2sz1vtjs0
be TA#U:p7v0第六课   Running a batch-mode simulation
oasF#jJ0批处理模式仿真必须运行在DOS或UNIX提示符下。EDA中国门户网站%@)K8J `V3z2ux
1.    生成一个新目录,设置成当前工作目录。拷贝..\examples\counter.vhd到该目录下。EDA中国门户网站+`!\lR#L-a(p5a c
2.    生成一个新的设计库:vlib work
)}"\,M%\:s'v MkY03.    映射库:vmap work workEDA中国门户网站 u8K6N'e,s1n/y
4.    编译源文件:vcom counter.vhd
KoiW3_h{$Xt05.    使用宏文件为计数器提供激励。拷贝..\example\stim.do文件到当前工作目录中。EDA中国门户网站-q/qq:M VY$r&D k
6.    生成批处理文件,内容为:EDA中国门户网站J2T%\!c$MQje7g
add list –decimal *EDA中国门户网站8x1SI,AER.hL
do stim.doEDA中国门户网站eN?t4tw
write list counter.lstEDA中国门户网站HX-J"Z N OQM[M
7.    执行下面的命令,运行批处理模式仿真:
'q9Fv Z/^ Y,wu0vsim –do yourfile –wlf saved.wlf counter
6jv"G7N+p0•在名为“counter”的设计单元调用vsim仿真器
%Pc!?dln&Sk;he0•通过-wlf这个可选项通知仿真器在名为saved.wlf的日志文件中保存仿真结果EDA中国门户网站){0ZoMQ6_e H
•运行yourfile指定:值以十进制的方式列示出来;执行名为stim.do的激励;并将结果写到名为counter.lst的文件中。缺省的设计名为counter。
%|'G`k"S6NX b08.    浏览仿真结果 vsim –view saved.wlf
ymV(kt:G)Hk09.    打开一些窗口 view signals list waveEDA中国门户网站e*D1E"i:@
10.    在窗口中放置信号 add wave *
@$JA~(c:A0                        add list *
%y jHA Zy*\011.    运用Variables windows实验保存的仿真结果。完成了结束仿真:EDA中国门户网站-W.|`#U1M&^@l
quit –f
9mjXUg0有关批处理和命令行模式更多的信息,请参阅ModelSim User’s Manual。EDA中国门户网站7G#cD&bBu"L Gn&t
EDA中国门户网站'[,f_p'R [dnR
第七课   Executing Commands at startup
nh,m-T7q/s$|/g%t0本课与第六课所介绍的工作于相同的目录,也是以命令行方式操作。EDA中国门户网站Fh$[*~ c x0?;})h
1.    这里将用到宏文件(DO)提供启动信息。拷贝..\examples\startup.do到当前工作目录。EDA中国门户网站VWg3JKA V
2.    拷贝modeltech目录下的modelsim.ini文件到当前工作目录。然后编辑该文件,指定一个在设计导入之后被执行的命令。用notepad打开ini文件,取消下属语句的注释,它位于文件的[vsim]部分:(修改后保存)
r V4|(|i5VG l!UT0Startup=do startup.doEDA中国门户网站Rc9r2H'[ i^
3.    浏览这个DO文件,可以发现它用了一个预定义变量$entity来为不同的设计在启动时作不同的事情。EDA中国门户网站5o~Aa4l Y8VGOH2c
4.    键入以下指令指定将被仿真的顶级设计单元,开始仿真:vsim counter
!I(A9S:Y:uJP;~-oe'Mf0注意到没有显示对话框仿真器就导入了设计单元。对于一再地仿真同一个设计单元,这样做是很便捷的。还可以注意到所有的窗口都打开了,这是因为命令view *包括在启动宏里面。EDA中国门户网站"O*o%^E'k N Y wJp
5.    结束ModelSim,执行quit –f命令。EDA中国门户网站 @R @tL,l!g r2f#\s
6.    在其他例子中是不需要startup.do文件的,所以用文本编辑器注释掉modelsim.ini文件中的Startup这一行。
b/q+g'AW%}"{0
%qH Mp-G,|C0第八课   Finding names and values
"N%R'GR/VhV0Finding items by name in tree windowsEDA中国门户网站suIF zh
你可以使用各个窗口(List,Process,Signal,Source,Structure,Variables,and Wave window)中的查找对话框找寻你需要的HDL条目。Edit\FindEDA中国门户网站E^ IA1L
Searching for item values in the List and Wave windowsEDA中国门户网站Xu;CYA
你可以在List and Wave windows中搜寻HDL条目的值。Edit\Search
8iEpZ0z6M-j'nd0你能够为Signal Name(s)定位值,搜寻基于以下的选项:
*K5{~0gad@$cE;U8\0•Search Type:Any Transition搜寻选取信号的任何变化
1z_y$f%fj/gC/~2?~0•Search Type:Rising Edge搜寻选取信号的上升沿EDA中国门户网站[0sC0]B2d(D4t
•Search Type:Falling Edge搜寻选取信号的下降沿EDA中国门户网站^Y3y f/A5U3k |
•Search Type:Search for Signal ValueEDA中国门户网站v8q[6y9W&l3i
搜寻Value域中指定的值(符合VHDL or Verilog的数值格式)
n4U)t$\!x2j[.`0•Search Type:Search for ExpressionEDA中国门户网站.aoAu^O7@G9_
搜寻评测一个布尔真值的Expression域中的表达式EDA中国门户网站$p)g;P3W1u AE
表达式可以调用一个以上的信号,但是限制在纪录于List windows上的信号。表达式可以包括常量、变量和Tcl宏。如果没有指定表达式,搜寻将返回一个错误。参阅ModelSim Command Reference以获取更多关于表达式语法的信息。
n} h `rC0•Search Options:Match CountEDA中国门户网站:avoTm.pxDIX
  你能够搜寻关于值的第n个变化或者是第n个匹配。Match Count指示了搜寻到的变化或匹配的数量。
!p4M1L?"X ?0•Search Options:Ignore GlitchesEDA中国门户网站nv+Syw8a"P:O
  忽略VHDL信号和Verilog网表中的零宽度的脉冲干扰。EDA中国门户网站"`"O:L$O)t(M B%Y
搜寻的结果显示在对话框的底部。
:w{`NZN0
`/b/~E1LZQ1r0第四章    使用中的注意事项
M-RV\kjb,a{0
@4BqT@ vXA'Co01.    如果打开ModelSim,没有出现Welcom to ModelSim对话框,可以在主窗口点击Help \ Enable Welcome,则以后打开ModelSim就会出现该对话框。
,UhGxwQ^3d02.    在工作区底部的状态栏里会显示一些有用的信息。
*p{b1X8ktJ Y p wc03.    操作哪个目录中的文件一定要定位到该目录,或者是设置为当前工作目录。
,S:d@3bab%EB8p |04.    不能用UNIX或window命令来生成work子目录,因为里面没有_info文件,只能用菜单或vlib命令。
b4M*{C(Z)u j!lB!L9r05.    断点只能设置在可执行的行上,这些行以绿色行号指示
.[%^L,nV!i r06.    在Basic Verilog Simulation一课里面,编译两个文件的次序是不重要的(不同于被编译器指示生成的源码的从属性)。Verilog-Xl的用户可能再次感到奇怪,他们了解设计单元之间的接口检测或是编译器指示的继承关系上可能存在的问题。ModelSim推迟了这样的检测,直到设计被导入。所以在这里,如果你选择在tcounter.v之前或之后编译counter.v不存在任何问题。
'c.o ]\3{ O }07.    一组Verilog文件可以以任意次序编译,但是在一个混合VHDL/Verilog设计中,Verilog文件必须在VHDL文件值前编译。
C e`:g-bN08.    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-12-01  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

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

RSS订阅

Open Toolbar