SoC 復(fù)雜性的增加會(huì)導(dǎo)致驗(yàn)證環(huán)境中使用的組件數(shù)量增加,這會(huì)導(dǎo)致日志文件龐大,因?yàn)閺倪@些組件打印了多個(gè)信息。必須優(yōu)化這些日志,因?yàn)樗鼈兪亲畛S玫恼{(diào)試方法之一。這就需要開發(fā)一種定制打印機(jī),以有效地打印有用的信息以進(jìn)行調(diào)試。自定義事務(wù)打印機(jī)(稱為 xaction_custom_printer)是一種自定義打印機(jī),可幫助提高調(diào)試效率、減小日志大小、提高可讀性,從而提高整體生產(chǎn)力。
隨著片上系統(tǒng)(SoC)設(shè)計(jì)的面積和復(fù)雜性不斷增加,驗(yàn)證責(zé)任和工作量巨大,成為整個(gè)SoC設(shè)計(jì)流程的瓶頸。由于驗(yàn)證就是檢查設(shè)計(jì)的正確性,因此任何驗(yàn)證環(huán)境中最關(guān)鍵的部分之一是預(yù)期的輸出計(jì)算。在此類SoC的每個(gè)模塊上都有許多驗(yàn)證組件,每個(gè)設(shè)計(jì)驗(yàn)證組件通常由一個(gè)監(jiān)視器組成。這些預(yù)期和實(shí)際輸出由監(jiān)視器觀察,監(jiān)視器直接或間接地在日志中打印此信息。
設(shè)計(jì)驗(yàn)證工程師花費(fèi)大量時(shí)間進(jìn)行調(diào)試,以確定實(shí)際輸出與預(yù)期輸出之間是否存在任何差異。盡管有詳細(xì)機(jī)制,但驗(yàn)證工程師需要最少的消息進(jìn)行調(diào)試,因?yàn)橥ǔS刑貏e長的日志具有詳盡的事務(wù)數(shù)據(jù)包。為了解決這個(gè)問題,制定了xaction_custom_printer。
第 2 節(jié)解釋了定制過渡打印機(jī)如何解決驗(yàn)證工程師面臨的問題,從而滿足對(duì)該組件的需求。第 3 節(jié)展示了組件開發(fā)的基本思想。第 4 節(jié)介紹了使用此自定義事務(wù)打印機(jī)以及一些代碼段以更好地理解的兩種方式。第 5 節(jié)重點(diǎn)介紹自定義事務(wù)打印機(jī)相對(duì)于使用通用事務(wù)數(shù)據(jù)包的行式、樹形和表格式打印機(jī)的優(yōu)勢。
為什么我們需要自定義交易打印機(jī)?
在驗(yàn)證過程中,特別是在初始階段,當(dāng)RTL設(shè)計(jì)不成熟時(shí),測試過程中可能會(huì)出現(xiàn)許多故障。工程師可以通過日志文件確定故障原因。通常情況下,工程師需要查看事務(wù)數(shù)據(jù)包,以查看特定時(shí)間戳處某些變量的狀態(tài)。理想情況下,日志文件中會(huì)打印數(shù)百個(gè)此類數(shù)據(jù)包以進(jìn)行測試。
以任何協(xié)議的數(shù)據(jù)包為例,它包含大量信息,如地址、讀取地址、寫入數(shù)據(jù)、讀取數(shù)據(jù)、操作(讀/寫)和模式(單/突發(fā))。數(shù)據(jù)包中至少有一個(gè)變量可以具有數(shù)組。對(duì)于陣列大小從幾十到幾百不等的情況,日志文件會(huì)變得非常龐大,因?yàn)檫@些數(shù)據(jù)包打印了幾次。除此之外,調(diào)試過程還涉及花費(fèi)大量時(shí)間瀏覽這些日志。在這些日志中,來自組件的轉(zhuǎn)換數(shù)據(jù)包會(huì)非常頻繁地打印,并在從組件調(diào)用它們時(shí)以不同的時(shí)間戳顯示存儲(chǔ)在其中的數(shù)據(jù)。為了進(jìn)行調(diào)試,當(dāng)日志在使用uvm_default_table_printer時(shí)具有較大的數(shù)組大小時(shí),用戶需要在日志中來回切換。
SystemVerilog UVM包含一個(gè) uvm_printer 類,它提供了一個(gè)用于打印各種格式uvm_objects的接口。uvm_printer子類型實(shí)現(xiàn)不同的打印格式或策略。這些亞型包括uvm_printer、uvm_line_printer、uvm_tree_printer uvm_table_printer。我們開發(fā)了一種用戶定義的打印機(jī),它將致力于消除uvm_table_printer的缺點(diǎn)。
xaction_custom_printer是從uvm_printer擴(kuò)展而來的,打印機(jī)的輸出格式看起來像是uvm_table_printer和uvm_line_printer的混合體,因此結(jié)合了兩者的優(yōu)點(diǎn)。xaction_custom_printer簡明扼要地顯示數(shù)據(jù)包,以分區(qū)良好的方式(如表格打印機(jī))顯示變量的名稱和值,并在一定程度上類似于行式打印機(jī)的多行。
該打印機(jī)的輸出在單行中可用,直到某些預(yù)定義字符,之后它會(huì)在不同的行中繼續(xù)。這種輸出樣式在存在具有巨大大小的數(shù)組的地方變得易于閱讀。如果以u(píng)vm_table_printer打印相同的陣列,工程師將需要多次上下滾動(dòng)日志。由于它在一條線上,因此不需要多次上下移動(dòng)。打印機(jī)的格式允許清楚地看到變量的名稱和值,這是調(diào)試所需的全部內(nèi)容。
這臺(tái)打印機(jī)是如何開發(fā)的?
為了開發(fā)自定義打印機(jī),所需的打印格式在 emit() 函數(shù)中編程,該函數(shù)覆蓋父類 (uvm_printer) 的相同函數(shù)。此處顯示了組件開發(fā)方式的基本思想的圖形表示。
圖1.自定義事務(wù)打印機(jī)如何開發(fā)的頂級(jí)概念
如何使用這臺(tái)打印機(jī)?
用戶只需將文件包含在包或文件列表中即可包含在編譯流中,并且需要將其作為函數(shù)調(diào)用。使用此打印機(jī)有兩種方法。
默認(rèn)打印機(jī)機(jī)制 - 用戶可以將此打印機(jī)設(shè)置為uvm_default_printer,如下面的圖 2 所示,因此項(xiàng)目/SoC 中的所有打印都將以這種格式打印。
圖2.將自定義事務(wù)打印機(jī)設(shè)置為uvm_default_printer
選擇性打印機(jī)機(jī)制 - 用戶只能通過在沖刺 (sprint) 中事務(wù)項(xiàng)的 convert2string 中傳遞打印機(jī)來配置此打印機(jī),如下圖 3 所示。
圖 3:所選塊的xaction_custom_printer使用方法
為了使用此打印機(jī)打印數(shù)據(jù)包,可以通過調(diào)用此函數(shù)來完成,如下圖 4 所示。
圖 4:使用 convert2string 打印事務(wù)項(xiàng)的方法
用戶還可以使用自定義事務(wù)打印機(jī)打印事務(wù)數(shù)據(jù)包,以便將數(shù)組打印在單獨(dú)的行中,并將標(biāo)量變量保留在同一行中。這種類型的事務(wù)數(shù)據(jù)包打印機(jī)制將幫助用戶一次性讀取數(shù)組內(nèi)容。此事務(wù)數(shù)據(jù)包的外觀示例顯示在第 5.5 節(jié)中
插圖
以下示例展示了xaction_custom_printer優(yōu)于其他三個(gè)uvm_printer。在示例中,我們采用了一個(gè)通用數(shù)據(jù)包。使用以下變量來解釋此自定義打印機(jī)相對(duì)于默認(rèn)打印機(jī)的優(yōu)勢。
圖5:uvm_sequence_item中的通用數(shù)據(jù)包(事務(wù)項(xiàng))
1.1 使用行式打印機(jī)輸出
1.2 使用樹形打印機(jī)輸出
5.3 使用表格打印機(jī)輸出
5.4使用自定義打印機(jī)輸出
5.5 使用具有在單獨(dú)行中打印陣列功能的自定義打印機(jī)輸出。
定制打印機(jī)的優(yōu)勢
顯示調(diào)試最需要的信息
減小日志大小
提高可讀性
通過提高調(diào)試效率節(jié)省時(shí)間
簡潔的外觀
定制交易打印機(jī)是我們在eInfochips開發(fā)的組件,為驗(yàn)證工程師面臨的問題之一提供解決方案。此自定義打印機(jī)相對(duì)于內(nèi)置 uvm 打印機(jī)的優(yōu)勢使用通用數(shù)據(jù)包示例顯示。
審核編輯:郭婷
-
soc
+關(guān)注
關(guān)注
38文章
4193瀏覽量
218700 -
打印機(jī)
+關(guān)注
關(guān)注
10文章
776瀏覽量
45847
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論