分享一個近期項目中遇到的函數(shù)調(diào)用問題。
略去定位過程和具體的業(yè)務(wù)細節(jié),原問題的模型可以抽象為如下的demo:
importuvm_pkg::*;
`include"uvm_macros.svh"
classtestextendsuvm_test;
`uvm_component_utils(test)
virtualtaskrun();
bit[3:0]run_cnt;
run_cnt++;
$display("run_cnt=%0d,enterrun@%t",run_cnt,$time);
//othercode
endtask
virtualtaskmain_phase(uvm_phasephase);
super.main_phase(phase);
phase.raise_objection(this);
run();
phase.drop_objection(this);
endtask
functionnew(stringname="test",uvm_componentparent=null);
super.new(name,parent);
endfunction
endclass
programtb_top;
initialbegin
run_test("test");
end
endprogram
設(shè)計一個run函數(shù)用于處理某些業(yè)務(wù)邏輯,并在UVC的main_phase中調(diào)用。看似簡單的邏輯,運行仿真后得到如下的信息:
run被調(diào)用了兩次!
.........................
.........................
如果你也一時間想不到原因,可以參考下面的原因分析。
原因如下:
-
翻閱UVM源碼就會發(fā)現(xiàn),在uvm_component中,存在一個默認的run函數(shù)。
-
UVM的phase機制,run_phase和main_phase,reset_phase等其余耗時的phase是并行運行的。而默認的run_phase會調(diào)用run函數(shù)。
- 在上述代碼的0時刻,默認的run_phase調(diào)用一次run函數(shù),而main_phase也調(diào)用了一次run函數(shù)。
因此從uvm_component擴展的UVC中,盡量不要使用run函數(shù),使用其他命名方式。
審核編輯 :李倩
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4349瀏覽量
63043 -
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19238
原文標題:看看這個"UVM陷阱",你是不是也遇到過
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
求助,為什么 \" ld.w \" 導(dǎo)致某些內(nèi)存內(nèi)容被修改?
想問下大家有沒有遇到過 時間消息沒又響應(yīng) 便執(zhí)行的 不是不是程序的內(nèi)存管理越界了?
IC驗證"UVM驗證平臺加入factory機制"(六)
ymodem_ota下載固件丟失第一個字節(jié)請問誰遇到過這個問題嗎?
教你如何搭建淺層神經(jīng)網(wǎng)絡(luò)"Hello world"
幾種IO口模擬串口"硬核"操作
![幾種IO口模擬串口&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;硬核&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;操作](http://mouser.eetrend.com/files/2020-12/博客/100060098-117081-1.png)
"STM32F0 Error: Flash Download failed - ""Cortex-M0""解決"
![&<b class='flag-5'>quot</b>;STM32F0 Error: Flash Download failed - &<b class='flag-5'>quot</b>;&<b class='flag-5'>quot</b>;Cortex-M0&<b class='flag-5'>quot</b>;&<b class='flag-5'>quot</b>;解決&<b class='flag-5'>quot</b>;](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
這17種焊接陷阱,你遇到過多少?
![這17種焊接<b class='flag-5'>陷阱</b>,<b class='flag-5'>你</b><b class='flag-5'>遇到過</b>多少?](https://file.elecfans.com/web2/M00/12/50/poYBAGEncMGAXe6nAAAbFBInB08416.png)
這17種焊接陷阱,你遇到過多少?
![這17種焊接<b class='flag-5'>陷阱</b>,<b class='flag-5'>你</b><b class='flag-5'>遇到過</b>多少?](https://file.elecfans.com/web2/M00/14/47/pYYBAGE7NFGAQrY0AABIF2gu6xM792.jpg)
【電路設(shè)計】這17種焊接陷阱,你遇到過多少?
![【電路設(shè)計】這17種焊接<b class='flag-5'>陷阱</b>,<b class='flag-5'>你</b><b class='flag-5'>遇到過</b>多少?](https://file.elecfans.com/web2/M00/1E/13/pYYBAGGVucSAKnAEAAAdgGHe8Cw874.jpg)
芯片工藝的&quot;7nm&quot; 、&quot;5nm&quot;到底指什么?
![芯片工藝的&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;7nm&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>; 、&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;5nm&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;到底指什么?](https://file1.elecfans.com/web2/M00/8E/42/wKgaomTDi8yAaQ2KAAAJ1LvMgIE703.jpg)
科沃斯掃地機器人通過TüV萊茵&quot;防纏繞&quot;和&quot;高效邊角清潔&quot;認證
全方位精準測量技術(shù)助力:中國經(jīng)濟加力發(fā)展向前&amp;quot;進&amp;quot;
![全方位精準測量技術(shù)助力:中國經(jīng)濟加力發(fā)展向前&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;進&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;](https://file1.elecfans.com/web2/M00/FC/70/wKgZomaUgNaAdR2FAAC6aybCgwI366.png)
評論