眾所周知的事實是,驗證消耗了大約 70% 的產品周期時間,根據 2018 年進行的一項調查,驗證工程師花費大約 44% 的時間進行調試。 SoC 復雜性的增加導致驗證環境中使用的組件數量增加,這導致日志文件龐大,因為從這些組件中打印了一些信息。改進這些日志變得勢在必行,因為它們是最常用的調試手段之一。這就需要開發一種定制打印機,它可以有效地打印有用的信息以進行調試。自定義事務打印機,稱為 xaction_custom_printer,是一種自定義打印機,有助于提高調試效率,減少日志大小,提高可讀性,從而提高整體生產力。
隨著片上系統(SoC)設計面積和復雜性的增加,驗證的責任和工作量巨大,成為整個SoC設計流程的瓶頸。因為驗證就是檢查設計的正確性,所以任何驗證環境中最關鍵的部分之一就是預期輸出計算。此類 SoC 的每個模塊之上都有許多驗證組件,每個設計驗證組件通常由一個監視器組成。這些預期和實際輸出由監視器觀察,監視器直接/間接在日志中打印此信息。
如果實際輸出與預期輸出之間存在任何差異,則設計驗證工程師會花費大量時間進行調試。盡管有冗長的機制,但驗證工程師需要最少的消息進行調試,因為通常會有非常長的日志包含詳盡的事務數據包。為了解決這個問題,開發了 xaction_custom_printer。
第 2 節解釋了定制轉換打印機如何解決驗證工程師面臨的問題以及對這個組件的需求。第 3 節展示了如何開發組件的基本思想。第 4 節顯示了可以使用此自定義事務打印機的兩種方式以及一些代碼,以便更好地理解。第 5 節強調了自定義事務打印機相對于使用通用事務數據包的行、樹和表格打印機的優勢。
為什么我們需要自定義事務打印機?
在驗證過程中,特別是在初始階段,當 RTL 設計不成熟時,測試過程中可能會出現很多故障。工程師可以通過日志文件識別故障原因。通常情況下,工程師需要查看交易數據包以查看特定變量在特定時間戳的狀態。理想情況下,日志文件中會打印數百個此類數據包以進行測試。
以任何協議的數據包為例,它包含很多信息,如地址、讀地址、寫數據、讀數據、操作(讀/寫)和模式(單次/突發)。數據包中的這些變量中的至少一個可以具有數組。對于數組大小從幾十到幾百不等的情況,日志文件會變得非常龐大,這些數據包會打印多次。除此之外,調試過程還需要花費大量時間查看這些日志。在這些日志中,來自組件的轉換數據包被非常頻繁地打印出來,并在每次從組件調用它們時以不同的時間戳顯示存儲在其中的數據。為了調試,當使用 uvm_default_table_printer 時日志的數組大小很大時,用戶需要在日志中來回切換。
SystemVerilog UVM包含一個 uvm_printer 類,它為打印各種格式的 uvm_objects 提供了一個接口。uvm_printer 的子類型實現不同的打印格式或策略。這些子類型包括 uvm_printer、uvm_line_printer、uvm_tree_printer、uvm_table_printer。我們已經開發了一個用戶定義的打印機,它將致力于消除 uvm_table_printer 的缺點。
xaction_custom_printer 是從 uvm_printer 擴展而來的,打印機的輸出格式看起來像是 uvm_table_printer 和 uvm_line_printer 的混合體,因此結合了兩者的優點。xaction_custom_printer 簡潔地顯示數據包,以像表格打印機一樣分區良好的方式顯示變量的名稱和值,并且在某種程度上類似于行式打印機的多行。
這臺打印機的輸出可以在一行中使用,直到某個預定義的字符,之后它會在不同的行中繼續。這種類型的輸出在數組很大的地方很容易閱讀。如果在 uvm_table_printer 中打印了相同的數組,工程師將需要多次上下滾動日志。由于是單行,所以不需要上下多次。打印機的格式允許清楚地看到變量的名稱和值,這是調試所需的全部內容。
這臺打印機是如何開發的?
為了開發自定義打印機,所需的打印格式在 emit() 函數中進行了編程,該函數覆蓋了父類 (uvm_printer) 的相同函數。此處顯示了有關如何開發組件的基本思想的圖示。
如何使用這臺打印機?
用戶只需要將文件包含在包或文件列表中即可包含在編譯流程中,并且需要將其作為函數調用。有兩種使用本打印機的方法。
默認打印機機制 - 用戶可以將此打印機設置為 uvm_default_printer,如下圖 2 所示,因此項目/SoC 中的所有打印都將以這種格式打印。
圖 2. 將自定義事務打印機設置為 uvm_default_printer
選擇性打印機機制 - 用戶只能通過在 sprint 中的交易項目的 convert2string 中傳遞打印機來為僅選定的塊配置此打印機,如下面的圖 3 所示。
圖 3:為選定塊使用 xaction_custom_printer 的方法
為了用這臺打印機打印數據包,可以通過調用這個函數來完成,如下圖4所示。
圖 4:使用 convert2string 打印交易項目的方法
用戶還可以使用自定義事務打印機打印事務數據包,以便將數組打印在單獨的行中,并將標量變量保持在同一行中。這種類型的交易數據包打印機制將幫助用戶一次讀取數組內容。5.5 節展示了這個交易包的外觀示例
插圖
這是一個例子來展示 xaction_custom_printer 相對于其他三個 uvm_printer 的優越性。在示例中,我們采用了一個通用數據包。以下變量用于解釋此自定義打印機相對于默認打印機的優勢。
圖 5:uvm_sequence_item 中的通用數據包(事務項)
1.1 使用行式打印機輸出
1.2 使用樹形打印機輸出
5.3 使用臺式打印機輸出
5.4 使用自定義打印機輸出
定制打印機的優勢
顯示調試最需要的信息
減少日志大小
提高可讀性
通過提高調試效率來節省時間
簡潔的外觀
Custom Transaction Printer 是我們在 eInfochips 開發的一個組件,旨在為驗證工程師面臨的問題之一提供解決方案。使用通用數據包示例顯示了這款定制打印機相對于內置 uvm 打印機的優勢。
審核編輯:郭婷
-
soc
+關注
關注
38文章
4193瀏覽量
218694 -
打印機
+關注
關注
10文章
776瀏覽量
45844
發布評論請先 登錄
相關推薦
評論