1. 程式人生 > >Vivado使用技巧(19):使用Vivado Simulator

Vivado使用技巧(19):使用Vivado Simulator

Vivado Simulator基本操作

Vivado Simulator是一款硬體描述語言事件驅動的模擬器,支援功能模擬和時序模擬,支援VHDL、Verilog、SystemVerilog和混合語言模擬。點選執行模擬後,工具欄中顯示了控制模擬過程的常用功能按鈕:
這裡寫圖片描述
這些控制功能依次是:

  • Restart:從0時刻開始重新執行模擬;
  • Run All:執行模擬一直到處理完所有event或遇到指令指示停止模擬 ;
  • Run For:按照設定的時間執行模擬,每點選一次都執行指定時長;
  • Step:執行模擬直到下一個HDL狀態;
  • Break:暫停模擬執行;
  • Relaunch Simulation:重新編譯模擬原始檔且restart模擬,當修改了原始碼並且儲存了檔案後,只需要Relaunch即可,而不必關閉模擬再重新開啟執行。

Scope視窗

Vivado Simulator中將HDL設計中的一個層次劃分稱作一個scope,比如例項化一個設計單元便建立了一個scope。在Scope視窗中可以看到設計結構,選中一個scope後,該scope中所有的HDL物件都會顯示在Object視窗中。可以選擇將Object視窗中的物件新增到波形視窗中,這樣便可以觀察到設計中的內部訊號。
這裡寫圖片描述
Scope視窗中可以在Settings中設定顯示哪種型別的scope,但注意當某一scope被關閉顯示後,其內部的所有物件(不論什麼型別)都會被隱藏。對某一scope右鍵,彈出選單如下:
這裡寫圖片描述

  • Add to Wave Window:將所有狀態為可見的HDL物件新增到波形視窗,值從新增到模擬波形的時刻開始顯示,想要顯示插入之前的值,必須restart(注意不是relaunch,否則會耗費更多的時間);
  • Go to Source Code:開啟定義選中scope的原始碼;
  • Go to Instantiation Source Code:開啟例項化選中例項的原始碼(對於Verilog而言是module,對於VHDL而言是entity)
  • Log to Wave Database:可以選中記錄當前scope的物件,或者記錄當前scope的物件與所有下級的scope。相關資料會儲存在project_name.sim/sim_1/behav目錄下的wdb檔案中。

Objects視窗

該視窗中顯示了當前選中的scope所包含的HDL物件,不同型別或埠的物件顯示為不同的圖示,在Settings中可以設定顯示的型別:
這裡寫圖片描述


Object的右鍵選單中有一些新的設定功能:

  • Show in Wave Window:在波形視窗中高亮選定的物件;
  • Radix:設定Objects視窗中選定物件的值的顯示數字格式,包括預設、2進位制(Binary)、16進位制(Hexadecimal)、8進位制(Octal)、ASCII碼、無符號10進位制(Unsigned Decimal)、帶符號10進位制(Signed Decimal)和符號量值(Signed Magnitude)。注意此處設定不會影響到波形視窗中的顯示方式;
  • Defult Radix:設定Radix中Default所表示的值;
  • Show as Enumeration:顯示SystemVerilog列舉訊號的值,不選中時,列舉物件的值按radix的設定方式顯示;
  • Force Constant:將選中物件的值強行定義為一個常量;
  • Force Clock:將選中物件強行設定為一個來回振盪的值(像時鐘一樣);
  • Remove Force:移除選定物件的所有Force設定。

Wave視窗

當執行模擬後,會自動開啟一個波形視窗,預設顯示模擬頂層模組中的HDL物件的波形配置。如果關閉了波形視窗,可以點選Window->Waveform重新開啟。
這裡寫圖片描述
視窗中的HDL物件和分組情況稱作一個波形配置,可以將當前配置儲存為wcfg檔案,下次執行模擬時就不需要重新新增模擬物件或分組。視窗中還有遊標、記號、時間尺等功能幫助設計者測量時間。右鍵選單中有一些新的設定功能:

  • Show in Wave Window:在Object視窗中高亮選定的物件;
  • Find/Find Value:前者是搜尋某一物件,後者是搜尋物件中的某一值;
  • Ungroup:拆分group或虛擬匯流排(virtual bus);
  • Rename/Name:前者設定使用者自定義的物件顯示名稱,後者選中名稱的顯示方式:long(顯示所處層次結構)、short(僅顯示訊號名稱)、custom(Rename設定的名稱);
  • Waveform Style:設定波形顯示為數字方式或模擬方式;
  • Signal Color:設定波形的顯示顏色;
  • Divider Color:設定隔離帶的顏色;
  • Reverse Bit Order:將選定物件的數值bit顯示順序反轉;
  • New Virtual Bus:將選定物件的bit組合為一個新的邏輯向量;
  • New Group:將選定物件新增到一個group中,可以像資料夾一樣排列;
  • New Divider:在波形視窗中新增一個隔離帶,將訊號分開,便於觀察。

Vivado Simulator會將配置(使用者介面控制和Tcl命令)儲存到模擬執行目錄的xsimSettings.ini檔案中,下此開啟模擬時就會自動恢復相關設定。使用此功能時在Simulation Settings中關閉clean up simulation files,以防止重新執行模擬時配置檔案被刪除。如果想要恢復預設設定,則開啟clean up simulation files,或直接刪除xsimSettings.ini檔案即可。

本文只對Wave視窗做了簡單介紹,本系列第20篇對其中的具體術語和功能使用做了詳細描述。

執行功能和時序模擬

工程建立好後,便可執行行為級模擬(behavioral simulation),在成功地綜合和實現之後,可以執行功能模擬(functional simulation)和時序模擬(timing simulation)。在Flow Navigator中點選Run Simulation,彈出選單中選擇需要執行的模擬:
這裡寫圖片描述

  • 綜合後功能模擬:綜合後,通用的邏輯轉換為器件相關的原語,綜合後功能模擬可以確保綜合優化不會影響到設計的功能性。執行時,會生成一個功能網表,並使用UNISIM庫。
  • 實現後功能模擬:實現後,設計已經在硬體中完成佈局和佈線工作,實現後功能模擬可以確保物理優化不會影響到設計的功能性。執行時,會生成一個功能網表,並使用UNISIM庫。
  • 綜合後時序模擬:該模擬使用器件模型中估算的時間延遲,並且不包括內部連線延遲。通用的邏輯轉換為器件相關的原語後,可以使用估算的佈線和元件間延遲。使用此模擬可以在實現之前檢視潛在的時序嚴苛路徑。
  • 實現後時序模擬:該模擬使用真實的時間延遲。使用該模擬來檢查設計功能是否能工作在設定的速度上,可以檢測出設計中未約束的路徑、非同步路徑時序錯誤(比如非同步復位)。

新增模擬啟動指令碼檔案

設計者可以建立一個批處理檔案,新增到工程中,其中的命令將在模擬開始後執行,常用的流程步驟如下所示:

  1. 建立一個包含模擬命令的Tcl指令碼,比如如果想模擬執行到5μs,新增“run 5us”命令;如果想監測設計內部訊號,將其新增到波形視窗中,新增“add_wave/top/I1/signalName”命令;
  2. 將指令碼檔案命名為post.tcl並儲存;
  3. 將post.tcl檔案以模擬原始檔的形式新增到工程中,會顯示在Sources視窗的Simulation資料夾下;
  4. 在模擬工具欄中點選“Relaunch”重新編譯執行模擬,Vivado會自動讀取並執行檔案中的命令。