分享一個近期項目中遇到的函數調用問題。
略去定位過程和具體的業務細節,原問題的模型可以抽象為如下的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
設計一個run函數用于處理某些業務邏輯,并在UVC的main_phase中調用。看似簡單的邏輯,運行仿真后得到如下的信息:
run被調用了兩次!
.........................
.........................
如果你也一時間想不到原因,可以參考下面的原因分析。
原因如下:
-
翻閱UVM源碼就會發現,在uvm_component中,存在一個默認的run函數。
-
UVM的phase機制,run_phase和main_phase,reset_phase等其余耗時的phase是并行運行的。而默認的run_phase會調用run函數。
- 在上述代碼的0時刻,默認的run_phase調用一次run函數,而main_phase也調用了一次run函數。
因此從uvm_component擴展的UVC中,盡量不要使用run函數,使用其他命名方式。
審核編輯 :李倩
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
函數
+關注
關注
3文章
4364瀏覽量
63815 -
UVM
+關注
關注
0文章
182瀏覽量
19362
原文標題:看看這個"UVM陷阱",你是不是也遇到過
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
想問下大家有沒有遇到過 時間消息沒又響應 便執行的 不是不是程序的內存管理越界了?
想問下大家有沒有遇到過 時間消息沒又響應 便執行的 不是不是程序的內存管理越界了??
發表于 05-25 16:29
IC驗證"UVM驗證平臺加入factory機制"(六)
加入factory機制 上一節《IC驗證"一個簡單的UVM驗證平臺"是如何搭建的(五)》給出了一個只有driver、使用UVM搭建的驗證平臺。嚴格來說這根本就不
發表于 12-08 12:07
ymodem_ota下載固件丟失第一個字節請問誰遇到過這個問題嗎?
00 01 00 4C 7D 5C 56 61 70 70 00 00 BL.....L}\\Vapp..發現RBL少了個R,用winhex查看了源文件,文件上有這個RBL;初步估計是ymodem_ota程序在傳輸時,丟了第一個字節;請問,誰
發表于 04-03 14:53
教你如何搭建淺層神經網絡"Hello world"
作為圖像識別與機器視覺界的 "hello world!" ,MNIST ("Modified National Institute of Standards and Technology&
幾種IO口模擬串口"硬核"操作
UART"是作者大一加入學校創新團隊老師出的第一道題目。畢竟當時專業知識不夠,心里想:“實驗室老師怎么這么變tai,有現成的串口不用,非得整個模擬串口”,接到這個題目一頭霧水,于是上網各種找資料,最后基本實現了該功能,實現辦法算是最初級的實現方式,...

"STM32F0 Error: Flash Download failed - ""Cortex-M0""解決"
開發工具CUbemx + Keil uVision5(MDK V5)錯誤現象在STM32F0燒錄程序是出現了Error: Flash Download failed - &quot
發表于 12-01 12:06
?33次下載

這17種焊接陷阱,你遇到過多少?
良好的焊接是保證電路穩定持久工作的前提。下面給出了常見到的焊接缺陷。看看你遇到過多少種?焊接中的常見問題▲陷阱1:錫珠▲陷阱2:擾動的焊接——在焊接點冷卻過程中焊錫移動,造成焊接表面起

這17種焊接陷阱,你遇到過多少?
良好的焊接是保證電路穩定持久工作的前提。下面給出了常見到的焊接缺陷。看看你遇到過多少種?焊接中的常見問題▲陷阱1:錫珠▲陷阱2:擾動的焊接——在焊接點冷卻過程中焊錫移動,造成焊接表面起

【電路設計】這17種焊接陷阱,你遇到過多少?
良好的焊接是保證電路穩定持久工作的前提。下面給出了常見到的焊接缺陷。看看你遇到過多少種?焊接中的常見問題▲陷阱1:錫珠▲陷阱2:擾動的焊接——在焊接點冷卻過程中焊錫移動,造成焊接表面起

芯片工藝的&quot;7nm&quot; 、&quot;5nm&quot;到底指什么?
近幾年,芯片產業越來越火熱,一些行業內的術語大家也聽得比較多了。那么工藝節點、制程是什么,"7nm" 、"5nm&qu

隧道管廊變壓器局放在線監測:為地下&amp;quot;電力心臟&amp;quot;裝上智能聽診器
文章由山東華科信息技術有限公司提供在城市的地下脈絡中,隧道管廊承載著電網的"主動脈",而變壓器堪稱其中的"動力心臟"。

電纜局部放電在線監測:守護電網安全的&amp;quot;黑科技&amp;quot;
文章由山東華科信息技術有限公司提供在萬家燈火的背后,有一張覆蓋全國的"能源神經網絡"晝夜不息地運轉。電纜作為電力輸送的"主動脈",其健康狀況直接

評論