modelsim教程下转 modelsim10.0教程

第四课MixedVHDL/verilogsimulation
准备仿真
1.生成一个新的工作目录,拷贝..examplesmixedhdl下的*.vhd和*.v文件到新目录中。设置为为当前工作目录。运行软件,如果Welcome对话框出现,选取ProceedtoModelSim。
2.SelectDesignCreateaNewLibrary
(PROMPT:vlibwork)
TypeLibraryName:work
SelectOK!
3.编译文件
(PROMPT:vlogcache.vmemory.vproc.v)
(PROMPT:vcomutil.vhdset.vhdtop.vhd)
打开CompileHDLSourceFiles对话框。逐个编译Verilog文件。
cache.vmemeory.vproc.v
4.依赖设计,VHDL的编译次序是特定的。在这个例子中,top.vhd文件必须最后编译。按照下面的顺序编译文件:
util.vhdset.vhdtop.vhd
5.编译完成,点Done。
运行仿真
1.选取LoadDesign开始仿真。LoadDesign对话框打开,选取top实体点击Load。
(PROMPT:vsimtop)
2.ViewAll,(PROMPT:view*)
3.addlist*
addwave*
(SignalsMENU:ViewListSignalsinRegion)
(SignalsMENU:ViewWaveSignalsinRegion)
4.观察一下工作区的Structurepane。注意设计中两者的层次混合,VHDL级的用一个方框前缀指示,Verilog级的用一个圆形前缀指示。
5.在Structurepane中点击模块c:cache,它的源代码出现在源文件窗口。
6.用查找功能定位cache.v文件中cache_set的声明。
EditFind。
找到了可以发现,cache_set是cache.v文件内例示了的VHDL实体。
7.在Structurewindow,点击行“s0:cache_set(only)”。则Sourcewindow显示了cache_set实体的VHDL代码。
8.Quit-force

第五课DebuggingaVHDLsimulation
准备仿真
1.拷贝..example下的gates.vhd,adder.vhd,testadder.vhd文件到新建的工作目录,并定位为当前工作目录。
2.生成一个新库:vliblibrary_2。
3.在命令行的方式下敲入以下命令将源文件编译到新库中
vcom–worklibrary_2gates.vhdadder.vhdtestadder.vhd
4.下一步是映射新库到工作库,可以编辑modelsim.ini文件来生成映射,或者用vmap命令生成一个逻辑库名字来完成。
vmapworklibrary_2
ModelSim为你修改modelsim.ini文件。
5.选取DesignLoadDesign,打开LoadDesign对话框。
6.确认simulationresolution为缺省;在设计单元中选取名为test_adder_structural的配置;单击Load接受设置。
(PROMPT:vsim–tnswork.test_adder_structural)
7.打开所有的窗口。(PROMPT:View*)(MENU:ViewAll)
8.在Signalswindow中选区所有信号EditSelectAll然后拖到Listwindow中。
(MENU:ViewListSignalsinRegion)(PROMPT:addlist*)
9.同样地,把信号加到Wavewindow中。键入命令:addwave*
(MENU:ViewWaveSignalsinRegion)(DRAG&DROP)
10.在主工具条上的运行时间选择器中,改变运行时间设置为1000ns。
(MENU:OptionSimulationDefaults)
运行调试仿真
1.选取Run,运行仿真。(PROMPT:run)
主窗口中的一条消息将通报你有一个判断错误。执行下面步骤查找错误。
2.首先,改变仿真判断选项。选取OptionSimulation。
3.选取Assertions页面。改变选择为BreakonAssertiontoError并点击OK。这将使仿真停在HDL判断语句上。
4.选取Restart。(MENU:FileRestart)(PROMPT:restart)
确定Restart对话框中所有条目被选,然后点击Restart。
5.选取Run。可以看到Sourcewindow中的箭头指向判断语句。
(MENU:RunRun1000ns)(PROMPT:run)
6.在Variableswindow中,你可以看到i=6。这表示仿真停留在测试模式环路的第六次重复中。
7.点击加号“+”展开名为test_patterns的变量。
8.也要展开排列test_patterns(6)的第六次纪录。
判断表明了Signalwindow中的sum不等于Variableswindow中的sum字段。输入a,b和cin的和应该等于输出sum。但是在测试向量内有一个错误。为了改正这个错误,你需要重仿真且修改测试向量的初始值。
9.执行restart–f命令
参数-f使ModelSim不出现确认对话框就重新仿真。
10.在testProcesswindow中选取testbenchprocess更新Variableswindow。
11.再次展开Variableswindow中的test_patterns和test_patterns(6)。点击变量名字,高亮显示.sum纪录,然后选取EditChange。
12.把value中数值的最后四位(1000),替换为0111,并点击Change。(这只是暂时编辑,你必须用文本编辑器永久地改变源代码。)
13.选取Run。
(MENU:RunRun1us)(PROMPT:run)
这样,仿真运行时就不会报错了。
改变new-line触发
缺省的,对于列出信号的每一次变化一条新线显示在Listwindow中。下面的步骤将改变触发因而每100ns就列出这些值。
1.在Listwindow中,选取PropDisplayProps。
2.在Triggers页面完成这些步骤。
•取消选取TriggerOn:Signals以禁止在信号上触发
•选取TriggerOn:Strobe以开启strobe
•在StrobePeriod域键入100
•在FirstStrobeat域键入70
•单击OK接受设置
3.最后一步将把信号a,b和sum改为十进制。选取PropSignalProps,打开ModifySignalProperties(list)对话框。
4.选取信号,改变其属性。然后结束ModelSim,quit–force。

第六课Runningabatch-modesimulation
批处理模式仿真必须运行在DOS或UNIX提示符下。
1.生成一个新目录,设置成当前工作目录。拷贝..examplescounter.vhd到该目录下。
2.生成一个新的设计库:vlibwork
3.映射库:vmapworkwork
4.编译源文件:vcomcounter.vhd
5.使用宏文件为计数器提供激励。拷贝..examplestim.do文件到当前工作目录中。
6.生成批处理文件,内容为:
addlist–decimal*
dostim.do
writelistcounter.lst
7.执行下面的命令,运行批处理模式仿真:
vsim–doyourfile–wlfsaved.wlfcounter
•在名为“counter”的设计单元调用vsim仿真器
•通过-wlf这个可选项通知仿真器在名为saved.wlf的日志文件中保存仿真结果
•运行yourfile指定:值以十进制的方式列示出来;执行名为stim.do的激励;并将结果写到名为counter.lst的文件中。缺省的设计名为counter。
8.浏览仿真结果vsim–viewsaved.wlf
9.打开一些窗口viewsignalslistwave
10.在窗口中放置信号addwave*
addlist*
11.运用Variableswindows实验保存的仿真结果。完成了结束仿真:
quit–f
有关批处理和命令行模式更多的信息,请参阅ModelSimUser’sManual。

第七课ExecutingCommandsatstartup
本课与第六课所介绍的工作于相同的目录,也是以命令行方式操作。
1.这里将用到宏文件(DO)提供启动信息。拷贝..examplesstartup.do到当前工作目录。
2.拷贝modeltech目录下的modelsim.ini文件到当前工作目录。然后编辑该文件,指定一个在设计导入之后被执行的命令。用notepad打开ini文件,取消下属语句的注释,它位于文件的[vsim]部分:(修改后保存)
Startup=dostartup.do
3.浏览这个DO文件,可以发现它用了一个预定义变量$entity来为不同的设计在启动时作不同的事情。
4.键入以下指令指定将被仿真的顶级设计单元,开始仿真:vsimcounter
注意到没有显示对话框仿真器就导入了设计单元。对于一再地仿真同一个设计单元,这样做是很便捷的。还可以注意到所有的窗口都打开了,这是因为命令view*包括在启动宏里面。
5.结束ModelSim,执行quit–f命令。
6.在其他例子中是不需要startup.do文件的,所以用文本编辑器注释掉modelsim.ini文件中的Startup这一行。

第八课Findingnamesandvalues
Findingitemsbynameintreewindows
你可以使用各个窗口(List,Process,Signal,Source,Structure,Variables,andWavewindow)中的查找对话框找寻你需要的HDL条目。EditFind
SearchingforitemvaluesintheListandWavewindows
你可以在ListandWavewindows中搜寻HDL条目的值。EditSearch
你能够为SignalName(s)定位值,搜寻基于以下的选项:
•SearchType:AnyTransition搜寻选取信号的任何变化
•SearchType:RisingEdge搜寻选取信号的上升沿
•SearchType:FallingEdge搜寻选取信号的下降沿
•SearchType:SearchforSignalValue
搜寻Value域中指定的值(符合VHDLorVerilog的数值格式)
•SearchType:SearchforExpression
modelsim教程下[转] modelsim10.0教程
搜寻评测一个布尔真值的Expression域中的表达式
表达式可以调用一个以上的信号,但是限制在纪录于Listwindows上的信号。表达式可以包括常量、变量和Tcl宏。如果没有指定表达式,搜寻将返回一个错误。参阅ModelSimCommandReference以获取更多关于表达式语法的信息。
•SearchOptions:MatchCount
你能够搜寻关于值的第n个变化或者是第n个匹配。MatchCount指示了搜寻到的变化或匹配的数量。
•SearchOptions:IgnoreGlitches
忽略VHDL信号和Verilog网表中的零宽度的脉冲干扰。
搜寻的结果显示在对话框的底部。

第四章使用中的注意事项

1.如果打开ModelSim,没有出现WelcomtoModelSim对话框,可以在主窗口点击HelpEnableWelcome,则以后打开ModelSim就会出现该对话框。
2.在工作区底部的状态栏里会显示一些有用的信息。
3.操作哪个目录中的文件一定要定位到该目录,或者是设置为当前工作目录。
4.不能用UNIX或window命令来生成work子目录,因为里面没有_info文件,只能用菜单或vlib命令。
5.断点只能设置在可执行的行上,这些行以绿色行号指示
6.在BasicVerilogSimulation一课里面,编译两个文件的次序是不重要的(不同于被编译器指示生成的源码的从属性)。Verilog-Xl的用户可能再次感到奇怪,他们了解设计单元之间的接口检测或是编译器指示的继承关系上可能存在的问题。ModelSim推迟了这样的检测,直到设计被导入。所以在这里,如果你选择在tcounter.v之前或之后编译counter.v不存在任何问题。
7.一组Verilog文件可以以任意次序编译,但是在一个混合VHDL/Verilog设计中,Verilog文件必须在VHDL文件值前编译。
8.force命令可以驱动clk,相当于给仿真初始化。

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/56510.html

更多阅读

徐文兵解读《金匮真言论》十二讲下转 素问金匮真言论

梁冬:重新发现,中医太美。继续回来,刚才还是这个和徐文兵老师一起来学习。刚才讲到啊,这个话题,讲到呢,这个不同的五脏,就是五脏呢,去应不同的四时,应不同的这个五行啊,尤其东方,从东方开始讲起,“东方青色,入通于肝,开窍于目,藏精于肝,其病发惊骇…

HDGraphics4000终于在win7下支持OpenGL4.0 opengl sdk4.0下载

intel的驱动设计水平欠佳,一直是长久以来困扰intel的严重问题。一款新的硬件往往硬件已经都设计支持某些功能了,但是由于驱动编写的问题,往往总要在发布后很久才会得到真正支持。有的甚至就最后扯皮耍赖,没有了~~这样的事情并不是没有发生

美国漫画英雄介绍下(转) 美国队长英雄内战漫画

美国漫画英雄·美国漫画英雄·神奇四侠1961年11月由Stan Lee(本名Stanley Martin Lieber,StanLee是他的笔名。他也是Marvel的创始人)创意,Jack Kirby绘画,SteveDitko负责对话编写的第一期的神奇四侠漫画诞生了。漫画发行后给很快就被

声明:《modelsim教程下转 modelsim10.0教程》为网友北覓想妳的夜分享!如侵犯到您的合法权益请联系我们删除