Vivado使用技巧(20):Waveform功能詳解
使用波形配置檔案
Vivado Simulator允許使用者自定義波形顯示方式,當前的顯示狀態稱作波形配置。波形配置可以儲存為WCFG檔案,供以後使用。一個波形配置對應一個Wave視窗,沒有儲存的波形配置顯示為untitled。開啟模擬後,File選單中有與波形配置相關的指令:
這些控制功能依次是:
- New Waveform Configuration:建立一個新的波形配置,Vivado會開啟一個新波形視窗,但是不包含任何HDL物件,設計者從Scope或Object視窗中人工新增;
- Open Waveform Configuration:開啟配置檔案同時開啟一個波形視窗,會顯示儲存在WCFG檔案中物件的波形資料;
- Saving a Wave Configuration:儲存當前波形配置到WCFG檔案中。
如果關閉了模擬,下次需要使用是隻是想檢視上次模擬的結果,而不是重新執行模擬,點選Flow選單下的Open Static Simulation,選擇WDB檔案即可(在project.sim/sim_1/behav路徑下)。靜態模擬模式下,Vivado Simulator會從WDB檔案中讀取資料並顯示。
執行模擬過程中,會將顯示的HDL物件的波形活動、Sope視窗中的物件、Objects視窗中的物件儲存到WDB檔案中。但注意,Vivado不能開啟2014.3版本之前建立的WDB檔案。
視窗物件(wave object)
向波形配置中新增一個HDL物件,其實並不是直接新增該物件,Vivado會建立一個視窗物件,該物件與HDL物件有聯絡也有區別。藉助此特性,一個HDL物件可以建立多個與其相關的視窗物件,且每個視窗物件的顯示設定可以不同。比如一個用16進位制顯示,另一個用10進位制顯示。
由HDL物件而來的視窗物件稱作設計視窗物件,除此之外,還有其它的物件型別:隔離帶(divider)、群組(group)、虛擬匯流排(virtual buses)。這些物件都是為了提高觀察波形的便捷性,前兩者示例如下圖。虛擬匯流排是將多個訊號組合為一個匯流排顯示。
波形視窗中包含Name、Value和波形三部分。
Name預設顯示為short形式,右鍵選單中Rename指令可以建立custom名稱,Name指令選擇顯示方式為short、long(顯示物件所處層次路徑)或custom。
Value根據格式和基數設定顯示方式不同,注意波形視窗中的radix和Objects視窗中的radix設定只作用於各自的視窗。
預設Value顯示的基數為16進位制,想要改變預設設定,在波形視窗中點選Settings,選擇一個Radix:
順便再介紹下其它設定選項實現的功能效果:
- Elide Setting:如果訊號名字太長無法完整顯示,該選項設定從哪邊開始省略字元顯示,包括left、middle和right。
- Draw Waveform Shadow:選中,波形顯示會帶有陰影效果。
- Show signal indices:選中,波形物件的Name左側會顯示對應的行數,並且可以拖動行數之間的橫線來改變波形物件的高度。
- Show grid lines:選中,波形視窗中會顯示網格線。
- Snap to Transition/Floating Ruler:與測量有關,具體在下文介紹。
在選中物件的右鍵選單->Radix中可以設定單個訊號的基數(應與該訊號的本質相符),常見的基數已經非常熟悉。Radix還可以選擇為Real,設計者可以在Real Setting中設定Value按指定的定點數或浮點數格式顯示,提供了極大的便利性。
該功能非常實用,比如CORDIC IP核在計算arctan函式時,輸出資料為帶符號、小數點從MSB三位後的格式,只需要在這裡設定相應格式,就可以直接顯示為-pi~pi的範圍,而不需要人工計算。
設定模擬波形顯示方式
有時匯流排資料用模擬波形的方式觀察更直觀,但注意訊號的Radix設定必須符合其本質,才能顯示正確的波形。比如一個匯流排資料按帶符號二進位制補碼編碼,Radix必須設定為一種帶符號格式;如果一個資料為浮點數格式,必須選擇real並做正確的設定。
在物件右鍵->Waveform Style,可選擇模擬(Analog)或數字(Digital)顯示方式,Anolog Settings中可以設定模擬波形的顯示方式。注意:模擬顯示僅支援位寬不超過64Bits的匯流排。
下面介紹一下各選項的設定方法和效果:
- Row Height:規定選中物件的顯示高度,單位為畫素點數目,相當於收縮或拉伸波形的高度(digital顯示方式高度為20,analog顯示高度預設為100)。
- Y Range:規定波形區域的數值顯示範圍。Auto模式下根據當前的模擬時間內的值自動選擇範圍,且會隨時間更新;Fixed設定固定的顯示範圍。
- Interpolation Style:設定將資料點連成線的插值方式,Liner表示線性插值,Hold表示保持插值,兩個點之間的資料會保持前一個點的資料值。
- Off Scale:設定超出顯示範圍的波形該如何處理,Hide會隱藏超出範圍的部分,Clip會超出範圍為的部分限制在最大值/最小值(即削頂),overlap在超出範圍時仍然會顯示波形,但是波形會疊在其它波形物件上。
- Horizontal Line:選中會在指定值處畫一條水平線。
此外,某些匯流排訊號的有效順序可能與定義的Bit順序相反,可以在右鍵選單中選擇“Reverse bit order”交換匯流排Bit順序,如bus[7:0]交換後為bit[0:7],訊號的值和波形也會跟著改變。
在時間刻度上右鍵,可以設定顯示時間的方式,包括fs、ps、ns、us、ms、s,Auto會自動選擇最適合的單位,Default表示HDL設計中規定的模擬精度。此外還有Samples以離散取樣數值的方式顯示,User為使用者自定義的時間單位,但這兩個設定對HDL無效。
觀察波形輔助工具
上文提到視窗物件中還包括如下三類,來幫助設計觀察模擬結果:
- Group:一個Group相當於一個容器,將相關的波形物件組合在一個資料夾中。選中想要新增的物件,右鍵->New Group即可建立一個新組。注意選中group後delete會刪除掉該組和內部所有的物件,如果只是想解散組,使用右鍵選單中的Ungroup。
- Divider:divider用來隔離不同的HDL物件,點選訊號的右鍵選單中->New Divider,會在其下方建立一條隔離帶,delete即可刪除。
- Virtual Bus:可以將多個標量或向量組合在一起作為虛擬匯流排顯示,按順序選中要新增的物件,右鍵->New Virtual Bus。同樣delete會刪除掉虛擬匯流排所有物件,僅刪除虛擬匯流排應使用Ungroup。
除此之外,Vivado還提供了一些其它特性幫助設計者分析波形中的資料:
1.游標
在波形上單擊,會出現黃色的游標,稱之為主游標;按住Shift鍵,再在另一個地方點選,會出現第二個游標,稱之為輔助游標(虛線,會替換原主游標所在位置)。頂部會顯示每個游標所處的時間點,底部有刻度尺且顯示兩者之間的時間差(顯示刻度尺需要在設定中選中Floating Ruler)。單擊波形視窗的任意地方,即可隱藏輔助游標。
如果設定中選中了Snap to Transition,拖動游標過程中會有一個根據資料轉換狀態變換的圈(不選中該功能始終為空心圈,不會變化)。空心圈○表示游標處在訊號的兩個過度點之間(過度點即為值發生改變的點);實心圈●表示游標位於過度點處或標記(marker)上。如下圖所示:
通過此功能,設計者即可準確地將游標置於訊號的邊緣處。波形視窗工具欄中還有Previous Transition和Next Transition兩個功能,可以改變游標位置到選定物件的前一個或後一個過度點。可以同時選中多個物件。
2.標記
標記(Marker)用來指示波形中設計者關心的重大事件,可以對與標記事件相關的時間進行測量。在視窗工具欄中點選Add Marker(如下圖紅框)新增標記,自動測量並顯示標記與游標之間的時間差。
標記同樣支援Snap to Transition功能,讓設計者可以準確地標記訊號邊緣。在標記上右鍵,選中Delete Marke**r或**Delete All Markers即可刪除標記。底部也會顯示時間刻度尺輔助時間測量,0時刻從輔助游標開始,如果沒有輔助游標會從選中的Marker處開始。
3.查詢功能
右鍵選單中Find/Find Value可分別用於查詢某一物件或者選中物件中的特定值。空白框中輸入帶查詢字串,必須與設定的Radix相符,否則編輯框會變為紅色提示錯誤(如十六進位制就只能輸入0-F)。
句號的點‘.’相當於萬用字元,如查詢“1.2”,便會找到102、112等等。Match用於設定匹配模式,Beginning、End(以查詢內容為開頭或結尾)或Exact(精確值)。Previous和Next在結果之間切換,如果沒有找到工具條會顯示“Value not found”。
相關文章
- Vivado使用技巧(4):查詢功能詳解
- Vivado使用技巧(14):IO規劃方法詳解
- Vivado使用技巧(29):約束功能概述
- Vivado使用技巧(18):模擬功能概述
- Vivado使用技巧(19):使用Vivado Simulator
- Vivado使用技巧(3):Force Up-to-Date功能
- Vivado使用技巧(27):RAM編寫技巧
- Vivado使用技巧(26):HDL編寫技巧
- Vivado使用技巧(17):建立IBIS模型模型
- Vivado使用技巧(6):Messages視窗管理
- Vivado使用技巧(33):時序異常
- Vivado使用技巧(25):Block Synthesis技術BloC
- Vivado使用技巧(9):COE檔案使用方法
- Vivado使用技巧(11):設定FPGA配置模式FPGA模式
- Vivado使用技巧(8):Core Container打包IP核AI
- Vivado使用技巧(34):路徑分割現象
- Vivado使用技巧(28):支援的Verilog語法
- Vivado使用技巧(5):屬性編輯器的使用
- Vivado使用技巧(30):使用時序約束嚮導
- Vivado使用技巧(16):SSN轉換噪聲分析
- Vivado使用技巧(31):時鐘的約束方法
- Vivado使用技巧(23):綜合執行與OOC
- Vivado使用技巧(21):模擬中的Debug特性
- Vivado使用技巧(15):DRC設計規則檢查
- Vivado使用技巧(13):CSV檔案定義IO Ports
- Vivado使用技巧(32):IO延遲的約束方法
- Vivado使用技巧(7):使用IP核自帶Testbench進行模擬
- Vivado使用技巧(10):編輯與改寫IP核原始檔
- Vivado使用技巧(24):HDL/XDC中設定綜合屬性
- Vivado使用技巧(22):綜合策略與設定的選擇
- 20個Laravel Eloquent 使用技巧Laravel
- Vivado使用技巧(12):設定DCI與內部參考電壓
- 【進階篇】Redis實戰之Jedis使用技巧詳解Redis
- Nginx高階功能詳解Nginx
- ABAQUS 2022新增功能詳解
- Apollo功能及原理詳解
- 20、聯表查詢JoinON詳解
- yocto-第20篇-Toaster使用技巧(3)-待續AST