Vivado使用技巧(20):Waveform功能詳解

FPGADesigner發表於2018-08-22

使用波形配置檔案

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 TransitionNext 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(精確值)。PreviousNext在結果之間切換,如果沒有找到工具條會顯示“Value not found”。

相關文章