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

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

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

1

前言

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

 

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

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ù)比較關鍵的參數(shù)是verbosity,如果當前組件配置的打印等級大于等于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í)行不同的語句,一旦這些不同的語句所產生的隨機狀態(tài)不一致,就會破壞原先的隨機狀態(tài),進而影響后續(xù)所有代碼的隨機狀態(tài),所以仿真可能會無法復現(xiàn)問題。

 

相關推薦

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