




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Candence NC-Verilog simulator tutorial第一章 介绍这个手册将向你介绍使用NC-Verilog simulator和SimVision。本文使用的是一个用Veilog硬件编程语言编写的一个饮料分配机,通过这个例子你将学会: 编译Verilog源文件,描述设计,在NC-Launch(用于管理你的大型设计的图形交互接口)上进行设计的仿真。NCLaunch帮助你配置和启动编译器,描述器和仿真器。当然你还可以在NCLaunch上运行像SDF compiler,HDL Analysis and Lint, Code Coverage Analyzer, NCBrowse, and Comparescan.之类的工具。在SimVision分析环境下进行对设计中的问题的调试。SimVision是一个candence 仿真器统一的图形化的调试环境。SimVision可以用于调试用verilog,vhdl,SystemC或者它们混合写成的数字,仿真,或数模混合电路的设计。你可以在以下几种模式运行SimVision:Simulate模式在Simulate模式下你可以实时的看到仿真的数据。也就是说,你可以在仿真仿真的过程中就进行数据的分析。你可以通过对设计设置断点和分步来达到控制仿真的。为了帮助你追踪整个仿真过程,SimVision提供了几个工具:控制台窗口 Console Window 源浏览器 Source Browser 设计浏览器 Design Browser 循环阅读器 Cycle Viewer原理图追踪 Schematic Tracer 信号流浏览器 Signal Flow Browser波形窗口 Waveform Window 寄存器窗口 Register Window这些窗口之间是连接了的,所以如果你在一个窗口中选中了一个对象,那么在其它窗口中也会被选中。 Post-processing environment (PPE)模式在PPE模式下,对仿真结果数据的分析是在仿真过程结束了后进行的。除了仿真器之外,你能访问所有的SimVision的工具。就像Simulator模式中一样,这里所有的窗口也是连接了的,你在一个窗口中选择了的目标也会在其它窗口中选中。要在PPE模式下运行,你必须先对设计进行仿真,然后把仿真的资料存到一个文件中,你可以随时从simulation模式切换到PPE模式,但是不能在PPE模式切换到simulation模式中去。本指南将向你介绍SimVision的主要几个工具:控制台Console window:Console window允许你输入tcl仿真的命令和SimVision的命令。Design Browser: Design Browser让你进入设计的各层,以及信号和变量的数据库。Register window: Register window让你可以使用一个开放式的图形编辑器来定义一些记录簿,每个都包含了一个自定义的仿真数据的观点。Signal Flow Browser: Signal Flow Browser让你追踪信号的变化。Source Browser: Source Browser让你可以看到设计的源代码。Waveform window: Waveform window把仿真的资料在X-Y坐标系里面描绘出来。数据通常被显示为值和时间的关系,但是它也可以是已经记录下了的数据。饮料机的例子饮料机由以下几个模块组成:Drink-machine:用于计算用户给了的钱,对饮料进行分发,并且给用户找钱。Coin-counter:用硬币和机器相连,并且确定机器什么时候没有找头了。Can-counter:用饮料和机器相连,并且确定机器什么时候没有饮料了。这个例子同样有一个测试模块,它用于初始化饮料机并且用nickel(五美分),dime(十美分),quarter(二十五美分)的不同组合对机器进行投币来买饮料。对于接受硬币和分发饮料的行为被建模成一个状态机。用户已经投入的硬币总量决定了当前的状态。接下来用户投入的硬币的类型决定了下一个状态。举例来说,当没有钱投入的时候,机器处于空闲状态。当用户投入一个nickel的时候,机器进入下一个状态five。当当前状态是five的时候用户又投入了一个quarter,机器就进入了下一个状态thirty。当用户投入的钱到了五十美分的时候,机器就分发一罐饮料,同时进入空闲状态。 当用户投入的钱超过了五十美分的时候,机器分发一罐饮料,找回零钱,然后进入空闲状态。表 11 饮料机的状态表当前状态变化值下一状态idle 4d0nickel_in dime_in quarter_in five 4d1 ten 4d2 twenty_five 4d5five 4d1nickel_in dime_in quarter_in ten 4d2 fifteen 4d3 thirty 4d6ten 4d2 nickel_in dime_in quarter_in fifteen 4d3 twenty 4d4 thirty_five 4d7fifteen 4d3 nickel_in dime_in quarter_in twenty 4d4 twenty_five 4d5 forty 4d8twenty 4d4 nickel_in dime_in quarter_in twenty_five 4d5 thirty 4d6 forty_five 4d9twenty_five 4d5 nickel_in dime_in quarter_in thirty 4d6 thirty_five 4d7 fifty 4d10thirty 4d6 nickel_in dime_in quarter_in thirty_five 4d7 forty 4d8 nickel_out 4d11thirty_five 4d7 nickel_in dime_in quarter_in forty 4d8 forty_five 4d9dime_out 4d12forty 4d8 nickel_in dime_in quarter_in forty_five 4d9 fifty 4d10nickel_dime_out 4d14forty_five 4d9 nickel_in dime_in quarter_in fifty 4d10 nickel_out 4d11two_dime_out 4d14fifty 4d10 idlenickel_out 4d11 idledime_out 4d12 idlenickel_dime_out 4d13idletwo_dime_out 4d14idle更多的信息SimVision还提供了其它的没有在这个指南里面用到的工具。 工具/Feature介绍原理描述器显示了用Verilog或者Vhdl编写的设计的原理图,可以让你描述在设计中的信号。在SimVision的用户指南里面看12章,看一个设计的示意图。Simulation Cycle DebuggerSimulation Cycle Debugger让你在一个仿真过程中,在各个时间点,Delta Cycle,仿真阶段,或者是时间进行过程中停止。它对于Verilog-XL或者AMS是不可用的看SimVision 用户指南的11章:在Delta Cycle 层面上进行调试第二章 开始在你仿真你的设计以前,你必须编译和描述它。编译过程将把源文件中的用HDL编写的单元编译成内在的描述。描述设计将在设计的实例化,结构化信息的基础上建立设计的层次结构,建立信号的连接,计算所有对象的初始值。你编译,描述和仿真你的设计要用到以下的工具:Ncvlog: 编译Verilog源文件。 ncelab 描述设计并且生成仿真的snapshot。ncsim 对snapshot进行仿真仿真。当然你也可以利用ncverilog的命令以一步实现(single-step)的模式来运行NC-Verilog。你也可以使用单一的工具,NCLaunch一个可以帮助你建立大型的设计工程的用户图形接口平台。NCLaunch帮助你配置和启动仿真的工具。 你可以在多步实现(multi-step)或者单步实现(single-step)的模式下运行这些工具。它也可以让你打开 Comparescan, SDF Compiler, HDL Analysis 和 Lint, Code Coverage Analyzer, NCBrowse, 以及其它仿真仿真的工具。这个指南将向你展示怎么在多步实现(multi-step)的模式下使用NCLaunch。拷贝指南的数据本例的所有源文件包含在Candence的安装包中。源文件在下面的这个地址: install_dir/doc/ncvlogtut/examples建立一个新的檔夹(比图说:tutorial), 然后拷贝指南的文件到这个檔夹。例:mkdir tutorialcd tutorial cp install_dir/doc/ncvlogtut/examples/* .启动NCLaunch1. 在你拷贝了指南的源文件的那个檔夹下启动NCLaunch: nclaunch -new & -new选项指名你想要在一个新的设计(design)下面进行接下来的工作。 NCLaunch将出现一个你能运行这个工具的模式的列表,如图2.1。 图2.1NCLaunch运行模式选择多步模式(Multiple Step)使用ncvlog和ncelab命令来编译和描述你的设计;单步模式(Single Step)使用ncverilog命令。2. 选择Multiple Step.NCLaunch显示的主窗口如图2.2 :图2.2 NCLaunch主窗口左边的窗口显示了当前目录下的所有的文件,在你编译和描述了设计以后,右边窗口就会显示设计的库。上面是菜单和一些用于启动工具的按键。编译(compiling)源文件 在你仿真仿真你的设计以前,你必须用编译器编译源文件,并且用描述器(elaborator)把设计描述成snapshot的形式。Snapshot是仿真器将调用的你的设计的表述,它和其它由compiler和elaborator产生的中间目标一起保存在库中。NCLaunch的主窗口让你可以连接你编译和描述设计所需要的工具,当然还有其它的程序。你利用Tools和Utilities菜单,或者你也可以利用工具栏里面的工具按钮,你可以打开工具和其它程序。不是所有的工具和程序都放在工具栏里面,但是你可以通过自己定义工具栏来确定把自己喜欢的工具和程序放在工具栏里面。表2-1例出了在工具栏里面的工具。表 2-1 NCLaunch工具栏的按钮按钮工具VHDL 编译器(compiler)Verilog 编译器(compiler)描述器(Elaboretor)仿真/仿真器(Simulator)NC浏览(NCBrowse)波形察看窗口(Waveform Window)1编译你的设计: 选中在设计时建立的Verilog文件:can_counter.v coin_counter.v drink_machine.v drink_machine_top.v test_drink.v.要选择多个檔,需要按住Ctrl键并选中每个檔。2按下编译器按钮:在窗口底部的输入输出区域会显示由于你的选择而输入的命令和运行后的结果,同时它也显示了NC-Verilog在编译过程中的消息。默认的,NC-Verilog将产生一个叫INCA_libs的目录以及一个叫worklib的目录。所有设计中的模块都将编译在worklib目录下面。注意INCA_libs现在就出现在了NCLauch左边的浏览器中,同时设计的库worklib也加入了库浏览器(右边窗口)中。描述(elaborate)你的设计要描述(elabrate)你的设计,典型的你要展开你的库(worklib),选择顶层(top-level)的单元,然后选择描述(elabrate)按钮。尽管如此,为了做一个指南,这里在你描述以前你必须设置一些选项。按照以下几步进行选项的选择然后描述你的设计:1通过电击帽子图示旁边的加号展开工作库(worklib)2展开顶层设计单元,在这个例子中,顶层设计单元是一个Verilog的测试模块:test_drink.3选择module4选择Tools- Elaborator以打开Elaborate模式,如图2.3注意这里的Access Visibility按钮选中并且它的值是All,这个选项意味着全部存取(读,写,连接探测)来仿真目标,这样你就可以在仿真的数据库里面探测目标和范围,调试你的设计。注意:在使用NCLaunch时,默认是可以调用仿真目标的。但是用命令行接口的时候,进入默认是关闭了的,你必须要输入-access命令来启动elaborator,例:ncelab -access +rwc worklib.test_drink:module5.在这个饮料机中只有一个模块包含了时间表的编译指示。因为其它模块都没有定义时间表,为了防止elaborator报错,这里启动Other Option选项然后再文本框输入-timescale 1ns/1ns,如图2.3:6. 按下OK以开始描述(elaborate)设计。 底部的输入输出窗口显示了ncelab命令,它就是由于你的选择而输入的命令,然后还显示了the elaborator generates的消息。提示 如果你收到了elaborator error的消息你可能是由于在运行这几步的时候出错了。例如:1 你是不是选择了正确的设计单元名称?2 是否记得设置-timescale的选项当你收到了错误的消息以后重新进行这些步骤。启动Simulator为了启动simulator: 1展开Snapshots文件夹,以显示在你的库中你可以选择的snapshot。2选中你想要仿真的snapshot,如图2.4图2.4 选中要仿真的snapshot3 按下仿真按钮设计浏览器(Design Browser)和控制窗口(Console window)就会出现。你可以在设计浏览器(Design Browser)中进入设计的各个层,你也可以在控制窗口(Console Window)输入命令来进入SimVision和Tcl Simulator。图2.5展示了设计浏览器(Design Browser)打开时的情况。Simvision把仿真定位在了各层的上面,同时给它定义了名字叫做Simulator。设计的各层的最高层就放置在了仿真的下面。在这个例子中它就叫做test_drink。图2.5 Design Browser 在启动的时候,控制窗口(Console Window)有两个窗口,如图2.6。SimVison窗口让你可以输入SimVison的命令;仿真器(simulator)窗口让你可以输入Tcl simulator命令。在你运行仿真的时候,控制窗口(console window)同样会在SimVision和simulation窗口中显示消息。图2.6 Console WindowVideo :视频编译和描述设计文件。退出NCLaunch调用了仿真器(simulator)以后,你就可以退出NCLaunch了。要退出NCLaunch: 点击NCLaunch窗口使之成为当前窗口,然后选择File菜单下的Exit。更多的信息本章向你介绍怎么用NCLaunch让NC-Verilog运行在多步的模式下。其实还有其它的方法为你的设计仿真做准备。工具/要素描述NCLaunch你可以利用NCLaunch ncverilog support一步完成编译源文件,描述设计,启动仿真器,见NCLaunch User Guide。NC-Verilog, Multiple Step mode 你可以编译了源文件,描述了设计然后用ncvlog,ncelab和ncsim命令启动仿真器(simulator),见NC-Verilog Simulator Help 中的Multi-Step Invocation (Library-Based Mode章节。 NC-Verilog, Single Step mode 你可以用ncverilog命令完成对源文件的编译和描述。见NC-Verilog Simulator Help的Single-Step Invocation with ncverilog 章节 第三章 设计仿真SimVision让你控制和查询你的设计仿真。 他可以帮助你定位和特定的仿真事件相关的程序段。如果你发现设计中有错误,你可以直接编辑源文件,重新编译和描述,而不用离开SimVision的环境。 SimVision中你可以存储个别目标或者范围的仿真数据,这可以使得仿真数据尽量的小。晚些时候,你可以在Waveform中加载仿真数据再检验仿真的结果。选择存储的仿真数据你可以执行simulator命令来存储仿真器运行过程中的仿真数据。Simulator 命令在仿真过程中对设计进行探测,然后它把探测目标的值存入数据库。有两种类型探测的命令:探测一个特殊的目标或多个目标。这些特殊目标的值存在数据库中。探测一个特殊的范围或多一个范围。你可以选择你想存储的信息类型,比如说,这个范围内的输入信号,你能决定探测的是探测一些还是全部的范围。要探测所有的模表和范围,要从模块的top开始:1. 在设计窗口中,点击test_drink 图示旁边的加号,展开设计的层次结构。2. 选择top范围。在右边窗口里面的信号的列表列出了top范围内的全部信号,如图3.1。信号列表显示了所有输入信号,输出信号,输入输出信号,内部信号,或者事务级的信号。 。图3.1 选择top范围3 选择菜单Simulation-Create Probe SimVision打开Probe的设置窗口,如图3.2,这个窗口允许你选择一层或者多层子范围,选择你要探测的信号类型, 然后记录探测信息到任何数据库。图3.2 设置probe的窗口针对这个探测: 选择Include sub-scopes下拉菜单中的all选项以包含所有设计的子域。选择Include within each scope下拉菜单中的all选项以包含输入,输出 和端口。 取消选中Add to waveform display。4. 点击OK确认probe的设置然后关掉窗口。 提示如果你在控制窗口(console window)输入以下信息你就可以成功的创建probe:ncsim database -open waves -into waves.shm -default Created default SHM database waves ncsim probe -create test_drink.top -depth all -all -shm Created probe 1 5. 在控制窗口(console window)中选择SimulationRun。SimVision就会仿真仿真设计,然后把仿真的结果数据存在默认的数据库里面。在它运行的时候将会显示如下信息:ncsim run 400loading machine with 5 cans 400 * machine empty! * 700 enter nickel 900 enter dime 1100 enter quarter 1300 enter dime 1500 enter quarter 1500 -drink dispensed - 1800 enter nickel 2100 enter nickel 2300 enter dime 2500 enter dime 2600 * machine empty! * 2700 enter quarter 2700 nickel changed 3000 enter nickel 3200 enter dime 3400 enter quarter 3600 enter dime 3800 enter quarter 3900 - drink dispensed - . . . - 68400 enter quarter68700 enter nickel 69000 enter nickel 69200 enter dime 69400 enter dimeSimulation complete via $finish(1) at time 69600 NS + 0 ./test_drink.v:48 $finish; ncsim提示 当你完成了这些步骤,你的工作目录下面将会出现一个新的名为waves.shm 的目录,它里面包含了waves.dsn和 waves.trn两个文件。如果它们的大小分别远小于65500bytes和360bytes,那么在仿真过程中你就没有探测到了所有的目标。为了纠正问题,在控制窗口(console window)中选择Simulation Reinvoke Simulator重新启动simulator或者退出simulator再用下面的命令重新启动simulator:ncsim -gui worklib.test_drink:module然后重新执行本章讲的几个步骤。更多的信息本章描述了设置探针(probe)和运用控制窗口(console window)来启动仿真器(simulation)。尽管如此,还有其它的方式来运行以上的步骤,如下:Tool(工具)/Feature(内容)Description(描述)$shm_open $shm_probe $shm_close 你可以在你的Verilog源文件中调用这些系统任务。当你仿真你的设计的时候,这些系统任务打开你的数据库,设置探针到希望的目标,当你仿真结束的时候又关闭数据库。在你的 NC-Verilog Simulator Help中参阅Displaying Waveforms with the SimVision Waveform Viewer章节以得到这些系统任务的具体细节。database -open probe -create run 你可以从tcl命令行接口中调用simulator命令,或者你也可以把它们都打包在一个命令文件中,以批处理模式来运行。 参阅你的NC-Verilog Simulator Help 中probe,database和run的章节Simulation database management (仿真数据管理)为了疹错的方便你可以为不同的设计建立包含各自设计成份的不同的仿真数据库。或者你可以用其它工具打开数据库。 查阅SimVision User Guide第六章Managing Simulation DatabasesProbes (探针)你可以打开,关闭探针,也可以删除探针,或者你还可以在工具窗口中创建新的探针。当然你还可以就在Waveform窗口中增加一个信号的探针而不用设置探针的窗口来增加 参阅SimVision User Guide第七章 Creating and Managing Probes。 Breakpoints (断点)或许你想仿真运行到某点的时候就停下来这样方便你检查运行的状态。为了控制仿真在哪里停下可以设置breakpoint查阅SimVision User Guide第八章Setting and Managing Breakpoints Simulation control (仿真控制)你可以运行一个仿真到breakpoint停止,然后进入一个子程序。你也可以存储仿真的状态,或者是检查点,然后在那个点重新启动仿真。 参阅SimVision User Guide第十章Controlling the Simulation 第四章 以波形的形式研究仿真的资料波形显示了信号在仿真过程中任意事件的值,它可以帮助你很好地理解你的设计的行为 波形窗口(waveform window)可以让你选择你想要看的信号以及它在显示的时候的基数,甚至你还可以自己建立一个显示的形式,叫做mnemonic map(助记符映射),这样就可以让图以你最适应的方式显示。选择显示的信号在设计浏览器(Design Browser), 你可以选择目标然后把它们放到波形窗口(Waveform window)中为了要选择你想要显示的信号到波形窗口(Waveform window)中:1. 点击Edit Buffer 按钮打开edit buffer,如图4.1。edit buffer 让你可以在不同的范围内选择目标,安排他们以你希望的顺序显示,然后把它们都列到波形窗口(Waveform window)中去图4.1打开edit buffer2. 在top模块中选择你想要在波形窗口(waveform window)中显示的信号。为了取样检查,选择nickel_in, dime_in, quarter_in, dispense, nickel_out, dime_out, two_dime_out, and clk 信号。当你点击各个信号的时候,SimVision把它们加入到edit buffer中去。3. 展开top,然后在vending模块中选择current_state 把它加入edit buffer中去。 4. 点击Waveform按钮,让这些信号在波形窗口(waveform window)中显示。5. 点击隐藏 Edit Buffer按钮,使edit buffer 在设计浏览窗口收回。Displaying Data in the Waveform Window在波形显示窗口(waveform window)中,信号的名字和它们的当前值都显示在了窗口的左边,它们的波形显示在了右边。如图4.2:图4.2 有波形显示的波形显示窗口(waveform window)提示你可以在一个有工具条的波形显示窗口(waveform window)中进入设计浏览或者是设计搜索的窗口中去。更进一步的讲解请查阅SimVision User Guide中的 Using the Design Browser Sidebar 和 Using the Design Search Sidebar在波形窗口(waveform window)中,在波形数据的上方,你可以看到当前窗口中仿真的数据的启始和终止时间。在波形数据的下方的滚动条显示的是整个仿真的时间。你可以通过输入一个新的时间范围来调整当前窗口中显示的波形数据的范围为了输入一个新的范围:1 在Time Range 文本框中输入一个时间段. 在这个例子中,输入的是0:3000, 如图4.3:图4.3 输入一个新的时间段2点击Enter键以应用新的时间段。3在波形数据上方的下拉菜单中选择Keep this view ,这样你就可以保存你的缩放设置。如图4.4: 任意时刻,你能通过下拉菜单选择来快速地回到显示这个缩放段图4.4 存储一个波形资料的情景在波形窗口(waveform window)中有两个指标,分别叫做TimeA和Baseline。你可以把它们移到仿真时间的任意点,然后以它们为参考点。输入一个新的仿真时间: 你可以拖动指标到你想要探测的时间点,也可以在指标时间输入文本框中输入一个仿真时间来实现目的。 例,改变TimeA的仿真时间到16,700ns,如图4.5:图4.5 设定指针时间控制波形数据的显示波形窗口(waveform window)让你可以控制波形数据的显示方式,比如说你想让信号数据在什么进制下进行显示。例,要把的current_state显示变成十进制:1. 在波形窗口(waveform window)的目标列表中选择current_state 。2. 在FormatRadix/Mnemonic菜单中选中Decimal(十进制)当观察一个波形的时候,有时候把信号的值显示成ASCII码串很有用。比如说,当current_state的值是1的时候,用户投入了5美分;当current_state的值是2的时候,用户投入了10美分。把current_state的波形显示成5和10比显示成1和2更容易理解。要把信号定义信号值为ASCII串,需要定义一个mnemonic map:1. 选择WindowsToolsMnemonic Maps打开Mnemonic Maps的属性设置窗口,如图4.6: 图4.6 Mnemonic Maps的属性设置窗口当你定义了一个mnemonic map,你不仅可以定义特殊信号的文本显示方式,而且你还可以定义值在波形窗口(waveform window)中的显示方式 ,包括波形的形状,联合一个值的特殊情况的图示和颜色。2. 点击新建Map 按钮,新建一个 mnemonic map.3. 定义mnemonic map的第一个入口,如下: a. 改变默认的进制,点击h 不放然后选择d. b. 双击Values Matching区域,输入0, 然后按Tab键,进入Relabel As 区域。 c. 在Relabel As区域, 键入串idle然后按Tab键进入下个目标的Values Matching前面的区域显示了Waveform窗口会在current_state 等于0的时候怎么显示。它将显示一个里面写着idle的长方形。4定义下面的状态:Values MatchingRelabel As0idle1five2ten3fifteen4twenty5twenty_five6thirty7thirty_five8forty9forty_five10fifty11nickel_out12dime_out13nickel_dime_out14two_dime_out5. 在名字的区域里面,改变新的map给current_state。6. 点击Apply按钮。现在current_state的十进制值0,1,10,等等就被显示成了idle,five,fifty,等等, 如图4.7:图4.7 由于Mnemonic Map信息所显示的值7. 选择FileClose Window关闭选项窗口。 更多的信息本章描述了一些你显示和组织信息在波形窗口(waveform window)中显示的方法。其它有些工具和内容可以对你显示波形的时候有帮助: Tool/Feature DescriptionDesign Search Window(搜索窗口) 你可以不必关心各层的结构而在几个数据库里面搜索信号,变量和范围 参阅SimVision User Guide第五章Searching for Design Objects Groups and expressions(组和等式) 你可以把信号列到一起或者列在一个式子里面。 这些动作可以让你把信号的设置看成一个信号的实体 参与SimVision User Guide第十五章Organizing Signals into Groups, Expressions, and Comparisons。 Markers(指针) 你可以放置类似于指针的标记在仿真的时间轴上面。你可以在各个标记之间切换以对比仿真在不同时间的结果。但是你不能用标记与测量的作用。参阅SimVision User Guide第十六章, Navigating through Simulation Time Measurement window (测量窗口)你可以在一个特殊的仿真时间点上建立一个用于测量变量的特征值的平台。比如说,你可以看它们的范围,最大值,最小值。在测量相似的信号的性质的时候这个就非常有用。 参阅SimVision User Guide 第二十章Measuring Signal Values。 Preferences (参数设置)你可以指定工具栏在SimVision 窗口中的风格, 设置波形窗口(waveform window)的默认值,为源浏览器(source browser)选择文本编辑器,另外也可以设置SimVision 。参阅SimVision User Guide 第二十一章Setting Preferences Simulation Cycle Debugger(仿真循环调试器) Simulation Cycle Debugger让你可以让你看到整个仿真过程, 在任意时间点停止,delta cycle,仿真暂停 ,或者执行预定进程。它对Verilog-XL or AMS 的设计者来说是不可用的。. 参阅SimVision User Guide 第十一章Debugging at the Delta Cycle Level第五章 设计的调试波形显示窗口(waveform window)可以帮助你找到设计中的错误。通过定义环境,情况来观察波形数据,从而找到错误发生的地方。当你找到了错误的地点,你就可以对设计的源文件进行编辑,然后再运行simulator来检验你改变后的程序。搜寻波形中的环境,情况环境,情况是一个你想要观察的在波形窗口(waveform window)中的信号的值的组合。比如说,你可以定义一个环境发生的条件是dispense信号和nickel_out信号的值是一样的时候:1. 在波形窗口(waveform window)中选择quarter_in和dispense信号,然后选择Edit CreateCondition. SimVision 将打开Expression Calculator,如图5.1:图5.1 Expression Calculator 窗口Expression Calculator创建一个默认的由AND(与)逻辑 组成的等式。这个状况表达式在两个信号有相同值的时候为真。 如果你想观察其它的情况你可以编辑这个表达式。2. 在名字输入框中键入状况表达式的名字,比如说: quarter_inANDdispense.3. 点击波形按键,以便把状况的波形加入到波形窗口(waveform window)。4. 选择FileClose Window关闭Expression Calculator窗口。 5. 在波形窗口(waveform window)中选择这个状况,然后运用Next Edge和Previous Edge 按钮用于定为状况发生的地点分析波形,找出错误。分析波形可以帮助你找到设计中的问题,例:1. 把仿真的时间定位到16,700 ns。 在这个时候,机器的状态是空闲提示这里其实有很多办法可以设置仿真时间。在指标时间文本框中输入你想要的时间。拖动第一个指针到你想要的时间去选中dispense信号,然后噢点击Next Edge 按钮移植到它到了你想要的时间。2. 选中current_state信号然后点击Next Edge按键,以便跟上由时钟周期到时钟周期的事件先后顺序。 用户投入一个nickel, 机器进入下一个状态five。 用户再投入一个dime,机器就进入了fifteen状态。 用户再投入一个quarter, 机器则进入了状态forty。 用户再投入一个dime, 机器进入状态fifty.在这个时钟周期中,用户还投入了quarter。你当然会希望它会立马变到状态 twenty_five, 但是实际上却不是。机器进入空闲状态,然后给 dispense 赋值为1;quarter被忽略了。当在下一个时钟周期下开始的时候 ,用户投入了一个nickel,机器就装入状态five.图5.2显示了错误发生的波形 。在这个时间之内,机器出一罐饮料,然后机器进入空闲状态,quarter_in信号变高电平。当用户再投入一个neckel的时候机器就进入了状态five。图5.2 查找设计中的错误3. 在Time Range区域,在下拉列表中选择keep this Vie,这样你就可以很方便的再回来查看这个错误的。Video 在波形窗口(waveform window)中分析仿真结果。创建自定义的仿真数据查看另一个分析仿真结果的方法是运用Register窗口,在那里你可以创建自定义的仿真数据的查看,包括了自由形式的文本输入以及图形化的要素。 一个 Register窗口可以有几页,每页都有自己的显示方式。 在Register窗口中创建页:1. 在波形窗口(waveform window)中选择你想要分析的信号,比如说,nickel_in,dime_in, quarter_in,dispense,nickel_out,dime_out,two_dime_out,clk,and current_state. 2. 点击Click the Register 按钮,以便把信号送入到Register 窗口中去,如图5.3:图5.3 加入信号到Register窗口窗口右边的按钮让你可以在窗口中自由地画图形化的目标,文本,还有管理目标布局。当你把鼠标放在这些按键上面的时候就会有快速提示,告诉你按键的作用。3.把mnemonic map应用到register窗口中来,选择current_state信号 然后选择FormatRadix/MnemonicCurrent State.4.把目标按照你的希望来排列。图5.4的布局表现了输入信号 nickel_in, dime_in,和quarter_in,和clk-状态机, current_state,和输出信号 dispense, nickel_out,dime_out,和two_dime_out之间的关系。图5.4 一个自定义的布局5键入仿真时间,比如说16700ns。Register窗口会更新信号的值然后显示出来。6. 选择一个信号,比如说current_state,然后点击Next Edge 按钮。时间轴会自动运行到该选中的信号的下一个电平边沿,然后Register窗口会更新各个信号的值,并把它们的值显示出来。7. 点击Previous Edge 按钮,会使得仿真时间轴向选中信号的前一个电平边沿变化。8. 在仿真时间的16700ns开始,选择current_state信号,然后点击Next Edge 按钮,就可以在Register窗口中看到和波形窗口(waveform window)中看到的一样的 事件队列,那是:用户增加一个nickel,机器进入下一个状态:five。用户再增加一个dime,机器进入下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 4 水葫芦的生长教学设计-2025-2026学年沪教版2020选择性必修第三册-沪教版2020
- 2023七年级数学下册 第10章 相交线、平行线与平移10.1 相交线第1课时 对顶角说课稿 (新版)沪科版
- 第16课 公益动画短片制作说课稿-2025-2026学年初中信息技术滇人版2016八年级上册-滇人版2016
- 2025年中考物理试题分类汇编(全国)电与磁(第1期)解析版
- 2走月亮(教学设计)-2024-2025学年语文四年级上册统编版
- 小学科学新教科版二年级上册全册教案(2025秋版)
- Unit2 Ways to go to school PartA Let's learn(教学设计)-2024-2025学年人教PEP版英语六年级上册
- 1《场景歌》(教学设计)-2024-2025学年统编版语文二年级上册
- 人教版小学数学五年级下册《因数与倍数》单元测试卷3套含答案
- 2025年北京高考化学试题+答案
- 2025年海南省通信网络技术保障中心招聘考试笔试试题(含答案)
- 2025至2030中国PE微粉蜡市场需求量预测及前景动态研究报告
- 2025年理赔专业技术职务任职资格考试(理赔员·保险基础知识)历年参考题库含答案详解(5套)
- TSGD7002-2023-压力管道元件型式试验规则
- 静配中心细胞毒性药物的配置方法
- 短视频制作实战课件
- 面试礼仪与求职技巧讲义
- 严重创伤的急诊管理课件
- 江西省普通高中学生综合素质评价手册
- 急性阑尾炎【普外科】-课件
- 文化人类学课件完整版
评论
0/150
提交评论