《第一章介绍ModelSim的简要使用方法.docx》由会员分享,可在线阅读,更多相关《第一章介绍ModelSim的简要使用方法.docx(9页珍藏版)》请在第壹文秘上搜索。
1、第一章介绍ModelSim的简要使用方法第一课CJreateaProjeCt1 .第一次打开MOdelSiln会出现WelCoDletoModelSinl对话框,选取CreateaProject,或者选取FileNewProject,然后会打开CreateProject对话框。2 .在CreatePrOjeCt对话框中,填写test作为PrOjeCtName;选取路径PrOjeCtLocation作为Project文件的存储目录;保留DefaultLibraryName设置为worko3 .选取OK,会看到工作区出现PrOjeCtandLibraryTabo4 .下一步是添加包含设计单元的文件
2、,在工作区的PrOjeCtPage中,点击鼠标右键,选取AddFiletoProject。5 .在这次练习中我们加两个文件,点击AddFiIetoProject对话框中的Browse按钮,打开ModelSim安装路径中的example目录,选取counter,v和tcountcr.v,再选取ReferenCefromcurrentlocation,然后点击OK。6 .在工作区的ProjeCtPage中,单击右键,选取ColnPileAl.1。7 .两个文件编译了,鼠标点击LibraryTab栏,将会看到两个编译了的设计单元列了出来。看不到就要把Library的工作域设为work08 .最后一不
3、是导入一个设计单元,双击LibraryTab中的counter,将会出现SimTab,其中显示了counter设计单元的结构。也可以DesignLoaddesign来导入设计。到这一步通常就开始运行仿真和分析,以及调试设计,不过这些工作在以后的课程中来完成。结束仿真选取DeSignEndSimulation,结束ProjCCt选取FileCloseProjecto第二课BaSiCVHDLSimUlation准备仿真1 .为这次练习新建一个目录,然后拷贝example目录中所有的Vhd文件到该目录下。设置该目录为当前工作目录,这一步通过从该目录调用MOdelSim或是选取FiIeChangeDi
4、rectory命令来完成。2 .在编译任何HDL代码前,要建立一个设计库来存放编译结果。选取DeSignCreateaNewLibrary生成一个新的设计库。确定选取Create:anewlibraryandalogicalmappingtoit,在LibraryName域中键入WOrk,然后选取OKo这就在当前目录中建立了一个子目录,即你的设计库。MOdeISim在这个目录中保存了名为一介的特殊文件。(Prompt:vlibworkvmapworkwork)3 .选取工具栏里的ComPile命令来编译文件到新库中。这将打开COnIPiIeHDLSourceFiles对话框。使用VCom命令是
5、看不到的。从列表中选取再点击Compile,完成后选取Done。可以编译多个文件,按照设计的需要依次选取进行编译。(Prompt:vcom)4 .选取工具栏里的Loaddesign按钮,导入设计单元。Loaddesign对话框可以让你选择库和顶级(top-level)设计单元来仿真,你也可以为仿真选取SimUIatiOnReSOIUtion限制。这次仿真运行,下述是缺省的显示: SimulatorResolution:default(thedefaultis1ns) 1.ibrary:work DesignUnit:counter如果设计单元是一个实体,你可以点击前面的加号,来浏览其关联的结构
6、。(Prompt:vsimcounter)5 .选取COUnter,然后选择LOad接受设置。6 .下面,选取ViewAll打开所有的窗口,关于窗口的描述,参悦MOdeISimUser,sManuaiYo(Prompt:view*)7 .在Signalswindow选取ViewVListXSignalsinRegiont这个命令显示Listwindow中的顶级(top-level)信号。(Prompt:addlist/counter/*)8 .下步,通过从SiglIalSWilldoW选取VieWWaveSignalsinRegiOlI添加顶级(top-level)信号到Wavewindowo
7、(Prompt:addwave/counter/*)运行仿真通过应用始终输入激励来开始仿真。1.点击主窗口,在vsim提示符下敲如下面的命令:(forceelk150,0100-repeat100)(MENU:SignalsEditCIock)ModelSim解释force命令如下: forceelktothevalue1at50nsafterthecurrenttime thento0at100nsafterthecurrenttime repeatthiscycleevery100ns2 .现在你可以练习来自于主窗口或波形窗口工具条按钮的两个不同的Run功能。(RUn功能在主窗口和波形窗口
8、中定义,即这两个窗口中有RiIn功能)。首先选取RIm按钮,运行完成之后选取RUllAl1。Run.运行仿真,在100nS后停止。(PROMPT:run100)(MENU:RunRun100ns)Run-All.一直运行仿真,直到选取Break。(PROMPT:run-all)(MENU:RunRun-All)3 .选取主窗口或波形窗口的Break按钮来中断仿真,一旦仿真到达一个可接受的停止点,它就停止运行。在源文件窗口中的箭头指向下一条将被执行的语句。(如果暂停发生时,仿真没在评测一个过程,则没有箭头显示在源文件窗口上)。下面,你将在18行的函数内部设置一个断点。4 .移动鼠标到源文件窗口,
9、在18行上点击设置断点,可以看到紧挨着行号有一个红点,可以用鼠标点击切换断点的使能与否,断点禁止后看到是一个小的红色的园环。可以在断点上点击鼠标右键,选取RemoVeBreakPOint18来取消断点。(PROMPT:bp18)5 .选取CorrtimleRun按钮恢复中断了的运行,ModelSim会碰上断点,通过源文件中的一个箭头或是在主窗口中的一条中断信息来显示出来。(PROMPT:run-continue)(MENU:RunContinue)6 .点击SteP按钮可以单步执行仿真,注意VariableSWindOW中值的变化。如果你愿意可以持续点击Stepo(PROMPT:run-ste
10、p)(MENU:Step)7 .当你完成了,敲入以下命令结束仿真。quit-force8 .命令没有寻求确认就结束了ModelSimo第三课BaSiCVeriIOgSimUlatiOn1 .新建一个目录,并设置该目录为当前工作目录,通过从该目录调用MOdelSiln或是选取FileChangeDirectory命令来完成。2 .拷贝example目录中VCrilOg文件到当前目录下。在你编译VCriIog文件前,你需要在新目录下生成一个设计库。如果你仅仅熟悉解释性verilog仿真器,诸如CadenceVerilog-XL,那么对于你来说这是一个新的方法。因为MOdelSiln是一个编译性Ve
11、rilog仿真器,对于编译它需要一个目标设计库。如果需要的话,ModelSim能够编译VHDL和Verilog代码到同一个库中。3 .在编译任何HDL代码前,要建立一个设计库来存放编译结果。选取DeSignCreateaNewLibrary生成一个新的设计库。确定选取Create:anewlibraryandalogicalmappingtoit,在LibraryName域中键入WOrk,然后选取OKo这就在当前目录中建立了一个子目录,即你的设计库。MOdeISim在这个目录中保存了名为力&的特殊文件。(Prompt:vlibworkvmapworkwork)4 .下面你将编译VCrilog设
12、计。这个设计例子由两个Verilog源文件组成,每一个都包含一个唯一的模块。文件CoUnter.v包含一个名为counter的模块,它执行一个简单的八位加法计数器。另一个文件tcomter.V是一个测试台模块(test_counter),通常用来校验Countero在仿真下,你可以看到这两个文件,通过一个被测试台例示了的模块COUnter的一个简单的实例(名为dut的实例),来层次化的设置了。稍候你将有机会看一下这个代码的结构,现在,你需要编译两个文件到work设计库。5 .通过选取工具条中的COinPile按钮来编译两个文件。(PROMPT:vlogcounter.Vtcounter.V)这
13、就打开了CompileHDLSourceFiieS对话框。选取两个文件后,选择COmPile,编译完成后选取Done。6 .选取工具条中的LOadDeSigil按钮开始仿真。(PROMPT:vsimtest_counter)1.oadDeSign对话框允许你从指定的库中选取一个设计单元仿真。你也可以为仿真选取SimulationResolution限制,缺省的库是WOrk,缺省的SimulationResolutionIns07 .选取test_counter,点击Load接受这些设置。8 .通过在主窗口下的vsim提示符下敲入下述命令来调出SignalsListandWavewindow:v
14、iewsignalslistwave(MENU:Viewwindowname)9 .为了列示顶级(toplevel)信号,移动鼠标到Signalswindow,选取ViewXListXSignaIsinRegion。(Prompt:addlistZtesLcounter/*)10 .现在向Wavewindow添加信号。在Signalswindow选取EditSelectAll选择三个信号,拖动三个信号到WaVeWindOW的路径名或是数值窗格的任一个中。HDL条目也能够从一个窗口拷贝到另一个窗口(或者是在WaveandListwindow内部),通过EditCOPy和EditPaSte菜单命令
15、。也能删除选取的条目EditDeleteo11 .下面打开Sourcewindow,选取ViewSource(Prompt:viewsource)12 .导入设计的时候会在工作去开出一个新的SimTab栏。这个StructurePane展示了设计的层次结构。你可以点即“+”(expand)或“-(ContraCt)来观察。13 .点击其中的Functionincrement可以注意到其他窗口是怎么适当的自动更新的。明确地说,Sourcewindow显示了你在Structurewindow所选的层次水平的Verilog代码.在这种方式下使用StructurePane类似于解释性Verilog的范围命令。现在,点击StructurePane的顶层线,确定test_counter模块显示在Sourcewindow11运行仿真1 .RUn运行IOons,缺省设置。(PROMPT:run)(MENU:RunRun100ns)2 .设置RunLength为500ns,然后RUnC现在仿真运行了600ns,在工作取底部状态栏可以看到这些信息。3 .上个命令使仿真器前进了500ns,也可以设置仿真器推进的时间run3000实际仿真器向前推进了2400ns(3000-600)4 .选取主窗口RunAllo(PROM