VerilogtutorialCE309B5教學內容_第1頁
VerilogtutorialCE309B5教學內容_第2頁
VerilogtutorialCE309B5教學內容_第3頁
VerilogtutorialCE309B5教學內容_第4頁
VerilogtutorialCE309B5教學內容_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。VerilogtutorialCE309B5-CandenceNC-Verilogsimulatortutorial第一章介紹這個手冊將向你介紹使用NC-Verilogsimulator和SimVision。本文使用的是一個用Veilog硬件編程語言編寫的一個飲料分配機,通過這個例子你將學會:編譯Verilog源文件,描述設計,在NC-Launch(用于管理你的大型設計的圖形交互接口)上進行設計的仿真。NCLaunch幫助你配置和啟動編譯器,描述器和仿真器。當然你還可以在NCLaunch上運行像SDFc

2、ompiler,HDLAnalysisandLint,CodeCoverageAnalyzer,NCBrowse,andComparescan.之類的工具。在SimVision分析環境下進行對設計中的問題的調試。SimVision是一個candence仿真器統一的圖形化的調試環境。SimVision可以用于調試用verilog,vhdl,SystemC或者它們混合寫成的數字,仿真,或數模混合電路的設計。你可以在以下幾種模式運行SimVision:Simulate模式在Simulate模式下你可以實時的看到仿真的數據。也就是說,你可以在仿真仿真的過程中就進行數據的分析。你可以通過對設計設置斷點和

3、分步來達到控制仿真的。為了幫助你追蹤整個仿真過程,SimVision提供了幾個工具:控制臺窗口ConsoleWindow源瀏覽器SourceBrowser設計瀏覽器DesignBrowser循環閱讀器CycleViewer原理圖追蹤SchematicTracer信號流瀏覽器SignalFlowBrowser波形窗口WaveformWindow寄存器窗口RegisterWindow這些窗口之間是連接了的,所以如果你在一個窗口中選中了一個對象,那么在其它窗口中也會被選中。Post-processingenvironment(PPE)模式在PPE模式下,對仿真結果數據的分析是在仿真過程結束了后進行的

4、。除了仿真器之外,你能訪問所有的SimVision的工具。就像Simulator模式中一樣,這里所有的窗口也是連接了的,你在一個窗口中選擇了的目標也會在其它窗口中選中。要在PPE模式下運行,你必須先對設計進行仿真,然后把仿真的資料存到一個文件中,你可以隨時從simulation模式切換到PPE模式,但是不能在PPE模式切換到simulation模式中去。本指南將向你介紹SimVision的主要幾個工具:控制臺Consolewindow:Consolewindow允許你輸入tcl仿真的命令和SimVision的命令。DesignBrowser:DesignBrowser讓你進入設計的各層,以及信

5、號和變量的數據庫。Registerwindow:Registerwindow讓你可以使用一個開放式的圖形編輯器來定義一些記錄簿,每個都包含了一個自定義的仿真數據的觀點。SignalFlowBrowser:SignalFlowBrowser讓你追蹤信號的變化。SourceBrowser:SourceBrowser讓你可以看到設計的源代碼。Waveformwindow:Waveformwindow把仿真的資料在X-Y坐標系里面描繪出來。數據通常被顯示為值和時間的關系,但是它也可以是已經記錄下了的數據。飲料機的例子飲料機由以下幾個模塊組成:Drink-machine:用于計算用戶給了的錢,對飲料進行

6、分發,并且給用戶找錢。Coin-counter:用硬幣和機器相連,并且確定機器什么時候沒有找頭了。Can-counter:用飲料和機器相連,并且確定機器什么時候沒有飲料了。這個例子同樣有一個測試模塊,它用于初始化飲料機并且用nickel(五美分),dime(十美分),quarter(二十五美分)的不同組合對機器進行投幣來買飲料。對于接受硬幣和分發飲料的行為被建模成一個狀態機。用戶已經投入的硬幣總量決定了當前的狀態。接下來用戶投入的硬幣的類型決定了下一個狀態。舉例來說,當沒有錢投入的時候,機器處于空閑狀態。當用戶投入一個nickel的時候,機器進入下一個狀態five。當當前狀態是five的時候用

7、戶又投入了一個quarter,機器就進入了下一個狀態thirty。當用戶投入的錢到了五十美分的時候,機器就分發一罐飲料,同時進入空閑狀態。當用戶投入的錢超過了五十美分的時候,機器分發一罐飲料,找回零錢,然后進入空閑狀態。表11飲料機的狀態表當前狀態變化值下一狀態idle4d0nickel_indime_inquarter_infive4d1ten4d2twenty_five4d5five4d1nickel_indime_inquarter_inten4d2fifteen4d3thirty4d6ten4d2nickel_indime_inquarter_infifteen4d3twenty4d4

8、thirty_five4d7fifteen4d3nickel_indime_inquarter_intwenty4d4twenty_five4d5forty4d8twenty4d4nickel_indime_inquarter_intwenty_five4d5thirty4d6forty_five4d9twenty_five4d5nickel_indime_inquarter_inthirty4d6thirty_five4d7fifty4d10thirty4d6nickel_indime_inquarter_inthirty_five4d7forty4d8nickel_out4d11thirt

9、y_five4d7nickel_indime_inquarter_inforty4d8forty_five4d9dime_out4d12forty4d8nickel_indime_inquarter_inforty_five4d9fifty4d10nickel_dime_out4d14forty_five4d9nickel_indime_inquarter_infifty4d10nickel_out4d11two_dime_out4d14fifty4d10idlenickel_out4d11idledime_out4d12idlenickel_dime_out4d13idletwo_dime_

10、out4d14idle更多的信息SimVision還提供了其它的沒有在這個指南里面用到的工具。工具/Feature介紹原理描述器顯示了用Verilog或者Vhdl編寫的設計的原理圖,可以讓你描述在設計中的信號。在SimVision的用戶指南里面看12章,看一個設計的示意圖。SimulationCycleDebuggerSimulationCycleDebugger讓你在一個仿真過程中,在各個時間點,DeltaCycle,仿真階段,或者是時間進行過程中停止。它對于Verilog-XL或者AMS是不可用的看SimVision用戶指南的11章:在DeltaCycle層面上進行調試開始在你仿真你的設計

11、以前,你必須編譯和描述它。編譯過程將把源文件中的用HDL編寫的單元編譯成內在的描述。描述設計將在設計的實例化,結構化信息的基礎上建立設計的層次結構,建立信號的連接,計算所有對象的初始值。你編譯,描述和仿真你的設計要用到以下的工具:Ncvlog:編譯Verilog源文件。ncelab描述設計并且生成仿真的snapshot。ncsim對snapshot進行仿真仿真。當然你也可以利用ncverilog的命令以一步實現(single-step)的模式來運行NC-Verilog。你也可以使用單一的工具,NCLaunch一個可以幫助你建立大型的設計工程的用戶圖形接口平臺。NCLaunch幫助你配置和啟動仿

12、真的工具。你可以在多步實現(multi-step)或者單步實現(single-step)的模式下運行這些工具。它也可以讓你打開Comparescan,SDFCompiler,HDLAnalysis和Lint,CodeCoverageAnalyzer,NCBrowse,以及其它仿真仿真的工具。這個指南將向你展示怎么在多步實現(multi-step)的模式下使用NCLaunch。拷貝指南的數據本例的所有源文件包含在Candence的安裝包中。源文件在下面的這個地址:install_dir/doc/ncvlogtut/examples建立一個新的檔夾(比圖說:tutorial),然后拷貝指南的文件到

13、這個檔夾。例:mkdirtutorialcdtutorialcpinstall_dir/doc/ncvlogtut/examples/*.啟動NCLaunch在你拷貝了指南的源文件的那個檔夾下啟動NCLaunch:nclaunch-new&-new選項指名你想要在一個新的設計(design)下面進行接下來的工作。NCLaunch將出現一個你能運行這個工具的模式的列表,如圖2.1。圖2.1NCLaunch運行模式選擇多步模式(MultipleStep)使用ncvlog和ncelab命令來編譯和描述你的設計;單步模式(SingleStep)使用ncverilog命令。選擇MultipleStep.

14、NCLaunch顯示的主窗口如圖2.2:圖2.2NCLaunch主窗口左邊的窗口顯示了當前目錄下的所有的文件,在你編譯和描述了設計以后,右邊窗口就會顯示設計的庫。上面是菜單和一些用于啟動工具的按鍵。編譯(compiling)源文件在你仿真仿真你的設計以前,你必須用編譯器編譯源文件,并且用描述器(elaborator)把設計描述成snapshot的形式。Snapshot是仿真器將調用的你的設計的表述,它和其它由compiler和elaborator產生的中間目標一起保存在庫中。NCLaunch的主窗口讓你可以連接你編譯和描述設計所需要的工具,當然還有其它的程序。你利用Tools和Utilitie

15、s菜單,或者你也可以利用工具欄里面的工具按鈕,你可以打開工具和其它程序。不是所有的工具和程序都放在工具欄里面,但是你可以通過自己定義工具欄來確定把自己喜歡的工具和程序放在工具欄里面。表2-1例出了在工具欄里面的工具。表2-1NCLaunch工具欄的按鈕按鈕工具VHDL編譯器(compiler)Verilog編譯器(compiler)描述器(Elaboretor)仿真/仿真器(Simulator)NC瀏覽(NCBrowse)波形察看窗口(WaveformWindow)1編譯你的設計:選中在設計時建立的Verilog文件:can_counter.vcoin_counter.vdrink_machi

16、ne.vdrink_machine_top.vtest_drink.v.要選擇多個檔,需要按住Ctrl鍵并選中每個檔。2按下編譯器按鈕:在窗口底部的輸入輸出區域會顯示由于你的選擇而輸入的命令和運行后的結果,同時它也顯示了NC-Verilog在編譯過程中的消息。默認的,NC-Verilog將產生一個叫INCA_libs的目錄以及一個叫worklib的目錄。所有設計中的模塊都將編譯在worklib目錄下面。注意INCA_libs現在就出現在了NCLauch左邊的瀏覽器中,同時設計的庫worklib也加入了庫瀏覽器(右邊窗口)中。描述(elaborate)你的設計要描述(elabrate)你的設計,

17、典型的你要展開你的庫(worklib),選擇頂層(top-level)的單元,然后選擇描述(elabrate)按鈕。盡管如此,為了做一個指南,這里在你描述以前你必須設置一些選項。按照以下幾步進行選項的選擇然后描述你的設計:1通過電擊帽子圖示旁邊的加號展開工作庫(worklib)2展開頂層設計單元,在這個例子中,頂層設計單元是一個Verilog的測試模塊:test_drink.3選擇module4選擇Tools-Elaborator以打開Elaborate模式,如圖2.3注意這里的AccessVisibility按鈕選中并且它的值是All,這個選項意味著全部存取(讀,寫,連接探測)來仿真目標,這

18、樣你就可以在仿真的數據庫里面探測目標和范圍,調試你的設計。注意:在使用NCLaunch時,默認是可以調用仿真目標的。但是用命令行接口的時候,進入默認是關閉了的,你必須要輸入-access命令來啟動elaborator,例:ncelab-access+rwcworklib.test_drink:module5.在這個飲料機中只有一個模塊包含了時間表的編譯指示。因為其它模塊都沒有定義時間表,為了防止elaborator報錯,這里啟動OtherOption選項然后再文本框輸入-timescale1ns/1ns,如圖2.3:6.按下OK以開始描述(elaborate)設計。底部的輸入輸出窗口顯示了nc

19、elab命令,它就是由于你的選擇而輸入的命令,然后還顯示了theelaboratorgenerates的消息。提示如果你收到了elaboratorerror的消息你可能是由于在運行這幾步的時候出錯了。例如:你是不是選擇了正確的設計單元名稱?是否記得設置-timescale的選項當你收到了錯誤的消息以后重新進行這些步驟。啟動Simulator為了啟動simulator:1展開Snapshots文件夾,以顯示在你的庫中你可以選擇的snapshot。2選中你想要仿真的snapshot,如圖2.4圖2.4選中要仿真的snapshot按下仿真按鈕設計瀏覽器(DesignBrowser)和控制窗口(Con

20、solewindow)就會出現。你可以在設計瀏覽器(DesignBrowser)中進入設計的各個層,你也可以在控制窗口(ConsoleWindow)輸入命令來進入SimVision和TclSimulator。圖2.5展示了設計瀏覽器(DesignBrowser)打開時的情況。Simvision把仿真定位在了各層的上面,同時給它定義了名字叫做Simulator。設計的各層的最高層就放置在了仿真的下面。在這個例子中它就叫做test_drink。圖2.5DesignBrowser在啟動的時候,控制窗口(ConsoleWindow)有兩個窗口,如圖2.6。SimVison窗口讓你可以輸入SimViso

21、n的命令;仿真器(simulator)窗口讓你可以輸入Tclsimulator命令。在你運行仿真的時候,控制窗口(consolewindow)同樣會在SimVision和simulation窗口中顯示消息。圖2.6ConsoleWindowVideo:視頻編譯和描述設計文件。退出NCLaunch調用了仿真器(simulator)以后,你就可以退出NCLaunch了。要退出NCLaunch:點擊NCLaunch窗口使之成為當前窗口,然后選擇File菜單下的Exit。更多的信息本章向你介紹怎么用NCLaunch讓NC-Verilog運行在多步的模式下。其實還有其它的方法為你的設計仿真做準備。工具/

22、要素描述NCLaunch你可以利用NCLaunchncverilogsupport一步完成編譯源文件,描述設計,啟動仿真器,見NCLaunchUserGuide。NC-Verilog,MultipleStepmode你可以編譯了源文件,描述了設計然后用ncvlog,ncelab和ncsim命令啟動仿真器(simulator),見NC-VerilogSimulatorHelp中的Multi-StepInvocation(Library-BasedMode章節。NC-Verilog,SingleStepmode你可以用ncverilog命令完成對源文件的編譯和描述。見NC-VerilogSimul

23、atorHelp的Single-StepInvocationwithncverilog章節第三章設計仿真SimVision讓你控制和查詢你的設計仿真。他可以幫助你定位和特定的仿真事件相關的程序段。如果你發現設計中有錯誤,你可以直接編輯源文件,重新編譯和描述,而不用離開SimVision的環境。SimVision中你可以存儲個別目標或者范圍的仿真數據,這可以使得仿真數據盡量的小。晚些時候,你可以在Waveform中加載仿真數據再檢驗仿真的結果。選擇存儲的仿真數據你可以執行simulator命令來存儲仿真器運行過程中的仿真數據。Simulator命令在仿真過程中對設計進行探測,然后它把探測目標的值

24、存入數據庫。有兩種類型探測的命令:探測一個特殊的目標或多個目標。這些特殊目標的值存在數據庫中。探測一個特殊的范圍或多一個范圍。你可以選擇你想存儲的信息類型,比如說,這個范圍內的輸入信號,你能決定探測的是探測一些還是全部的范圍。要探測所有的模表和范圍,要從模塊的top開始:1.在設計窗口中,點擊test_drink圖示旁邊的加號,展開設計的層次結構。2.選擇top范圍。在右邊窗口里面的信號的列表列出了top范圍內的全部信號,如圖3.1。信號列表顯示了所有輸入信號,輸出信號,輸入輸出信號,內部信號,或者事務級的信號。圖3.1選擇top范圍選擇菜單Simulation-CreateProbeSimV

25、ision打開Probe的設置窗口,如圖3.2,這個窗口允許你選擇一層或者多層子范圍,選擇你要探測的信號類型,然后記錄探測信息到任何數據庫。圖3.2設置probe的窗口針對這個探測:選擇Includesub-scopes下拉菜單中的all選項以包含所有設計的子域。選擇Includewithineachscope下拉菜單中的all選項以包含輸入,輸出和端口。取消選中Addtowaveformdisplay。4.點擊OK確認probe的設置然后關掉窗口。提示如果你在控制窗口(consolewindow)輸入以下信息你就可以成功的創建probe:ncsimdatabase-openwaves-int

26、owaves.shm-defaultCreateddefaultSHMdatabasewavesncsimprobe-createtest_drink.top-depthall-all-shmCreatedprobe15.在控制窗口(consolewindow)中選擇SimulationRun。SimVision就會仿真仿真設計,然后把仿真的結果數據存在默認的數據庫里面。在它運行的時候將會顯示如下信息:ncsimrun400loadingmachinewith5cans400*machineempty!*700enternickel900enterdime1100enterquarter130

27、0enterdime1500enterquarter1500-drinkdispensed-1800enternickel2100enternickel2300enterdime2500enterdime2600*machineempty!*2700enterquarter2700nickelchanged3000enternickel3200enterdime3400enterquarter3600enterdime3800enterquarter3900-drinkdispensed-.-68400enterquarter68700enternickel69000enternickel69

28、200enterdime69400enterdimeSimulationcompletevia$finish(1)attime69600NS+0./test_drink.v:48$finish;ncsim提示當你完成了這些步驟,你的工作目錄下面將會出現一個新的名為waves.shm的目錄,它里面包含了waves.dsn和waves.trn兩個文件。如果它們的大小分別遠小于65500bytes和360bytes,那么在仿真過程中你就沒有探測到了所有的目標。為了糾正問題,在控制窗口(consolewindow)中選擇SimulationReinvokeSimulator重新啟動simulator或

29、者退出simulator再用下面的命令重新啟動simulator:ncsim-guiworklib.test_drink:module然后重新執行本章講的幾個步驟。更多的信息本章描述了設置探針(probe)和運用控制窗口(consolewindow)來啟動仿真器(simulation)。盡管如此,還有其它的方式來運行以上的步驟,如下:Tool(工具)/Feature(內容)Description(描述)$shm_open$shm_probe$shm_close你可以在你的Verilog源文件中調用這些系統任務。當你仿真你的設計的時候,這些系統任務打開你的數據庫,設置探針到希望的目標,當你仿真結

30、束的時候又關閉數據庫。在你的NC-VerilogSimulatorHelp中參閱DisplayingWaveformswiththeSimVisionWaveformViewer章節以得到這些系統任務的具體細節。database-openprobe-createrun你可以從tcl命令行接口中調用simulator命令,或者你也可以把它們都打包在一個命令文件中,以批處理模式來運行。參閱你的NC-VerilogSimulatorHelp中probe,database和run的章節Simulationdatabasemanagement(仿真數據管理)為了疹錯的方便你可以為不同的設計建立包含各自設

31、計成份的不同的仿真數據庫。或者你可以用其它工具打開數據庫。查閱SimVisionUserGuide第六章ManagingSimulationDatabasesProbes(探針)你可以打開,關閉探針,也可以刪除探針,或者你還可以在工具窗口中創建新的探針。當然你還可以就在Waveform窗口中增加一個信號的探針而不用設置探針的窗口來增加參閱SimVisionUserGuide第七章CreatingandManagingProbes。Breakpoints(斷點)或許你想仿真運行到某點的時候就停下來這樣方便你檢查運行的狀態。為了控制仿真在哪里停下可以設置breakpoint查閱SimVisionU

32、serGuide第八章SettingandManagingBreakpointsSimulationcontrol(仿真控制)你可以運行一個仿真到breakpoint停止,然后進入一個子程序。你也可以存儲仿真的狀態,或者是檢查點,然后在那個點重新啟動仿真。參閱SimVisionUserGuide第十章ControllingtheSimulation第四章以波形的形式研究仿真的資料波形顯示了信號在仿真過程中任意事件的值,它可以幫助你很好地理解你的設計的行為波形窗口(waveformwindow)可以讓你選擇你想要看的信號以及它在顯示的時候的基數,甚至你還可以自己建立一個顯示的形式,叫做mnemo

33、nicmap(助記符映射),這樣就可以讓圖以你最適應的方式顯示。選擇顯示的信號在設計瀏覽器(DesignBrowser),你可以選擇目標然后把它們放到波形窗口(Waveformwindow)中為了要選擇你想要顯示的信號到波形窗口(Waveformwindow)中:1.點擊EditBuffer按鈕打開editbuffer,如圖4.1。editbuffer讓你可以在不同的范圍內選擇目標,安排他們以你希望的順序顯示,然后把它們都列到波形窗口(Waveformwindow)中去圖4.1打開editbuffer2.在top模塊中選擇你想要在波形窗口(waveformwindow)中顯示的信號。為了取樣檢

34、查,選擇nickel_in,dime_in,quarter_in,dispense,nickel_out,dime_out,two_dime_out,andclk信號。當你點擊各個信號的時候,SimVision把它們加入到editbuffer中去。3.展開top,然后在vending模塊中選擇current_state把它加入editbuffer中去。4.點擊Waveform按鈕,讓這些信號在波形窗口(waveformwindow)中顯示。5.點擊隱藏EditBuffer按鈕,使editbuffer在設計瀏覽窗口收回。DisplayingDataintheWaveformWindow在波形顯示

35、窗口(waveformwindow)中,信號的名字和它們的當前值都顯示在了窗口的左邊,它們的波形顯示在了右邊。如圖4.2:圖4.2有波形顯示的波形顯示窗口(waveformwindow)提示你可以在一個有工具條的波形顯示窗口(waveformwindow)中進入設計瀏覽或者是設計搜索的窗口中去。更進一步的講解請查閱SimVisionUserGuide中的UsingtheDesignBrowserSidebar和UsingtheDesignSearchSidebar在波形窗口(waveformwindow)中,在波形數據的上方,你可以看到當前窗口中仿真的數據的啟始和終止時間。在波形數據的下方的滾

36、動條顯示的是整個仿真的時間。你可以通過輸入一個新的時間范圍來調整當前窗口中顯示的波形數據的范圍為了輸入一個新的范圍:在TimeRange文本框中輸入一個時間段.在這個例子中,輸入的是0:3000,如圖4.3:圖4.3輸入一個新的時間段2點擊Enter鍵以應用新的時間段。3在波形數據上方的下拉菜單中選擇Keepthisview,這樣你就可以保存你的縮放設置。如圖4.4:任意時刻,你能通過下拉菜單選擇來快速地回到顯示這個縮放段圖4.4存儲一個波形資料的情景在波形窗口(waveformwindow)中有兩個指標,分別叫做TimeA和Baseline。你可以把它們移到仿真時間的任意點,然后以它們為參考

37、點。輸入一個新的仿真時間:你可以拖動指標到你想要探測的時間點,也可以在指標時間輸入文本框中輸入一個仿真時間來實現目的。例,改變TimeA的仿真時間到16,700ns,如圖4.5:圖4.5設定指針時間控制波形數據的顯示波形窗口(waveformwindow)讓你可以控制波形數據的顯示方式,比如說你想讓信號數據在什么進制下進行顯示。例,要把的current_state顯示變成十進制:1.在波形窗口(waveformwindow)的目標列表中選擇current_state。2.在FormatRadix/Mnemonic菜單中選中Decimal(十進制)當觀察一個波形的時候,有時候把信號的值顯示成AS

38、CII碼串很有用。比如說,當current_state的值是1的時候,用戶投入了5美分;當current_state的值是2的時候,用戶投入了10美分。把current_state的波形顯示成5和10比顯示成1和2更容易理解。要把信號定義信號值為ASCII串,需要定義一個mnemonicmap:1.選擇WindowsToolsMnemonicMaps打開MnemonicMaps的屬性設置窗口,如圖4.6:圖4.6MnemonicMaps的屬性設置窗口當你定義了一個mnemonicmap,你不僅可以定義特殊信號的文本顯示方式,而且你還可以定義值在波形窗口(waveformwindow)中的顯示方

39、式,包括波形的形狀,聯合一個值的特殊情況的圖示和顏色。2.點擊新建Map按鈕,新建一個mnemonicmap.3.定義mnemonicmap的第一個入口,如下:a.改變默認的進制,點擊h不放然后選擇d.b.雙擊ValuesMatching區域,輸入0,然后按Tab鍵,進入RelabelAs區域。c.在RelabelAs區域,鍵入串idle然后按Tab鍵進入下個目標的ValuesMatching前面的區域顯示了Waveform窗口會在current_state等于0的時候怎么顯示。它將顯示一個里面寫著idle的長方形。4定義下面的狀態:ValuesMatchingRelabelAs0idle1f

40、ive2ten3fifteen4twenty5twenty_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由于MnemonicMap信息所顯示的值7.選擇FileCloseWindow關閉選項窗口。更多的信息本章描述了一些你顯示

41、和組織信息在波形窗口(waveformwindow)中顯示的方法。其它有些工具和內容可以對你顯示波形的時候有幫助:Tool/FeatureDescriptionDesignSearchWindow(搜索窗口)你可以不必關心各層的結構而在幾個數據庫里面搜索信號,變量和范圍參閱SimVisionUserGuide第五章SearchingforDesignObjectsGroupsandexpressions(組和等式)你可以把信號列到一起或者列在一個式子里面。這些動作可以讓你把信號的設置看成一個信號的實體參與SimVisionUserGuide第十五章OrganizingSignalsintoGr

42、oups,Expressions,andComparisons。Markers(指針)你可以放置類似于指針的標記在仿真的時間軸上面。你可以在各個標記之間切換以對比仿真在不同時間的結果。但是你不能用標記與測量的作用。參閱SimVisionUserGuide第十六章,NavigatingthroughSimulationTimeMeasurementwindow(測量窗口)你可以在一個特殊的仿真時間點上建立一個用于測量變量的特征值的平臺。比如說,你可以看它們的范圍,最大值,最小值。在測量相似的信號的性質的時候這個就非常有用。參閱SimVisionUserGuide第二十章MeasuringSign

43、alValues。Preferences(參數設置)你可以指定工具欄在SimVision窗口中的風格,設置波形窗口(waveformwindow)的默認值,為源瀏覽器(sourcebrowser)選擇文本編輯器,另外也可以設置SimVision。參閱SimVisionUserGuide第二十一章SettingPreferencesSimulationCycleDebugger(仿真循環調試器)SimulationCycleDebugger讓你可以讓你看到整個仿真過程,在任意時間點停止,deltacycle,仿真暫停,或者執行預定進程。它對Verilog-XLorAMS的設計者來說是不可用的。.

44、參閱SimVisionUserGuide第十一章DebuggingattheDeltaCycleLevel第五章設計的調試波形顯示窗口(waveformwindow)可以幫助你找到設計中的錯誤。通過定義環境,情況來觀察波形數據,從而找到錯誤發生的地方。當你找到了錯誤的地點,你就可以對設計的源文件進行編輯,然后再運行simulator來檢驗你改變后的程序。搜尋波形中的環境,情況環境,情況是一個你想要觀察的在波形窗口(waveformwindow)中的信號的值的組合。比如說,你可以定義一個環境發生的條件是dispense信號和nickel_out信號的值是一樣的時候:1.在波形窗口(wavefor

45、mwindow)中選擇quarter_in和dispense信號,然后選擇EditCreateCondition.SimVision將打開ExpressionCalculator,如圖5.1:圖5.1ExpressionCalculator窗口ExpressionCalculator創建一個默認的由AND(與)邏輯組成的等式。這個狀況表達式在兩個信號有相同值的時候為真。如果你想觀察其它的情況你可以編輯這個表達式。2.在名字輸入框中鍵入狀況表達式的名字,比如說:quarter_inANDdispense.3.點擊波形按鍵,以便把狀況的波形加入到波形窗口(waveformwindow)。4.選擇F

46、ileCloseWindow關閉ExpressionCalculator窗口。5.在波形窗口(waveformwindow)中選擇這個狀況,然后運用NextEdge和PreviousEdge按鈕用于定為狀況發生的地點分析波形,找出錯誤。分析波形可以幫助你找到設計中的問題,例:把仿真的時間定位到16,700ns。在這個時候,機器的狀態是空閑提示這里其實有很多辦法可以設置仿真時間。在指標時間文本框中輸入你想要的時間。拖動第一個指針到你想要的時間去選中dispense信號,然后噢點擊NextEdge按鈕移植到它到了你想要的時間。選中current_state信號然后點擊NextEdge按鍵,以便跟上

47、由時鐘周期到時鐘周期的事件先后順序。用戶投入一個nickel,機器進入下一個狀態five。用戶再投入一個dime,機器就進入了fifteen狀態。用戶再投入一個quarter,機器則進入了狀態forty。用戶再投入一個dime,機器進入狀態fifty.在這個時鐘周期中,用戶還投入了quarter。你當然會希望它會立馬變到狀態twenty_five,但是實際上卻不是。機器進入空閑狀態,然后給dispense賦值為1;quarter被忽略了。當在下一個時鐘周期下開始的時候,用戶投入了一個nickel,機器就裝入狀態five.圖5.2顯示了錯誤發生的波形。在這個時間之內,機器出一罐飲料,然后機器進入

48、空閑狀態,quarter_in信號變高電平。當用戶再投入一個neckel的時候機器就進入了狀態five。圖5.2查找設計中的錯誤在TimeRange區域,在下拉列表中選擇keepthisVie,這樣你就可以很方便的再回來查看這個錯誤的。Video在波形窗口(waveformwindow)中分析仿真結果。創建自定義的仿真數據查看另一個分析仿真結果的方法是運用Register窗口,在那里你可以創建自定義的仿真數據的查看,包括了自由形式的文本輸入以及圖形化的要素。一個Register窗口可以有幾頁,每頁都有自己的顯示方式。在Register窗口中創建頁:1.在波形窗口(waveformwindow)

49、中選擇你想要分析的信號,比如說,nickel_in,dime_in,quarter_in,dispense,nickel_out,dime_out,two_dime_out,clk,andcurrent_state.2.點擊ClicktheRegister按鈕,以便把信號送入到Register窗口中去,如圖5.3:圖5.3加入信號到Register窗口窗口右邊的按鈕讓你可以在窗口中自由地畫圖形化的目標,文本,還有管理目標布局。當你把鼠標放在這些按鍵上面的時候就會有快速提示,告訴你按鍵的作用。3.把mnemonicmap應用到register窗口中來,選擇current_state信號然后選擇F

50、ormatRadix/MnemonicCurrentState.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,然后點擊NextEdge按鈕。時間軸會自動運行到該選中的信號的下一個電平邊沿,然后Register窗口會更新各個信號的值,并把它們的值顯示出來。7.點擊PreviousEdge按鈕,會使得仿真時間軸向選中信號的前一個電平邊沿變化。8.在仿真時間的16700ns開始,選擇current_state信號,然后點擊NextEdge按鈕,就可以在Register窗口中看到和波形窗口(waveformwindow)中看到的一樣的事件隊列,那是:用戶增加一個nickel,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論