数字集成电路设计入门--从HDL到版图于敦山北大微电子学系第13章使用图形调试环境学习内容:这一章将学习有关SimVision图形环境:1.SimControl2.Navigator3.SignalFlowBrowser(SFB):信号流浏览器4.WatchObjectsWindows:对象观察窗口术语及定义•SimControl:图形仿真器接口;用SimControl来推进或中断仿真,打断并改变仿真,控制范围,等等。•SignalScan:SimControl图形波形观察器•Navigator:显示设计层次和一个范围内对象信息的图形工具•SignalFlowBrowser(SFB):在设计中从一个信号反向跟踪到其驱动源的图形工具•WatchObjectsWindows:监视信号组及其值的窗口•Object:在SimControl中,任何一个信号或范围•Double-click:将光标放在一个项目上并快速点击鼠标左键两次•Right-select:将光标放在一个项目上并点击鼠标右键启动图形环境使用命令行选项+gui启动SimControl。在SimControl中可以访问SimVision所有部件。仿真器在SimControl主窗口的控制下运行。当第一次启动时,SimControl主窗口显示顶层模块的源代码。可以从SimControl工具菜单或工具栏访问SimVision环境(SignalScan,Navigator,SignalFlowBrowser及WatchObjectswindows)的其他部件。SimControl包括8个下拉菜单固定菜单按钮可以快速访问常用命令一个空的用户可定义按钮当前仿真时间显示正在调试的模块的源代码,可以选择这个区域的文本,但不能编辑显示范围并浏览。在同一时间只能显示一下范围。若一个模块在多个文件出现,可以在subscope选择文件显示交互仿真的输出。可以提示符处输入交互命令显示信息,如仿真器的状态。详细的菜单命令及其它SimVision细节请参考联机文档后处理环境在仿真并将探测信号放到一个SHM数据库之后,可以对设计进行后处理。可以从GUI或通过使用+ppe选项进入后处理模式。打开仿真当前设计时生成的SHM数据库。交互及后处理•时间只能向前推进。•可以读取并修改仿真值,访问连接并设置行断点,取决于使能的是何种访问。•可以将值保存到一个波形数据库。•可以执行交互命令和源交互式脚本。•可以保存、重新开始、重新设置、运行和停止仿真。在后处理模式中:•可以扫描、单步、执行,或按时间向前或向后跳转。•可以读取仿真值并访问连接,取决于在仿真过程中使能的访问及在波形数据库中保存的信息。用+gui选项启动SimVision时,进入仿真器交互模式。进入后处理模式时,将仿真器释放并对保存在波形数据库中的值进行操作。在交互模式中:SimControl菜单及工具条•编辑源文件,打开数据库,和查找文本。在交互模式中,还可以source命令文件、保存并重新开始仿真。•执行、单步、停止和复位到开始时刻。在后处理模式中,还可以向后执行,并可以向前或向后扫描。•设置并显示断点和范围。在交互模式中,还可以设置并显示forces和探针•选择范围,端口和信号。•启动其他SimVision工具。•按照用户的意愿调整SimControl的行为SimControl下拉菜单和固定菜单按钮可以:SourceBrowserSourceBrowser显示在当前调试模块的源代码。可以在SourceBrowser中选择任意对象(寄存器,net,实例或线)在SourceBrowser中右击一个对象或行号弹出可以对该对象或行进行操作的命令菜单选择对象在SimVision环境中,选择和弹出菜单使鼠标成为一个有力的工具。左键可以在所有SimVision窗口中选择对象右击鼠标右键选择对象可以弹出一个菜单。按住Control键再按左键可以选择多个对象或取消选择。中键可以在窗口之间拖动对象选择对象在一个SimVision窗口选择一个或多个对象时,其他SimVision窗口的这些对象也均被选择。当右击选择一个对象时,弹出一个弹出菜单,包含用于该对象的一组常用命令。在不同的SimVision工具中弹出的不同的菜单。还可以在源浏览器中右击选择一个行号。按control键并用鼠标左键点击一个对象,可以选定该对象而不影响其他被选对象。添加选择:选择一个对象后,可以选择其它更多对象。取消选择:当一个对象被选定,可以用这个办法来取消对它的选择。点击拖动:当用鼠标中间的按钮选择一个对象时,可以拖动这个对象到另一个位置。如果鼠标只有两个按钮,可以用左键点击拖动。设置断点在下面的对话框中可以设置、使能、取消、列出,和删除断点。断点可可以是仿真时间、值的改变、条件或代码行。断点的功能视仿真器而不同。设置断点断点是使仿真停止的事件。有三种类型的断点:•基于时间:当仿真到一个指定时间停止。此为缺省。•基于行:当仿真到到源代码一个指定的行时停止。必须指定范围,文件名,和行号。只用于交互模式。•基于对象:当指定信号的值发生变化或指定跳变发生时停止。在NCVerilog中,不能指定一个单一跳变。•基于条件:当指定的Tcl表达式值为真时停止。SimControl提供四种设置断点的方法:•在菜单选择Set-Breakpoints•在Show-Breakpoints对话框,按Set按钮。•按SetBreakpoints按钮(只用于基于对象的断点设置)。•在任何一个SimControl窗口中右击选择一个信号名,弹出一个有SetBreak的菜单。Navigator用navigator来查看设计层次和当前范围的对象。要启动navigator,在SimControl窗口使用Tools菜单下Navigator,或按navigator按钮Navigator工具条是主窗口工具条的子集Navigator•浏览设计层次时,navigator生成一个树结构,在这个树结构中每个节点为设计层次中一个范围。–双击一个没有展开的节点以显示子层–双击一个展开的节点隐藏子层•在navigator中有两种方法设计当前范围(scope):–选择一个节点,然后按Scope按钮,或者在SimControl窗口中选择Set-Scope。–右击选择一个节点并从弹出菜单中选择SetDebugScope,或双击该节点。•注意:由于所有SimVision窗口交互作用,从任何SimVision窗口设置范围时,该范围的源代码自动读入源浏览器sourcebrowser。•用Options菜单设置显示选项–可以隐藏范围树或对象列表。–启动ObjectListOptions框或ScopeTreeOptions框指定显示及每个区域的内容。SignalFlowBrowser(信号流浏览器)使用信号流浏览器signalflowbrowser跟踪信号的驱动,设置信号属性。可以从SimControl启动信号浏览器SFB:菜单条:通过选择Tools-SignalFlowBrowser工具条:通过选择SignalFlowBrowser按钮SFB的工具条包括:主窗口工具条的子集TraceBack:跟踪选择信号,代替当前跟踪StackView和TraceView翻转SFB外观右图是一个StackView形式SignalFlowBrowser(信号流浏览器)信号流浏览器可以交互地跟踪一个信号的驱动以及对这些驱动所起的作用选择一个将被跟踪的信号:打开信号流浏览器前:在源浏览器中选择信号。在任何窗口中所做的选择会传递到其他所有窗口打开信号流浏览器后:—在Trace区输入一个层次信号名。—在其他Simvision窗口中选择一个信号并用鼠标中键将其拖到信号流浏览器中。SignalFlowBrowser(信号流浏览器)•信号流浏览器(SFB)是一个高效的设计调试环境。•用SFB可以从一个行为反常的信号开始,向后跟踪其驱动和作用信号直到发现行为反常的原因。•信号流浏览器可以执行下面操作:–以选择的基数显示一个信号的值。–显示信号的驱动。–查看信号的输入或驱动的细节。–显示所有对一个驱动起作用的信号。–跟踪一个模块端口到一个较低的层次。SignalFlowBrowser(信号流浏览器)•必须首先选择要跟踪的信号并将它输入或点击拖放到SFB中。此时出现一个驱动器(Driver)框,显示出所有该信号的驱动。•可以在一个Driver框里跟踪任何驱动并显示其输入;或者通过首先选择该驱动器,然后从菜单中选择Trace-ShowInputs;或者简单地双击该驱动。•可以在一个ContributingSignal框中跟踪任何信号以显示其所有驱动,或者通过首先选择该信号,然后从菜单总选择Trace-ShowDrivers;或者简单地双击该信号。•如果一个信号的驱动为一个模块实例的端口,可以跟踪它并显示在这个模块实例内部的信号源。首先选择该驱动器,然后从菜单中选择Trace-Descend。•例如,如果在一个驱动器框中有下面这个模块实例:registerr1(.r(reg_out)...)选择reg_out并使用Trace-Descend将显示r为信号源。•可以通过首先选择该驱动器,然后从菜单中选择View-DriverInfo显示一个驱动的细节.WatchObjectsWindows(信号观察窗口)•可以打开任意多个对象观察窗口。每个窗口包含一个信号表和当前仿真值。•要在一个对象观察窗口中添加对象,用点击信号并拖动或按AddObjects.•可以重新命名、锁定、删除、关闭,iconify,或克隆每个对象观察窗口。•点击FindNextEdge使仿真到下一个跳变。WatchObjectsWindows(信号观察窗口)•打开多个观察窗口–每个观察窗口在关闭时会自动保存。–可以打开一个新窗口或一个以前保存过的窗口。打开的第一个窗口缺省名“View1”。第二个窗口为“View2”,依次类推。–可以重新命名一个窗口。–可以克隆一个窗口,生成一个完全拷贝。•要从另一个SimVision窗口添加对象到一个观察窗口,用点击拖动或者选择它们然后按AddObjects。–添加一个信号是将其添加到观察列表中。–添加一个范围是添加在此范围中的信号到观察列表。•用观察窗口的选项(Option)菜单为每个窗口定制信号命名和值显示的方式。•FindNextEdge使仿真前进到一个信号的下一个跳变,或到下一个用户设置的断点。•Lock可以锁定一个观察窗口,使它不会随时间更新其显示。不能向一个被锁定的窗口添加新信号或从它前进时间。当解锁后,它将立即更新到反映当前时间的当前值。•Time区在后处理模式中可编辑,并只为该特定观察窗口改变时间值。总结•这一章学习了SimVision图形环境:–SimControl–Navigator–SignalFlowBrowser(SFB)信号流浏览器–WatchObjectsWindows复习问题1.SimVision的五个主要基于窗口的元件是什么?2.怎样显示设计层次?3.怎样在你的设计中显示和监视一组信号?、4.可以从观察对象窗口中在一个对象上设置一个断点?5.怎样确定一个驱动的作用信号?解答:1.SimVision的五个主要基于窗口的元件为SimControl,Navigator,WatchObjects,SignalFlowBrowser和SignalScan波形观察器。2.可以用navigator显示并在设计层次中浏览。Navigator显示范围,对象和对象值。可以在SourceBrowser中显示每个范围的源代码。3.可以用对象观察窗口查看一组信号及其值。4.是的,可以从对象观察窗口在一个对象上设置一个断点,或可以用FindNextEdge按钮高效地设置一个断点,仿真并去除断点。5.可以通过用信号流浏览器跟踪一个驱动的作用信号来找出这些信号。这在确定一个问题信号的源头很有用。可以反向跟踪驱动及其作用信号直到发现与预期行为不同信号。