ModelSim SE简明操作指南Word文档下载推荐.docx
《ModelSim SE简明操作指南Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ModelSim SE简明操作指南Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
1.
第一次打开ModelSim会出现WelcometoModelSim对话框,选取CreateaProject,或者选取File\New\Project,然后会打开CreateProject对话框。
2.
在CreateProject对话框中,填写test作为ProjectName;
选取路径ProjectLocation作为Project文件的存储目录;
保留DefaultLibraryName设置为work。
3.
选取OK,会看到工作区出现ProjectandLibraryTab。
4.
下一步是添加包含设计单元的文件,在工作区的Projectpage中,点击鼠标右键,选取AddFiletoProject。
5.
在这次练习中我们加两个文件,点击AddFiletoProject对话框中的Browse按钮,打开ModelSim安装路径中的example目录,选取counter.v和tcounter.v,再选取Referencefromcurrentlocation,然后点击OK。
6.
在工作区的Projectpage中,单击右键,选取CompileAll。
7.
两个文件编译了,鼠标点击LibraryTab栏,将会看到两个编译了的设计单元列了出来。
看不到就要把Library的工作域设为work。
8.
最后一步是导入一个设计单元,双击LibraryTab中的counter,将会出现SimTab,其中显示了counter设计单元的结构。
也可以Design\Loaddesign来导入设计。
到这一步通常就开始运行仿真和分析,以及调试设计,不过这些工作在以后的课程中来完成。
结束仿真选取Design\EndSimulation,结束Project选取File\Close\Project。
第二课
BasicVHDLSimulation
准备仿真
为这次练习新建一个目录,然后拷贝example目录中所有的vhd文件到该目录下。
设置该目录为当前工作目录,这一步通过从该目录调用ModelSim或是选取File\ChangeDirectory命令来完成。
在编译任何HDL代码前,要建立一个设计库来存放编译结果。
选取Design\CreateaNewLibrary生成一个新的设计库。
确定选取Create:
anewlibraryandalogicalmappingtoit,在LibraryName域中键入work,然后选取OK。
这就在当前目录中建立了一个子目录,即你的设计库。
ModelSim在这个目录中保存了名为_info的特殊文件。
(Prompt:
vlibwork
vmapworkwork)
选取工具栏里的Compile命令来编译counter.vhd文件到新库中。
这将打开CompileHDLSourceFiles对话框。
使用vcom命令是看不到的。
从列表中选取counter.vhd再点击Compile,完成后选取Done。
可以编译多个文件,按照设计的需要依次选取进行编译。
vcomcounter.vhd)
选取工具栏里的Loaddesign按钮,导入设计单元。
Loaddesign对话框可以让你选择库和顶级(top-level)设计单元来仿真,你也可以为仿真选取SimulationResolution限制。
这次仿真运行,下述是缺省的显示:
•SimulatorResolution:
default(thedefaultis1ns)
•Library:
work
•DesignUnit:
counter
如果设计单元是一个实体,你可以点击前面的加号,来浏览其关联的结构。
vsimcounter)
选取counter,然后选择Load接受设置。
下面,选取View\All打开所有的窗口,关于窗口的描述,参阅ModelSimUser’sManual。
view*)
在Signalswindow选取View\List\SignalsinRegion,这个命令显示Listwindow中的顶级(top-level)信号。
addlist/counter/*)
下步,通过从Signalswindow选取View\Wave\SignalsinRegion添加顶级(top-level)信号到Wavewindow。
addwave/counter/*)
运行仿真
通过应用始终输入激励来开始仿真。
点击主窗口,在vsim提示符下敲如下面的命令:
(forceclk150,0100–repeat100)
(MENU:
Signals\Edit\Clock)
ModelSim解释force命令如下:
forceclktothevalue1at50nsafterthecurrenttime
thento0at100nsafterthecurrenttime
repeatthiscycleevery100ns
现在你可以练习来自于主窗口或波形窗口工具条按钮的两个不同的Run功能。
(Run功能在主窗口和波形窗口中定义,即这两个窗口中有Run功能)。
首先选取Run按钮,运行完成之后选取RunAll。
Run.
运行仿真,在100ns后停止。
(PROMPT:
run100)(MENU:
Run\Run100ns)
Run-All.
一直运行仿真,直到选取Break。
run-all)(MENU:
Run\Run-All)
选取主窗口或波形窗口的Break按钮来中断仿真,一旦仿真到达一个可接受的停止点,它就停止运行。
在源文件窗口中的箭头指向下一条将被执行的语句。
(如果暂停发生时,仿真没在评测一个过程,则没有箭头显示在源文件窗口上)。
下面,你将在18行的函数内部设置一个断点。
移动鼠标到源文件窗口,在18行上点击设置断点,可以看到紧挨着行号有一个红点,可以用鼠标点击切换断点的使能与否,断点禁止后看到是一个小的红色的园环。
可以在断点上点击鼠标右键,选取RemoveBreakPoint18来取消断点。
(PROMPT:
bpcounter.vhd18)
选取ContinueRun按钮恢复中断了的运行,ModelSim会碰上断点,通过源文件中的一个箭头或是在主窗口中的一条中断信息来显示出来。
run-continue)(MENU:
Run\Continue)
点击Step按钮可以单步执行仿真,注意Variableswindow中值的变化。
如果你愿意可以持续点击Step。
run-step)(MENU:
Step)
当你完成了,敲入以下命令结束仿真。
quit-force
命令没有寻求确认就结束了ModelSim。
第三课
BasicverilogSimulation
新建一个目录,并设置该目录为当前工作目录,通过从该目录调用ModelSim或是选取File\ChangeDirectory命令来完成。
拷贝example目录中verilog文件到当前目录下。
在你编译verilog文件前,你需要在新目录下生成一个设计库。
如果你仅仅熟悉解释性verilog仿真器,诸如CadenceVerilog-XL,那么对于你来说这是一个新的方法。
因为ModelSim是一个编译性Verilog仿真器,对于编译它需要一个目标设计库。
如果需要的话,ModelSim能够编译VHDL和Verilog代码到同一个库中。
下面你将编译Verilog设计。
这个设计例子由两个Verilog源文件组成,每一个都包含一个唯一的模块。
文件counter.v包含一个名为counter的模块,它执行一个简单的八位加法计数器。
另一个文件tcounter.v是一个测试台模块(test_counter),通常用来校验counter。
在仿真下,你可以看到这两个文件,通过一个被测试台例示了的模块counter的一个简单的实例(名为dut的实例),来层次化的设置了。
稍候你将有机会看一下这个代码的结构,现在,你需要编译两个文件到work设计库。
通过选取工具条中的Compile按钮来编译两个文件。
vlogcounter.vtcounter.v)
这就打开了CompileHDLSourceFiles对话框。
选取两个文件后,选择Compile,编译完成后选取Done。
选取工具条中的LoadDesign按钮开始仿真。
vsimtest_counter)
LoadDesign对话框允许你从指定的库中选取一个设计单元仿真。
你也可以
为仿真选取SimulationResolution限制,缺省的库是work,缺省的SimulationResolution是1ns。
选取test_counter,点击Load接受这些设置。
通过在主窗口下的vsim提示符下敲入下述命令来调出Signals、ListandWavewindow:
viewsignalslistwave
(MENU:
View\<
windowname\)
9.
为了列示顶级(top-level)信号,移动鼠标到Signalswindow,选取View\List\SignalsinRegion。
addlist/test_counter/*)
10.
现在向Wavewindow添加信号。
在Signalswindow选取Edit\SelectAll选择三个信号,拖动三个信号到Wavewindow的路径名或是数值窗格的任一个中。
HDL条目也能够从一个窗口拷贝到另一个窗口(或者是在WaveandListwindow内部),通过Edit\Copy和Edit\Paste菜单命令。
也能删除选取的条目Edit\Delete。
11.
下面打开Sourcewindow,选取View\Source
12.
导入设计的时候会在工作去开出一个新的SimTab栏。
这个StructurePane展示了设计的层次结构。
你可以点即“+”(expand)或“-”(contract)来观察。
13.
点击其中的Functionincrement可以注意到其他窗口是怎么适当的自动更新的。
明确地说,Sourcewindow显示了你在Structurewindow所选的层次水平的Verilog代码.在这种方式下使用StructurePane类似于解释性Verilog的范围命令。
现在,点击StructurePane的顶层线,确定test_counter模块显示在Sourcewindow。
Run运行100ns,缺省设置。
run)(MENU:
Run\Run100ns)
设置RunLength为500ns,然后Run。
现在仿真运行了600ns,在工作取底部状态栏可以看到这些信息。
上个命令使仿真器前进了500ns,也可以设置仿真器推进的时间
run@3000
实际仿真器向前推进了2400ns(3000-600)
选取主窗口RunAll。
run-all)(MENU:
Run\Run-All)
选取Break中断运行。
看Sourcewindow,察看中断执行的语句。
调试仿真
在Listwindow选取/test_counter/count。
从Listwindow菜单条中选取Prop\SignalProps。
ModifySignalProperties(list)对话框打开了。
为信号counter选取十进制(在Radix),相应的Listwindow的输出也发生改变,成为十进制数,而不是缺省的二进制了。
我们选取工作区StructurePane中的dut:
counter,然后在counter.v中的30行(这里包含一个到Verilog功能增量的调用)设置断点。
选取Restart按钮,重载设计组件和重置仿真时间为零。
restart)(MENU:
File\Restart)
确认Restart对话框中所有条目被选中,然后点击Restart。
例子中的Verilog代码中19行有一个stop语句,如果不Restart的话,将会停
在这一句上。
选取Run–All(主窗口),恢复执行仿真。
中断后看Sourcewindow。
正常的,当中断到达后你对一个或多个信号的值感兴趣,你有几个选项可以检测这些值。
你能看显示在Signalswindow中的值;
可以在Sourcewindow中,在变量上点右键;
或者使用examine命令。
examinecount
命令的结果是,值会输出在主窗口。
执行单步跳使命令Step,遍历Verilog源函数。
结束仿真的命令为:
quit–force。
第四课
MixedVHDL/verilogsimulation
生成一个新的工作目录,拷贝..\examples\mixedhdl\下的*.vhd和*.v文件到新目录中。
设置为为当前工作目录。
运行软件,如果Welcome对话框出现,选取ProceedtoModelSim。
SelectDesign\CreateaNewLibrary
vlibwork)
TypeLibraryName:
work
SelectOK!
编译文件
(PROMPT:
vlogcache.vmemory.vproc.v)
vcomutil.vhdset.vhdtop.vhd)
打开CompileHDLSourceFiles对话框。
逐个编译Verilog文件。
cache.v
memeory.v
proc.v
依赖设计,VHDL的编译次序是特定的。
在这个例子中,top.vhd文件必须最后编译。
按照下面的顺序编译文件:
util.vhd
set.vhdtop.vhd
编译完成,点Done。
选取LoadDesign开始仿真。
LoadDesign对话框打开,选取top实体点击Load。
vsimtop)
View\All,(PROMPT:
view*)
addlist*
addwave*
(SignalsMENU:
View\List\SignalsinRegion)
View\Wave\SignalsinRegion)
观察一下工作区的Structurepane。
注意设计中两者的层次混合,VHDL级的用一个方框前缀指示,Verilog级的用一个圆形前缀指示。
在Structurepane中点击模块c:
cache,它的源代码出现在源文件窗口。
用查找功能定位cache.v文件中cache_set的声明。
Edit\Find。
找到了可以发现,cache_set是cache.v文件内例示了的VHDL实体。
在Structurewindow,点击行“s0:
cache_set(only)”。
则Sourcewindow显示了cache_set实体的VHDL代码。
Quit-force
第五课
DebuggingaVHDLsimulation
拷贝..\example\下的gates.vhd,adder.vhd,testadder.vhd文件到新建的工作目录,并定位为当前工作目录。
生成一个新库:
vliblibrary_2。
在命令行的方式下敲入以下命令将源文件编译到新库中
vcom–worklibrary_2gates.vhdadder.vhdtestadder.vhd
下一步是映射新库到工作库,可以编辑modelsim.ini文件来生成映射,或者用vmap命令生成一个逻辑库名字来完成。
vmapworklibrary_2
ModelSim为你修改modelsim.ini文件。
选取Design\LoadDesign,打开LoadDesign对话框。
确认simulationresolution为缺省;
在设计单元中选取名为test_adder_structural的配置;
单击Load接受设置。
vsim–tnswork.test_adder_structural)
打开所有的窗口。
View*)(MENU:
View\All)
在Signalswindow中选区所有信号Edit\SelectAll然后拖到Listwindow中。
View\List\SignalsinRegion)(PROMPT:
addlist*)
同样地,把信号加到Wavewindow中。
键入命令:
View\Wave\SignalsinRegion)(DRAG&
DROP)
在主工具条上的运行时间选择器中,改变运行时间设置为1000ns。
Option\Simulation\Defaults)
运行调试仿真
选取Run,运行仿真。
(PROMPT:
run)
主窗口中的一条消息将通报你有一个判断错误。
执行下面步骤查找错误。
首先,改变仿真判断选项。
选取Option\Simulation。
选取Assertions页面。
改变选择为BreakonAssertiontoError并点击OK。
这将使仿真停在HDL判断语句上。
选取Restart。
File\Restart)(PROMPT:
restart)
确定Restart对话框中所有条目被选,然后点击Restart。
选取Run。
可以看到Sourcewindow中的箭头指向判断语句。
Run\Run1000ns)(PROMPT:
在Variableswindow中,你可以看到i=6。
这表示仿真停留在测试模式环路的第六次重