分享一个近期项目中遇到的函数调用问题。
略去定位过程和具体的业务细节,原问题的模型可以抽象为如下的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文章
4307浏览量
62433 -
UVM
+关注
关注
0文章
181浏览量
19140
原文标题:看看这个"UVM陷阱",你是不是也遇到过
文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
求助,为什么 \" ld.w \" 导致某些内存内容被修改?
; 指令执行后,一些内存内容被更改。 这很难理解。 有人遇到过类似的问题吗。 以下是我的情况,
1) 在执行 " ld.w 之前 &
发表于 01-26 07:35
想问下大家有没有遇到过 时间消息没又响应 便执行的 不是不是程序的内存管理越界了?
想问下大家有没有遇到过 时间消息没又响应 便执行的 不是不是程序的内存管理越界了??
发表于 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
•31次下载
这17种焊接陷阱,你遇到过多少?
良好的焊接是保证电路稳定持久工作的前提。下面给出了常见到的焊接缺陷。看看你遇到过多少种?焊接中的常见问题▲陷阱1:锡珠▲陷阱2:扰动的焊接——在焊接点冷却过程中焊锡移动,造成焊接表面起
这17种焊接陷阱,你遇到过多少?
良好的焊接是保证电路稳定持久工作的前提。下面给出了常见到的焊接缺陷。看看你遇到过多少种?焊接中的常见问题▲陷阱1:锡珠▲陷阱2:扰动的焊接——在焊接点冷却过程中焊锡移动,造成焊接表面起
【电路设计】这17种焊接陷阱,你遇到过多少?
良好的焊接是保证电路稳定持久工作的前提。下面给出了常见到的焊接缺陷。看看你遇到过多少种?焊接中的常见问题▲陷阱1:锡珠▲陷阱2:扰动的焊接——在焊接点冷却过程中焊锡移动,造成焊接表面起
芯片工艺的"7nm" 、"5nm"到底指什么?
近几年,芯片产业越来越火热,一些行业内的术语大家也听得比较多了。那么工艺节点、制程是什么,"7nm" 、"5nm&qu
科沃斯扫地机器人通过TÜV莱茵"防缠绕"和"高效边角清洁"认证
3月15日,在2024中国家电及消费电子博览会(AWE)上,国际独立第三方检测、检验和认证机构德国莱茵TÜV大中华区(简称"TÜV莱茵")为科沃斯两款扫地机器人(型号:DDX14、DDX11)
评论