《用Model技术公司的ModelSim做分析设计方案.ppt》由会员分享,可在线阅读,更多相关《用Model技术公司的ModelSim做分析设计方案.ppt(73页珍藏版)》请在三一办公上搜索。
1、1,用Model技术公司的ModelSim做分析设计,更多内容请访问http:/,2,典型的PLD设计流程,3,系统产品,设计规范,典型的PLD流程,设计输入,RTL仿真,设计综合,门级仿真,布局和布线,时序分析,系统上验证,修改设计,4,典型的PLD设计流程,设计输入设计的行为或结构描述RTL仿真(ModelSim)功能仿真验证逻辑模型(没有使用时间延迟)可能要求编辑设计综合把设计翻译成原始的目标工艺最优化合适的面积要求和性能要求布局和布线 映射设计到目标工艺里指定位置 指定的布线资源应被使用,5,典型的PLD设计流程,门级仿真(ModelSim)时序仿真验证设计一旦编程或配置将能在目标工艺
2、里工作可能要求编辑设计时序分析验证合乎性能规范可能要求编辑设计版图设计仿真版图设计在板编程和测试器件,6,ModelSim概览,ModelSim 仿真工具,由Model技术公司开发工业上最通用的仿真器之一可在Verilog 和 VHDL仿真OEM版本允许Verilog仿真 或者 VHDL 仿真,8,ModelSim 产品,ModelSim/VHDL 或者 ModelSim/VerilogOEM ModelSim/LNL许可 Verilog 或者 VHDL,但是不同时许可ModelSim/PLUS设计者能立刻混合仿真Verilog 和 VHDLModelSim/SE首要的版本PLUS的所有功能连
3、同附加功能,9,ModelSim OEM 功能,提供完全的标准87 VHDL93 VHDLIEEE 1364-95 VerilogSDF 1.0-3.0VITAL 2.2bVITAL 95易用的界面通用的平台,10,用ModelSim仿真,课程安排,基本的仿真步骤用户界面功能仿真Quartus输出仿真文件时序仿真,12,Model 技术公司的 ModelSim,main主窗口:,structure结构窗口,process处理窗口:,Signal&variable信号和变量窗口,dataflow数据流窗口,source源窗口,Wave&list波形和列表窗口,13,ModelSim实现方法,交互
4、式的命令行(Cmd)唯一的界面是控制台的命令行,没有用户界面用户界面(UI)能接受菜单输入和命令行输入课程主要讨论批处理模式从DOS或UNIX命令行运行批处理文件不讨论,14,基本仿真步骤,1 建立库2 映射库到物理目录3 编译源代码-所有的HDL代码必须被编译-Verilog和VHDL是不同的4 启动仿真器5 执行仿真,15,1 建立ModelSim库,UI)从主菜单里面:Design-Create a New LibraryCmd)从main,记录窗口:ModelSim vlib,16,ModelSim 库,包含编译设计单元的目录VHDL 和 Verilog 都被编译到库里两个类型Work
5、ing(缺省值 work)包含当前被编译的设计单元编译前必须建立一个working库每个编译只允许一个Resource包含能被当前编译引用的设计单元在编译期间允许多个VHDL库能通过LIBRARY和USE子句引用,17,ModelSim 设计单元,主要在一个特定的库中必须有唯一的名字VHDLEntities(实体)Package Declarations(包声明)Configurations(结构)VerilogModules(模块)User Defined Primitives(用户定义原语),次要在相同的库里单元可以用一个普通名称VHDLArchitectures(体系)Package b
6、odiesVerilog没有次要单元,18,VHDLLibrary std 包含packages standard 和 textio这些packages初学者不要去修改IEEEpure包含唯一IEEE 认可的 std_logic_1164 packages用于仿真加速IEEE包含预编译的Synopsys和IEEE 算法包给std_logic的基本类型用于仿真加速,VHDL 预先确定库,19,vlib 命令,建立库缺省值是 work,_info,any_verilog_module,any_vhdl_unit,_lock,_primary.dat_primary.vhdverilog.asm,_
7、primary.dat.dat.asm,Where_primary.dat-Verilog module 或 VHDL entity的编码格式_primary.vhd-Verilog 端口的VHDL entity陈述.dat-VHDL体系的编码格式verilog.asm 和.asm 执行代码文件,20,建立库(UI),选择 a new library only 和输入库名,这个命令在局部目录建立一个库子目录,-vlib lpm_sim,21,映射逻辑库名,必须映射一个逻辑库名到库路径(定位)在库路径里的文件必须已经被编译支持相对的,绝对的,和软件路径名需要库在工作目录里没有定位用vmap命令,
8、22,2 映射逻辑库名,语法:vmap,UI)从主菜单:Design-Browse Libraries Design-Create a New LibraryCmd)从主体的记录窗口:ModelSim vmap my_work c:/my_design/my_lib,23,映射现有的库(UI),选择 a map to an existing library 和输入库名,浏览库目录,用这个命令可映射一个设计单元已经预编译的库目录,-vmap lpm_sim c:/Quartus/library/lpm,24,映射现有的库(UI),选择 a new library and a logical ma
9、pping to it a输入库名,这个命令在局部目录建立一个库目录然后为它设立映射,-vlib my_lib-vmap my_lib my_lib,25,映射库(UI),用Add 按钮建立一个新的库和映射,26,其他的库命令,vdel从指定的库中删除一个完整的库或者一个设计单元UI)Design-Library Browser(删除库或者映射)UI)Design-View Library Contents(删除设计单元)Cmd)vdel-lib vdir显示指定库的内容UI)Design-View Library ContentsCmd)vdir-lib,27,3 编译源代码(VHDL),U
10、I)Design-CompileCmd)vcom-work.vhd.vhd文件按出现的顺序被编译Compilation order/dependencies(next slide)87 VHDL是缺省的UI)用Default Options 按钮设为93Cmd)用-93 选项(必须是第一个参数)缺省编译到工作库例如.Vcom-93 my_design.vhd,注意:当库中涉及的设计单元被改变时设计单元必须重新分析。,28,VHDL Design Units Dependencies,Entity before ArchitecturePackage Declaration before Pac
11、kage BodyDesign units must compiled before being referencedPackages before Entity/Architectures using themEntities/Configurations before Architectures referencing themConfigurations are compiled last,29,3 编译源代码(Verilog),UI)Design-CompileCmd)vlog-work.v.v文件按出现的顺序被编译文件的顺序或者编辑的顺序不重要支持增量式编译缺省编译到work库例如.
12、vlog my_design.v,注意:当库中涉及的设计单元被改变时设计单元必须重新分析。,30,Verilog 增量编译,只有被改变的设计单元被编译自动或者手动手动更有效自动在命令行用-incr 选项Module 和 UDP实例和 hierarchical references可在仿真时解决一些错误在编辑时将不能察觉引用的模块没有编译不正确的端口连接不正确的hierarchical references,31,编译(UI),点亮一个或多个文件并点击 Compile,32,错误信息,错误信息在 Main 窗口显示,在信息上双击,引起错误的代码在 Source 窗口被点亮,33,4 启动仿真器,
13、UI)Design-Load New DesignCmd)vsim-lib VHDLvsim top_entity top_architecture仿真 Entity/Architecture 对也能选择一个结构Verilogvsim top_level1 top_level2仿真多个top级模块,34,启动仿真器(UI),选择仿真器的分辨率,选择库,选择顶级module 或 entity/architecture,35,启动仿真器(UI),指定 SDF文件,使用定时值的等级的类型(如果不是顶级),36,vsim 命令的参数,参数-t 指定仿真的时间分辨率单位可以是fs,ps,ns,ms,se
14、c,min,hr如果用了 Verilog的 timescale指令,将使用整个设计中的最小的时间精度可选项(缺省是 ns)-sdfmin|-sdftyp|-sdfmax=注释SDF文件可选项使用实例名也是可选项;如果没有使用,SDF用于顶级,37,5 执行仿真,UI)RunCOM)run 按timesteps指定的时间长度执行仿真,38,执行仿真(UI),选择 timesteps数量就可以执行仿真,Restart 重装任何已改动的设计元素并把仿真时间设为零COM)restart,39,run 命令参数,可选的参数-指定运行的timesteps数量单位可用fs,ps,ns,ms,sec-step
15、Steps to the next HDL statement-continue继续上次在-step或断点后的仿真-all运行仿真器直到没有其他的事件,40,run 命令举例,run 1000从当前位置运行仿真 1000 timestepsrun 2500 ns从当前位置运行仿真2500 nsrun 3000运行仿真到 timestep 3000,41,仿真器激励,测试台Verilog 或 VHDL非常复杂的仿真 交互式仿真force命令简单的模块仿真直接从命令控制台输入.DO 文件(宏文件),42,force 命令,允许用户给VHDL信号和Verilog线网予以激励常规语法:force,参数
16、item_name被激励的HDL项的名称必需的必须是一个Must be a scalar or one-dimensional array of charactersCan be an indexed array,array slice,or record sub-element as long as its of the above typeCan use wildcards as long as only one match is obtained,43,force 命令(继续),其他参数value被强制的项的值必须适合项的数据类型必需的time指定值的时间单位相对于当前的仿真时间用 ch
17、aracter指定绝对时间时间单位能被指定缺省值是仿真分辨率可选的,44,force 命令(继续.),其他参数-repeat 在指定周期重复force命令可选的-cancel 在指定周期后取消强制force命令可选的,45,force 命令举例,force clr 0在当前仿真时间强制 clr 到 0force bus1 01XZ 100 ns在当前仿真时间后100ns强制 bus1到 01XZforce bus2 16#4F 200仿真启动后强制 bus2到 4F直到200时间单位,分辨率在仿真启动时选择force clk 0 0,1 20-repeat 50-cancel 1000在当前仿
18、真后0时间单位强制clk到0和在20时间单位强制到1.每50时间单位重复直到1000.因此,下一个 1 将在70时间单位发生force clk2 1 10 ns,0 20 ns-r 100 ns和上一个例子相似。-r前面的时间单位表达式必须放在大括号里,46,DO 文件,自动完成仿真步骤的宏文件库设置编译仿真强制仿真激励能在所有的ModelSim 模式里被调用UI)Macro-ExecuteCOM)do.do能调用其他的DO文件,cd c:mydirvlib workvcom counter.vhdvsim counterview*add wave/*add list/*do run.do,4
19、7,DO文件举例,add wave/clkadd wave/clradd wave/loadadd wave-hex/dataadd wave/qforce/clk 0 0,1 50-repeat 100force/clr 0 0,1 100run 500force/load 1 0,0 100force/data 16#A5 0force/clk 0 0,1 50-repeat 100run 1000,cd c:mydirvlib workvcom counter.vhdvsim counterview*do stimulus.do,my_sim.do,stimulus.do,48,Mode
20、lSim 用户界面,49,ModelSim 用户界面特征,有九个窗口:main,structure,source,signals,process,variables,dataflow,wave,和 list 窗口支持任何窗口的多个副本拖放在一个窗口选择HDL项后,用鼠标左键,这些项能被从一个窗口拖和放到另一个窗口.HDL项可从 Dataflow,List,Signals,Source,Structure,Variables,和 Wave窗口拖出.可把它们放到 List 或者 Wave 窗口,注意:Main窗口只允许存在一个,因为这个窗口控制仿真器,50,Main 窗口,ModelSim 这是设
21、计加载前的提示符能浏览帮助,编辑库,编辑源代码而不用调用一个设计VSIM 设计加载后显示的提示符告诉我们仿真器的行为动作命令信息声明,51,Main 窗口:库,Design Menu-Browse Libraries加入新库或编辑已有的库浏览和编辑库目录,52,Main 窗口:启动窗口,用于选择要加载的设计选择:时间分辨率Supports multipliers of 1,10,and 100 each time scale.包含顶级设计单元的库顶级设计单元Entity/Architecture对构造模块,Design Menu-Load New Design,COM)vsim,53,Main
22、 窗口:选项,Options Menu-Simulation Options,54,Structure 窗口,设计的结构多层浏览VHDL(o)-Package,component instantiation,generate and block statementsVerilog()module实例,named fork,named begin,task,和 functionInstantiation label,entity/module,architecture成为当前层 for Source 和 Signals 窗口,updates Process 和Variables 窗口,COM)v
23、iew structure,55,Source 窗口,从Structure窗口选择Options 菜单(源代码的控制浏览)Color-coded注释,关键字,字符串,数字,执行行,标识符,系统任务,文本完全的编辑能力保存 编译和重启拖放描述/检查VHDL 信号,变量和常数,COM)view source,56,Source 窗口,描述显示所选的HDL项的信息检查显示所选HDL项当前仿真值,1)高亮信号,变量,常数,线网,或寄存器2)右击鼠标并选择 Now 或 Object Menu-Examine/Description,57,Process窗口,显示外部和内部的处理View-ActiveSh
24、ows all processes scheduled for execution during the current simulation cycleView-In RegionShows names of all processes in the region selected in the Structure window,COM)view process,58,Process窗口,指示器Process is scheduled to be executed处理正等待 VHDL 信号或Verilog 线网改变 或等待超时Process has executed a VHDL wait
25、statement without a time-out or sensitivity list,COM)view process,59,Signals 窗口,紧跟Structure窗口显示Structure窗口的当前层HDL项的名称和值排序 升序,降序或声明顺序层次-(+)可展开的,(-)已展开的VHDL 信号Verilog 线网,寄存器变量和已命名的时间“拖放”Wave和List窗口Force用于激励Filter为浏览选择信号类型(输入,输出,内部,等),COM)view signals,60,Dataflow 窗口,VHDL信号或Verilog线网的图形描绘信号或线网在窗口中央Proce
26、sses that drive signal or net on the leftProcesses that read the signal or are triggered by the net on the right,COM)view dataflow,61,Dataflow 窗口,ProcessesSignals read by or nets that trigger the process on the leftSignals or nets driven by the process on the rightSingle-Double clicking update of si
27、gnals and processes,62,Wave 窗口,用波形浏览仿真结果的图形化的历史记录VHDL 信号和过程变量Verilog 线网,寄存器变量,已命名事件对于更多的逻辑信号多个波形窗口用于更多的逻辑信号改变信号和向量的基数已方便查看打印波形,拖放,缩放菜单,项格式化,多个指针,强大的编辑和查找能力,Verilog,COM)view wave,63,List 窗口,用表格显示仿真结果VHDL 信号和过程变量Verilog 线网和寄存器变量从这个窗口或到这个窗口“拖放”编辑功能 查找建立用户定义的总线-EditCombine设置触发和选通Write List-Tabular,Event
28、 or TSSIMarker-Add,Delete or Goto,COM)view list,64,Variables 窗口,列出 HDL 项的名称VHDL 常数,generics 和变量Verilog 寄存器变量到当前过程的路径被显示在左下树层次-(+)可展开的,(-)已展开的分类 升序,降序或声明顺序改变 选择HDL项改变值浏览 在Wave 或 List 窗口 或 log 文件的项选择变量或层中的变量,COM)view variables,65,ModelSim 用户界面特征(继续.),自动更新窗口Dataflow 窗口:当一个进程被选到这个窗口的中央,Process,Signals,S
29、ource,Structure,和 Variables 窗口会被更新.Process 窗口:当一个进程被选择,Dataflow,Signals,Structure,和Variables窗口被更新.Signals 窗口:当Signals窗口被选择,Dataflow 窗口是唯一被更新的窗口.Structure 窗口:当从你的设计结构中层次浏览中的一个被选择,Signals 和 Source 窗口将自动更新.,66,ModelSim 用户界面(继续.),查找名称或搜索值除两个窗口外其他窗口都允许用户通过菜单EditFind查找项名称。只有 Main 和 Dataflow 窗口没有这个功能。在List
30、 和Wave 窗口,能通过EditSearch 搜索HDL项值。排序HDL 项用EditSort 菜单选项,HDL项能被排序(按升序,降序,或声明顺序)。缺省,这些项按被声明的顺序排序。,67,ModelSim 用户界面特征(继续.),多个窗口副本从主窗口,用ViewNew菜单选项建立额外的相同窗口的副本.,68,设计调试,什么时候调试?编译失败不正确或意外的仿真结果ModelSim 调试能力举例信号监视断点,69,监视更多的信号,给跟踪加入附加的信号或变量在Structure 窗口选择层从Source,Signals 或Variables窗口“拖放”到:Wave窗口List 窗口,70,断点
31、,支持两种类型的断点在源代码窗口设置断点Toggles 再次点击删除断点没有断点数量的限制用 bp 命令 bp 条件断点when when b=1 and c/=0与VHDL信号和Verilog 线网和寄存器一起使用也可用 bp 命令 bp if$now/=100thencont,71,ModelSim 项目,一个集合:根目录和子目录HDL 仿真文件库仿真器设置允许你保留当前工作多用 UI在项目目录里保存为.MPF 文件仍然支持.INI文件项目操作File-New/Open/Delete,72,modelsim.ini文件,ModelSim使用 ASCII文件,由用户控制在ModelSim的安
32、装目录一个缺省文件被提供modelsim.ini被编译器和仿真器使用存有初始信息 库定位启动文件的定位ModelSim其他缺省设定ModelSim 按下列顺序搜索modelsim.ini:1.环境变量Environment variable called MODELSIM which points directly to the modelsim.ini file to be used2.A file called modelsim.ini located in the current working directory3.缺省的 modelsim.ini文件在ModelSim软件安装树目录里,73,startup.do 文件,一个 DO 脚本自动执行通过vsim一个例文件startup.do就象这样:view sourceview structureview wavedo wave.do调用一个启动文件,未注释(移去“;”)下面modelsim.ini文件行给do文件提供路径:;Startup=do/path./startup.do,