《第一章介绍ModelSim的简要使用方法.docx》由会员分享,可在线阅读,更多相关《第一章介绍ModelSim的简要使用方法.docx(9页珍藏版)》请在第一文库网上搜索。
1、第一章介绍Mode1Sim的简要使用方法第一课CJreateaProjeCt1 .第一次打开MOde1Si1n会出现We1CoD1etoMode1Sin1对话框,选取CreateaProject,或者选取Fi1eNewProject,然后会打开CreateProject对话框。2 .在CreatePrOjeCt对话框中,填写test作为PrOjeCtName;选取路径PrOjeCt1ocation作为Project文件的存储目录;保留Defau1t1ibraryName设置为worko3 .选取OK,会看到工作区出现PrOjeCtand1ibraryTabo4 .下一步是添加包含设计单元的文件
2、,在工作区的PrOjeCtPage中,点击鼠标右键,选取AddFi1etoProject。5 .在这次练习中我们加两个文件,点击AddFiIetoProject对话框中的Browse按钮,打开Mode1Sim安装路径中的examp1e目录,选取counter,v和tcountcr.v,再选取ReferenCefromcurrent1ocation,然后点击OK。6 .在工作区的ProjeCtPage中,单击右键,选取Co1nPi1eA1.1。7 .两个文件编译了,鼠标点击1ibraryTab栏,将会看到两个编译了的设计单元列了出来。看不到就要把1ibrary的工作域设为work08 .最后一不
3、是导入一个设计单元,双击1ibraryTab中的counter,将会出现SimTab,其中显示了counter设计单元的结构。也可以Design1oaddesign来导入设计。到这一步通常就开始运行仿真和分析,以及调试设计,不过这些工作在以后的课程中来完成。结束仿真选取DeSignEndSimu1ation,结束ProjCCt选取Fi1eC1oseProjecto第二课BaSiCVHD1SimU1ation准备仿真1 .为这次练习新建一个目录,然后拷贝examp1e目录中所有的Vhd文件到该目录下。设置该目录为当前工作目录,这一步通过从该目录调用MOde1Sim或是选取FiIeChangeDi
4、rectory命令来完成。2 .在编译任何HD1代码前,要建立一个设计库来存放编译结果。选取DeSignCreateaNew1ibrary生成一个新的设计库。确定选取Create:anew1ibraryanda1ogica1mappingtoit,在1ibraryName域中键入WOrk,然后选取OKo这就在当前目录中建立了一个子目录,即你的设计库。MOdeISim在这个目录中保存了名为一介的特殊文件。(Prompt:v1ibworkvmapworkwork)3 .选取工具栏里的ComPi1e命令来编译文件到新库中。这将打开COnIPiIeHD1SourceFi1es对话框。使用VCom命令是
5、看不到的。从列表中选取再点击Compi1e,完成后选取Done。可以编译多个文件,按照设计的需要依次选取进行编译。(Prompt:vcom)4 .选取工具栏里的1oaddesign按钮,导入设计单元。1oaddesign对话框可以让你选择库和顶级(top-1eve1)设计单元来仿真,你也可以为仿真选取SimUIatiOnReSOIUtion限制。这次仿真运行,下述是缺省的显示: Simu1atorReso1ution:defau1t(thedefau1tis1ns) 1ibrary:work DesignUnit:counter如果设计单元是一个实体,你可以点击前面的加号,来浏览其关联的结构。
6、(Prompt:vsimcounter)5 .选取COUnter,然后选择1Oad接受设置。6 .下面,选取ViewA11打开所有的窗口,关于窗口的描述,参悦MOdeISimUser,sManuaiYo(Prompt:view*)7 .在Signa1swindow选取ViewV1istXSigna1sinRegiont这个命令显示1istwindow中的顶级(top-1eve1)信号。(Prompt:add1ist/counter/*)8 .下步,通过从Sig1Ia1SWi11doW选取VieWWaveSigna1sinRegiO1I添加顶级(top-1eve1)信号至IJWavewindow
7、o(Prompt:addwave/counter/*)运行仿真通过应用始终输入激励来开始仿真。1点击主窗口,在vsim提示符下敲如下面的命令:(forcee1k150,0100-repeat100)(MENU:Signa1sEditCIock)Mode1Sim解释force命令如下: forcee1ktotheva1ue1at50nsafterthecurrenttime thento0at100nsafterthecurrenttime repeatthiscyc1eevery100ns2 .现在你可以练习来自于主窗口或波形窗口工具条按钮的两个不同的Run功能。(RUn功能在主窗口和波形窗口
8、中定义,即这两个窗口中有RiIn功能)。首先选取RIm按钮,运行完成之后选取RU11A11。Run.运行仿真,在IOOnS后停止。(PROMPT:run100)(MENU:RunRun100ns)Run-A11.一直运行仿真,直到选取Break。(PROMPT:run-a11)(MENU:RunRun-A11)3 .选取主窗口或波形窗口的Break按钮来中断仿真,一旦仿真到达一个可接受的停止点,它就停止运行。在源文件窗口中的箭头指向下一条将被执行的语句。(如果暂停发生时,仿真没在评测一个过程,则没有箭头显示在源文件窗口上)。下面,你将在18行的函数内部设置一个断点。4 .移动鼠标到源文件窗口,
9、在18行上点击设置断点,可以看到紧挨着行号有一个红点,可以用鼠标点击切换断点的使能与否,断点禁止后看到是一个小的红色的园环。可以在断点上点击鼠标右键,选取RemoVeBreakPOint18来取消断点。(PROMPT:bp18)5 .选取Corrtim1eRun按钮恢复中断了的运行,Mode1Sim会碰上断点,通过源文件中的一个箭头或是在主窗口中的一条中断信息来显示出来。(PROMPT:run-continue)(MENU:RunContinue)6 .点击SteP按钮可以单步执行仿真,注意Variab1eSWindOW中值的变化。如果你愿意可以持续点击Stepo(PROMPT:run-ste
10、p)(MENU:Step)7 .当你完成了,敲入以下命令结束仿真。quit-force8 .命令没有寻求确认就结束了Mode1Simo第三课BaSiCVeriIOgSimU1atiOn1 .新建一个目录,并设置该目录为当前工作目录,通过从该目录调用MOde1Si1n或是选取Fi1eChangeDirectory命令来完成。2 .拷贝examp1e目录中VCri1Og文件到当前目录下。在你编译VCriIog文件前,你需要在新目录下生成一个设计库。如果你仅仅熟悉解释性veri1og仿真器,诸如CadenceVeri1og-X1,那么对于你来说这是一个新的方法。因为MOde1Si1n是一个编译性Ve
11、ri1og仿真器,对于编译它需要一个目标设计库。如果需要的话,Mode1Sim能够编译VHD1和Veri1og代码到同一个库中。3 .在编译任何HD1代码前,要建立一个设计库来存放编译结果。选取DeSignCreateaNew1ibrary生成一个新的设计库。确定选取Create:anew1ibraryanda1ogica1mappingtoit,在1ibraryName域中键入WOrk,然后选取OKo这就在当前目录中建立了一个子目录,即你的设计库。MOdeISim在这个目录中保存了名为力&的特殊文件。(Prompt:v1ibworkvmapworkwork)4 .下面你将编译VCri1og设
12、计。这个设计例子由两个Veri1og源文件组成,每一个都包含一个唯一的模块。文件CoUnter.v包含一个名为counter的模块,它执行一个简单的八位加法计数器。另一个文件tcomter.V是一个测试台模块(test_counter),通常用来校验Countero在仿真下,你可以看到这两个文件,通过一个被测试台例示了的模块COUnter的一个简单的实例(名为dut的实例),来层次化的设置了。稍候你将有机会看一下这个代码的结构,现在,你需要编译两个文件到work设计库。5 .通过选取工具条中的COinPi1e按钮来编译两个文件。(PROMPT:v1ogcounter.Vtcounter.V)这
13、就打开了Compi1eHD1SourceFiieS对话框。选取两个文件后,选择COmPi1e,编译完成后选取Done。6 .选取工具条中的1OadDeSigi1按钮开始仿真。(PROMPT:vsimtest_counter)1oadDeSign对话框允许你从指定的库中选取一个设计单元仿真。你也可以为仿真选取Simu1ationReso1ution限制,缺省的库是WOrk,缺省的Simu1ationReso1utionIns07 .选取test_counter,点击1oad接受这些设置。8 .通过在主窗口下的vsim提示符下敲入下述命令来调出Signa1s1istandWavewindow:vi
14、ewsigna1s1istwave(MENU:Viewwindowname)9 .为了列示顶级(top1eve1)信号,移动鼠标到Signa1swindow,选取ViewX1istXSignaIsinRegion。(Prompt:add1istZtes1counter/*)10 .现在向Wavewindow添加信号。在Signa1swindow选取EditSe1ectA11选择三个信号,拖动三个信号到WaVeWindOW的路径名或是数值窗格的任一个中。HD1条目也能够从一个窗口拷贝到另一个窗口(或者是在Waveand1istwindow内部),通过EditCOPy和EditPaSte菜单命令。
15、也能删除选取的条目EditDe1eteo11 .下面打开Sourcewindow,选取ViewSource(Prompt:viewsource)12 .导入设计的时候会在工作去开出一个新的SimTab栏。这个StructurePane展示了设计的层次结构。你可以点即“+”(expand)或“-(ContraCt)来观察。13 .点击其中的Functionincrement可以注意到其他窗口是怎么适当的自动更新的。明确地说,Sourcewindow显示了你在Structurewindow所选的层次水平的Veri1og代码.在这种方式下使用StructurePane类似于解释性Veri1og的范围命令。现在,点击StructurePane的顶层线,确定test_counter模块显示在Sourcewindow运行仿真1 .RUn运行IOons,缺省设置。(PROMPT:run)(MENU:RunRun100ns)2 .设置Run1ength为500ns,然后RUnC现在仿真运行了600ns,在工作取底部状态栏可以看到这些信息。3 .上个命令使仿真器前进了500ns,也可以设置仿真器推进的时间run3000实际仿真器向前推进了2400ns(3000-600)4 .选取主窗口RunA11o(PROMPT