日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 芯片驗證工程師
[導讀]a.輸出方式和屬性賦值UVM提供了四個函數來完成uvm框架內不同嚴重度消息的輸出,同時通過函數定義了消息的冗余度、關聯ID和關聯行為。uvm_report_info(stringid,stringmessage,intverbosity=UVM_MEDIUM,stringfile...

a. 輸出方式和屬性賦值
UVM 提供了四個函數來完成uvm框架內不同嚴重度消息的輸出,同時通過函數定義了消息的冗余度、關聯 ID和關聯行為。

uvm_report_info(string id, string message, int verbosity = UVM_MEDIUM, string filename =“”, int line = 0);uvm_report_warning(string id, string message, int verbosity = UVM_MEDIUM, stringfilename = “”, int line = 0);uvm_report_error(string id, string message, int verbosity = UVM_LOW, string filename = “”,int line = 0);uvm_report_fatal(string id, string message, int verbosity = UVM_NONE, string filename = “”,int line = 0);上面四個函數都是 uvm_report_object 類和 uvm_sequence_item 類的成員函數,因此在繼承自這兩個類的的 component 和 transaction 中都可以使用以下四個宏對應上面的四個函數:

`uvm_info(string id, string message, int verbosity)`uvm_warning(string id, string message)`uvm_error(string id, string message)`uvm_fatal(string id, string message)上面宏在全局環(huán)境中都可以使用。注意:只有“info”消息能被等級設置屏蔽,“warning”,“error”和“fatal”消息將一直會打印出來,或者只能通過設置消息關聯的行為來關閉其輸出。


b. 冗余控制
冗余控制主要通過設置全局的冗余度、組件的冗余度來調整消息的輸出。
全局控制:為了能夠給 testbench 全局的設置一個冗余等級,函數 set_report_verbosity_level_hier()可以實現該功能。

function?void?set_report_verbosity_level_hier(int?verbosity);當一個 testbench 模型調用該函數時,能夠設置整個 UVM testbench 的冗余等級。


一個更簡單的不需要重新編譯代碼的方法是使用 UVM 命令行處理器處理 UVM_VERBOSITY plusarg 參數,如下所示:

vsim?testbench? UVM_VERBOSITY=UVM_HIGH細粒度控制:除了全局控制之外, UVM 允許在組件層面甚至在 ID 的層面單獨設置冗余水平。


函數 set_report_verbosity_level()能夠實現設置個別組件的最大冗余水平。

function?void?set_report_verbosity_level?(int?verbosity_level);uvm_report_object 類和 uvm_component 類的成員函數包括該函數,用于
設置該組件中消息的冗余等級的最大值。這個函數還有一個分等級的版本,用來設置一個組件和其子組件的冗余等級。


通過 uvm_set_verbosity plusarg, UVM 命令行處理器也提供了更多細粒度的控制,該 plusarg 也用于組件層面和 ID 等級冗余控制。

uvm_set_verbosity=<comp>,<id>,<verbosity>,<phase> uvm_set_verbosity=<comp>,<id>,<verbosity>,time,<time>這兩個參數允許用戶在仿真階段巧妙的設置特定組件在特定時間段(在 run
期間的時間)的冗余情況。


c. 關聯行為控制
UVM 中能夠設置指定消息相關聯的行為,即可以設置該消息出現后testbench 的動作。指定消息的類型有以下幾類:

同一組件下指定的 ID、

同一組件下指定的嚴重度、

同一組件下指定的嚴重度和 ID。


方法 1:

通過下面的函數來將某一類型的消息和特定的行為關聯起來。

function?void?set_report_severity_id_override(uvm_severity?cur_severity,?string id,uvm_severity?new_severity?)function void set_report_severity_action (uvm_severity severity, uvm_action action)function void set_report_id_action (string id,uvm_action action)function?void?set_report_severity_id_action?(uvm_severity?severity,?string?id,uvm_action action)

function?void?set_report_severity_id_verbosity_hier(uvm_severity?severity,string?id,int verbosity)function void set_report_severity_action_hier ( uvm_severity severity,uvm_action action)function void set_report_id_action_hier (string id,uvm_action action)function?void?set_report_severity_id_action_hier(uvm_severity?severity,string?id,uvm_action action)上述的函數中 action 參數可以是 7 種關聯行為的一種或者其中幾種的組合。比如為了關閉組件 mycomp 中 id 為“MYTAG”,冗余級別為 UVM_ERROR的這類消息的輸出,可以添加如下命令:

mycomp.set_report_severity_id_action(UVM_ERROR, “MYTAG”,UVM_NO_ACTION);或者為了打印該消息同時退出仿真,則可以添加如下命令:

mycomp.set_report_severity_id_action(UVM_ERROR,?“MYTAG”,UVM_DISPLAY|UVM_EXIT);

方法 2:
通過 uvm_set_action plusarg, UVM 命令行處理器也提供了更多細粒度的控
制,該 plusarg 也用于組件層面和 ID 等級冗余控制。用 uvm_set_action 也可以設置相應 component 的屬性。

uvm_set_action=<comp>,<id>,<severity>,<action>關于性能的問題
推薦使用`uvm_*()系列宏來處理報告的原因中最重要的是,當一個等級設置為消息無需被打印出來時,`uvm_info 宏在做任何字符串處理之前進行冗余等級檢查,這樣能夠提高仿真效率。
下面看一個簡單的`uvm_info()語句:

`uvm_info("Message_ID",?$sformatf("%s,data[ ]=0xx",name,ii,data[ii]),UVM_HIGH)在該語句中包含一個相對復雜的語句$sforment,當$sformat()語句被重復調用時,需要占據足夠的仿真時間。當冗余等級被設置為 UVM_HIGH 時,大多數情

況下該$sformat()消息將不會打印。因為宏的使用,當該條消息不被打印時,將
不會執(zhí)行該條語句,從而不會浪費時間去進入$sformat()生成結果字符串。

`uvm_info 宏下面用 uvm_report_object::uvm_report_enabled()?API來做一個冗余等級的檢查,然后在調用和該宏使用同樣的參數的uvm_report_info()之前決定一個消息是否被打印。

if (uvm_report_enabled(UVM_HIGH, UVM_INFO, "Message_ID"))uvm_report_info("Message_ID",?$sformatf("%s,?data[ ]?=?0xx",?name,?ii,data[ii]),?UVM_HIGH);如果直接使用 uvm_report_info(),

uvm_report_info("Message_ID", $sformatf("%s, data[ ] = 0xx", name, ii, data[ii]),UVM_HIGH);即使最終該字符串在 UVM_HIGH 冗余設置下根本不會打印, $sformat()字符串仍將在整個 uvm_report_info()函數之前進行處理,這樣會降低仿真效率。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
關閉