網站首頁 編程語言 正文
在UVM中使用get_full_name()可以得到一個component的完整路徑,同樣的,此函數也可以在一個sequence中被調用,嘗試在一個sequence的body中調用此函數,并打印出返回值,其結果大體如下:uvm_test_top.env.i_agt.sqr.case0_sequence
這個路徑是由兩個部分組成,此sequence的sequencer的路徑,即實例化此sequence時傳遞的名字。
在sequence中get參數
//my_case0.sv
function void my_case0::build_phase(uvm_phase phase);
...
uvm_config_db#(int)::set(this, "env.i_agt.sqr.*", "count", 9);
...
endfunction
set函數的第二個路徑參數里面出現了通配符,這是因為sequence在實例化名字一般是不固定的,而且有時是未知的,所以使用通配符。
在sequence中以如下方式調用config_db::get函數。
//my_case0.sv
class case0_sequence extends uvm_sequence#(my_transaction);
...
virtual task per_body();
if(uvm_config_db#(int)::get(null, get_full_name(), "count", count)
`uvm_info("seq0", $sformatf("get count value %0d via config_db", count), UVM_MEDIUM)
else
`uvm_error("seq0", "cannot get count value!")
endtask
...
endclass
在get函數原型中,第一個參數必須是一個component,而sequence不是一個component,所以這里不能使用this指針,只能使用null或uvm_root::get()。前面已經提到過,當使用null是,UVM會自動將其替換為uvm_root:get(),再加上第二個參數get_full_name(), 就可以完整地得到此sequence的路徑,從而得到參數。
在sequence中set參數
//my_case0.sv
class drv0_seq extends uvm_sequnece #(my_transaction);
...
virtual task body();
void'(uvm_config_db#(bit)::get(uvm_root::get(), get_full_name(), "first_start", first_start));
if(first_start)
`uvm_info("drv0_seq", "this is the first start of the sequence", UVM_MEDIUM)
else
`uvm_info("drv0_seq", "this is not the first start of the sequence", UVM_MEDIUM)
uvm_config_db#(bit)::set(uvm_root::get(), "uvm_test_top.v_sqr.*", "first_start", 0);
endtask...
endclass
需要注意的是,由于此sequence在virtual sequence中被啟動,所以其get_full_name的結果應該是uvm_test_top.v_seq.,而不是uvm_test_top.env0.i_agt.sqr.,所以在設置時,第二個參數應該是前者。
原文鏈接:https://blog.csdn.net/Michael177/article/details/125473234
相關推薦
- 2022-10-29 css transform導致字體像素模糊的問題解決辦法
- 2023-03-22 Go語言實現猜謎小游戲_Golang
- 2022-07-10 輸入兩個正整數 m 和 n,求最大公約數
- 2022-01-19 解決element-ui 表格分頁序號不遞增問題。
- 2022-06-29 python打印經典故事從前有座山的幾種寫法_python
- 2022-03-31 聊聊Python?String型列表求最值的問題_python
- 2022-11-16 Kotlin條件控制語句匯總講解_Android
- 2022-02-09 Qt5連接并操作PostgreSQL數據庫的實現示例_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支