網(wǎng)站首頁 編程語言 正文
在UVM中使用get_full_name()可以得到一個(gè)component的完整路徑,同樣的,此函數(shù)也可以在一個(gè)sequence中被調(diào)用,嘗試在一個(gè)sequence的body中調(diào)用此函數(shù),并打印出返回值,其結(jié)果大體如下:uvm_test_top.env.i_agt.sqr.case0_sequence
這個(gè)路徑是由兩個(gè)部分組成,此sequence的sequencer的路徑,即實(shí)例化此sequence時(shí)傳遞的名字。
在sequence中g(shù)et參數(shù)
//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函數(shù)的第二個(gè)路徑參數(shù)里面出現(xiàn)了通配符,這是因?yàn)閟equence在實(shí)例化名字一般是不固定的,而且有時(shí)是未知的,所以使用通配符。
在sequence中以如下方式調(diào)用config_db::get函數(shù)。
//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函數(shù)原型中,第一個(gè)參數(shù)必須是一個(gè)component,而sequence不是一個(gè)component,所以這里不能使用this指針,只能使用null或uvm_root::get()。前面已經(jīng)提到過,當(dāng)使用null是,UVM會(huì)自動(dòng)將其替換為uvm_root:get(),再加上第二個(gè)參數(shù)get_full_name(), 就可以完整地得到此sequence的路徑,從而得到參數(shù)。
在sequence中set參數(shù)
//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中被啟動(dòng),所以其get_full_name的結(jié)果應(yīng)該是uvm_test_top.v_seq.,而不是uvm_test_top.env0.i_agt.sqr.,所以在設(shè)置時(shí),第二個(gè)參數(shù)應(yīng)該是前者。
原文鏈接:https://blog.csdn.net/Michael177/article/details/125473234
相關(guān)推薦
- 2022-02-04 UMP系統(tǒng)設(shè)計(jì)了如下機(jī)制來保證數(shù)據(jù)安全
- 2022-10-22 Golang?中反射的應(yīng)用實(shí)例詳解_Golang
- 2022-04-21 python工廠方法模式原理與實(shí)現(xiàn)_python
- 2022-02-13 error C4996:‘scanf‘:This function or variable may
- 2022-01-16 ES6新增聲明格式、變量解構(gòu)賦值及模板字符串
- 2023-07-29 koa2+sequelize中websocket的使用
- 2022-09-11 Oracle學(xué)習(xí)筆記之視圖及索引的使用_oracle
- 2022-10-18 使用shell腳本快速登錄容器的實(shí)現(xiàn)步驟_linux shell
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支