第一章介绍ModelSim的简要使用方法.docx

上传人:夺命阿水 文档编号:589741 上传时间:2023-09-01 格式:DOCX 页数:9 大小:43.75KB
返回 下载 相关 举报
第一章介绍ModelSim的简要使用方法.docx_第1页
第1页 / 共9页
第一章介绍ModelSim的简要使用方法.docx_第2页
第2页 / 共9页
第一章介绍ModelSim的简要使用方法.docx_第3页
第3页 / 共9页
第一章介绍ModelSim的简要使用方法.docx_第4页
第4页 / 共9页
第一章介绍ModelSim的简要使用方法.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《第一章介绍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的范

16、围命令。现在,点击StructurePane的顶层线,确定test_counter模块显示在Sourcewindow11运行仿真1 .RUn运行IOons,缺省设置。(PROMPT:run)(MENU:RunRun100ns)2 .设置RunLength为500ns,然后RUnC现在仿真运行了600ns,在工作取底部状态栏可以看到这些信息。3 .上个命令使仿真器前进了500ns,也可以设置仿真器推进的时间run3000实际仿真器向前推进了2400ns(3000-600)4 .选取主窗口RunAllo(PROMPT:run-all)(MENU:RunRun-All)5 .选取Break中断运行。

17、看SOUrCeWindow,察看中断执行的语句。调试仿真1 .在LiStWindOW选取/test_counter/count0从LiStWindoW菜单条中选取PropSignalPropsoModifySignalProperties(list)对话框打开了。为信号COUnter选取十进制(在Radix),相应的LiStWindOW的输出也发生改变,成为十进制数,而不是缺省的二进制了。2 .我们选取工作区StrUCtUrePane中的dut:CoUnter,然后在COUnter.v中的30行(这里包含一个到VerilOg功能增量的调用)设置断点。3 .选取ReStart按钮,重载设计组件和

18、重置仿真时间为零。(PROMPT:restart)(MENU:FileRestart)确认ReStart对话框中所有条目被选中,然后点击ReStartC例子中的VerilOg代码中19行有一个StoP语句,如果不ReStart的话,将会停在这一句上。4 .选取RUn-All(主窗口),恢复执行仿真。中断后看SOUrCewindowo(PROMPT:run-all)(MENU:RunRun-All)5 .正常的,当中断到达后你对一个或多个信号的值感兴趣,你有几个选项可以检测这些值。你能看显示在SignalSWindOW中的值;可以在SOurCewindow中,在变量上点右键;或者使用examin

19、e命令。examinecount命令的结果是,值会输出在主窗口。6 .执行单步跳使命令Step,遍历VeriIOg源函数。7 .结束仿真的命令为:quit-force0第四课MiXedVHDL/VerilogSimUIatiOn准备仿真1 .生成一个新的工作目录,拷贝examplesmixedhdl,下的*.vhd和*.v文件到新目录中。设置为为当前工作目录。运行软件,如果WelCOnIe对话框出现,选取ProceedtoModelSimo2 .SelectDesignCreateaNewLibrary(PROMPT:vlibwork)TypeLibraryNamezworkSelectOK!

20、3 .编译文件(PROMPT:vlogcache,vmemory,vproc,v)(PROMPT:vcom)打开CompileHDLSourceFiles对话框。逐个编译Verilog文件。cache,vmemeory.vproc,v4 .依赖设计,VHDL的编译次序是特定的。在这个例子中,文件必须最后编译。按照下面的顺序编译文件:5 .编译完成,点DOneC运行仿真1 .选取LOadDeSign开始仿真。LoadDeSign对话框打开,选取top实体点击Loadc(PROMPT:vsimtop)2 .ViewAll,(PROMPT:view)3 .addlistaddwave*(Signal

21、sMENU:ViewListSignalsinRegion)(SignalsMENU:ViewWaveSignalsinRegion)4 .观察一下工作区的StnlCturePane。注意设计中两者的层次混合,VHDL级的用一个方框前缀指示,Verilog级的用一个圆形前缀指示。5 .在StrUCtUrePane中点击模块c:CaChe,它的源代码出现在源文件窗口。6 .用查找功能定位cache.v文件中cache_set的声明。EditFindo找到了可以发现,cache_set是cache,v文件内例示了的VHDL实体。7 .在Structurewindow,点击行“sO:CaChe_se

22、t(Only)贝(jSourcewindow显示了cache_set实体的VHDL代码。8 .Quit-force第五课DebUggingaVHDLSimUIatiOn准备仿真1 .拷贝.example下的,文件到新建的工作目录,并定位为当前工作目录。2 .生成一个新库:vliblibrary_2o3 .在命令行的方式下敲入以下命各将源文件编译到新库中vcom-work1ibrary_24,下一步是映射新库到工作库,可以编辑文件来生成映射,或者用VmaP命令生成一个逻辑库名字来完成。vmapworklibrary_2ModelSinl为你修改攵:件。5 .选取DeSignLoadDesign,

23、打开LoadDeSign对话框。6 .确认simulationresolution为缺省;在设计单元中选取名为test_adder_structural的配置;单击LOad接受设置。(PROMPT:vsim-1ns_adder_structural)7 .打开所有的窗口。(PROMPT:View)(MENU:ViewAll)8 .在Signalswindow中选区所有信号EditSelectAll然后拖到Listwindow中。(MENU:ViewListSignalsinRegion)(PROMPTzaddlist)9 .同样地,把信号加到WaVeWindoW中。键入命令:addwave*(

24、MENU:ViewWaveSignalsinRegion)(DRAG&DROP)10 .在主工具条上的运行时间选择器中,改变运行时间设置为100Ons。(MENU:OptionSimulationDefaults)运行调试仿真1 .选取Rurb运行仿真。(PROMPT:run)主窗口中的一条消息将通报你有一个判断错误。执行下面步骤查找错误。2 .首先,改变仿真判断选项。选取OPtionSimulation。3 .选取Assertions页面。改变选择为BreakonAssertiontoError并点击OKo这将使仿真停在HDL判断语句上。4 .选取ReStart。(MENU:FileRest

25、art)(PROMPT:restart)确定Restart对话框中所有条目被选,然后点击Restart05 .选取RUn。可以看到SoUrCeWindOW中的箭头指向判断语句。(MENU:RunRun100Ons)(PROMPTzrun)6 .在VariabIeSWindOW中,你可以看到i=6。这表示仿真停留在测试模式环路的第六次重复中。7 .点击加号“十”展开名为test_patterns的变量。8 .也要展开排列test_PatternS(6)的第六次纪录。判断表明了Signalwindow中的sum不等于Variableswindow中的sum字段。输入a,b和Cin的和应该等于输出S

26、Um。但是在测试向量内有一个错误。为了改正这个错误,你需要重仿真且修改测试向量的初始值。9 .执行restart-f命令参数-f使ModelSim不出现确认对话框就重新仿真。10. 在testProcesswindow中选取testbenchprocess更新Variableswindowo11. 再次展开Variableswindow中的test_patterns和test-patterns(6)0点击变量名字,高亮显示.sum纪录,然后选取EditChange。12. 把VaIUe中数值的最后四位(1000),替换为OIIL并点击Change。(这只是暂时编辑,你必须用文本编辑器永久地改变

27、源代码。)13. 选取RunC(MENU:RunRun1us)(PROMPT:run)这样,仿真运行时就不会报错了。改变new-line触发缺省的,对于列出信号的每一次变化一条新线显示在LiStwindOW中。下面的步骤将改变触发因而每IoonS就列出这些值。1 .在LiStWindOW中,选取ProPDisplayPropsq2 .在TriggerS页面完成这些步骤。 取消选取TriggerOniSignals以禁止在信号上触发,选取TriggerOniStrobe以开启strobe 在StrobePeriod域键入100 在FirstStrobeat域键入70 单击OK接受设置3 .最后一

28、步将把信号a,b和SUm改为十进制。选取ProPSignalProps打开ModifySignalProPertieS(IiSt)对话框。4 .选取信号,改变其属性。然后结束MOdeISim,quit-force。第六课RUrmingabatch-modeSinlUlatiOn批处理模式仿真必须运行在DOS或UNIX提示符下。1 .生成一个新目录,设置成当前工作目录。拷贝.examples到该目录下。2 .生成一个新的设计库:vlibwork3 .映射库:vmapworkwork4 .编译源文件:vcom5 .使用宏文件为计数器提供激励。拷贝.example文件到当前工作目录中。6 .生成批处

29、理文件,内容为:addlist-decimal*dowritelist7 .执行下面的命令,运行批处理模式仿真:vsim-doyourfile-wlfcounter 在名为“counter”的设计单元调用VSim仿真器 通过-wlf这个可选项通知仿真器在名为的日志文件中保存仿真结果 运行yourfile指定:值以十进制的方式列示出来;执行名为的激励;并将结果写到名为的文件中。缺省的设计名为COUnteL8 .浏览仿真结果vsim-view9 .打开些窗口viewsignalslistwave10 .在窗口中放置信号addwave*addlist*11 .运用VariableSWindOWS实验

30、保存的仿真结果。完成了结束仿真:quit-f有关批处理和命令行模式更多的信息,请参阅MOdelSinIUser,sManualo第七课EXeCUtingCOlnmandSatStartUP本课与第六课所介绍的工作于相同的目录,也是以命令行方式操作。1 .这里将用到宏文件(DO)提供启动信息。拷贝.examples到当前工作目录。2 .拷贝的曲I%M目录下的文件到当前工作目录。然后编辑该文件,指定一个在设计导入之后被执行的命令。用notepad打开ini文件,取消下属语句的注释,它位于文件的vsim部分:(修改后保存)Startup=do3 .浏览这个Do文件,可以发现它用了一个预定义变量$en

31、tity来为不同的设计在启动时作不同的事情。4 .键入以下指令指定将被仿真的顶级设计单元,开始仿真:VSilncounter注意到没有显示对话框仿真器就导入了设计单元。对于一再地仿真同一个设计单元,这样做是很便捷的。还可以注意到所有的窗口都打开了,这是因为命令VieW*包括在启动宏里面。5 .结束ModelSinb执行quit-f命令。6 .在其他例子中是不需要文件的,所以用文本编辑器注释掉文件中的Startup这一行。第八课FindingnamesandValUeSFindingitemsbynameintreewindows你可以使用各个窗口(List,Process,Signal,Sou

32、rce,Structure,Variables,andWavewindow)中的查找对话框找寻你需要的HDL条目。EditFindSearchingforitemvaluesintheListandWavewindows你可以在LiStandWavewindows中搜寻HDL条目的值。EditSearch你能够为SignaIName(三)定位值,搜寻基于以下的选项:,SearchTyperAnyTranSition搜寻选取信号的任何变化 SearchTypezRisingEdge搜寻选取信号的上升沿 SearchTjrpezFallingEdge搜寻选取信号的下降沿,SearchType:Se

33、archforSignalValue搜寻ValUe域中指定的值(符合VHDLOrVeriIOg的数值格式) SearchType:SearchforExpression搜寻评测一个布尔真值的Expression域中的表达式表达式可以调用一个以上的信号,但是限制在纪录于LiStWirIdoWS上的信号。表达式可以包括常量、变量和TCl宏。如果没有指定表达式,搜寻将返回一个错误。参阅MOdeISinICommandReferenCe以获取更多关于表达式语法的信息。 SearchOptions:MatchCount你能够搜寻关于值的第n个变化或者是第n个匹配。MatchCount指示了搜寻到的变化或

34、匹配的数量。 SearchOptions:IgnoreGlitches忽略VHDL信号和Verilog网表中的零宽度的脉冲干扰。搜寻的结果显示在对话框的底部。第二章使用中的注意事项1 .如果打开MOdelSin1,没有出现的】COHtoIfodeIS加对话框,可以在主窗口点击HelPEnableWelcome,则以后打开MOdelSiln就会出现该对话框。2 .在工作区底部的状态栏里会显示一些有用的信息。3 .操作哪个目录中的文件一定要定位到该目录,或者是设置为当前工作目录。4 .不能用UNIX或WindOW命令来生成WOrk子目录,因为里面没有_力?e文件,只能用菜单或VIib命令。5 .断

35、点只能设置在可执行的行上,这些行以绿色行号指示6 .在BaSiCVerilogSimulation一课里面,编译两个文件的次序是不重要的(不同于被编译器指示生成的源码的从属性)。VerilOg71的用户可能再次感到奇怪,他们了解设计单元之间的接口检测或是编译器指示的继承关系上可能存在的问题。ModelSiIn推迟了这样的检测,直到设计被导入。所以在这里,如果你选择在tcountcr.V之前或之后编译CoUntCr.V不存在任何问题。7 .一组VerilOg文件可以以任意次序编译,但是在一个混合VHDL/Vcrilog设计中,VerilOg文件必须在VHDL文件值前编译。8 .force命令可以驱动elk,相当于给仿真初始化。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号