• 正文
    • 1
    • 前言
    • 2
    • 問題解釋
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

慎用UVM中的uvm_report_enabled()函數(shù)

6小時前
146
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1

前言

在隨機驗證環(huán)境中,如果出現(xiàn)回歸錯誤,那么這個錯誤是否可以復(fù)現(xiàn)是非常關(guān)鍵的。在回歸時,我們通常利用UVM的+UVM_VERBOSITY參數(shù)來設(shè)置驗證環(huán)境的全局打印等級為UVM_NONE,這樣減少打印log,進而加快仿真速度。另一方面,回歸通常也默認(rèn)不dump波形,減少內(nèi)存占用和加快仿真速度。但是如果出現(xiàn)驗證用例掛掉了,我們通常需要借助于仿真log和波形來定位問題,因此+UVM_VERBOSITY參數(shù)會設(shè)置更高打印等級,來打印更多的信息。

 

有些人遇到使用+UVM_VERBOSITY傳遞不同打印等級時,問題會無法復(fù)現(xiàn)。這可能和驗證環(huán)境中用戶直接使用了uvm_report_enabled()函數(shù)有關(guān)系,它可能會導(dǎo)致驗證環(huán)境的隨機狀態(tài)發(fā)生改變,進而影響仿真結(jié)果。

2

問題解釋

uvm_report_enabled()函數(shù)定義如下:

function?int?uvm_report_enabled(int?verbosity, uvm_severity severity = UVM_INFO,?string?id =?"");? ??if?(get_report_verbosity_level(severity, id) < verbosity)? ? ? ??return?0;? ??return?1;endfunction

 

uvm_report_enabled()函數(shù)比較關(guān)鍵的參數(shù)是verbosity,如果當(dāng)前組件配置的打印等級大于等于verbosity的值,那么uvm_report_enabled()函數(shù)返回1;反之,則返回0。

 

根據(jù)uvm_report_enabled()函數(shù)返回1還是0,有些用戶把uvm_report_enabled()函數(shù)用作判斷條件,例如:

if ( uvm_report_enabled(UVM_MEDIUM) )?begin? ??//?execute?randomization block_Aendelse?begin? ??//?execute?randomization block_Bend

 

代碼解釋:如果組件的打印等級大于等于UVM_MEDIUM,則執(zhí)行randomization block_A;反之,則執(zhí)行randomization block_B。

 

這里就涉及到不同打印等級情況下,仿真會執(zhí)行不同的語句,一旦這些不同的語句所產(chǎn)生的隨機狀態(tài)不一致,就會破壞原先的隨機狀態(tài),進而影響后續(xù)所有代碼的隨機狀態(tài),所以仿真可能會無法復(fù)現(xiàn)問題。

 

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄