0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

看看这个"UVM陷阱",你是不是也遇到过

sanyue7758 来源:处芯积律 2023-05-08 10:45 次阅读

分享一个近期项目中遇到的函数调用问题。

略去定位过程和具体的业务细节,原问题的模型可以抽象为如下的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中调用。看似简单的逻辑,运行仿真后得到如下的信息

ec20df3a-ed42-11ed-90ce-dac502259ad0.png

run被调用了两次!

.........................

.........................

如果你也一时间想不到原因,可以参考下面的原因分析。

原因如下:

  1. 翻阅UVM源码就会发现,在uvm_component中,存在一个默认的run函数。

    ec3cdfaa-ed42-11ed-90ce-dac502259ad0.png

  2. UVM的phase机制,run_phase和main_phase,reset_phase等其余耗时的phase是并行运行的。而默认的run_phase会调用run函数。

    ec65f20a-ed42-11ed-90ce-dac502259ad0.png

  3. 在上述代码的0时刻,默认的run_phase调用一次run函数,而main_phase也调用了一次run函数。

因此从uvm_component扩展的UVC中,尽量不要使用run函数,使用其他命名方式。


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3911

    浏览量

    61368
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    18980

原文标题:看看这个"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

    都知道RK3288编译遇到过哪些问题吗

    都知道RK3288编译遇到过哪些问题吗?
    发表于 03-04 07:22

    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&
    的头像 发表于 12-10 18:35 690次阅读

    几种IO口模拟串口"硬核"操作

    UART"是作者大一加入学校创新团队老师出的第一道题目。毕竟当时专业知识不够,心里想:“实验室老师怎么这么变tai,有现成的串口不用,非得整个模拟串口”,接到这个题目一头雾水,于是上网各种找资料,最后基本实现了该功能,实现办法算是最初级的实现方式,...
    的头像 发表于 02-10 11:51 4427次阅读
    几种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>;操作

    &quot;STM32F0 Error: Flash Download failed - &quot;&quot;Cortex-M0&quot;&quot;解决&quot;

    开发工具CUbemx + Keil uVision5(MDK V5)错误现象在STM32F0烧录程序是出现了Error: Flash Download failed - &amp;quot
    发表于 12-01 12:06 25次下载
    &<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>;

    这17种焊接陷阱,你遇到过多少?

    良好的焊接是保证电路稳定持久工作的前提。下面给出了常见到的焊接缺陷。看看遇到过多少种?焊接中的常见问题▲陷阱1:锡珠▲陷阱2:扰动的焊接——在焊接点冷却过程中焊锡移动,造成焊接表面起
    的头像 发表于 04-14 09:39 459次阅读
    这17种焊接<b class='flag-5'>陷阱</b>,你<b class='flag-5'>遇到过</b>多少?

    这17种焊接陷阱,你遇到过多少?

    良好的焊接是保证电路稳定持久工作的前提。下面给出了常见到的焊接缺陷。看看遇到过多少种?焊接中的常见问题▲陷阱1:锡珠▲陷阱2:扰动的焊接——在焊接点冷却过程中焊锡移动,造成焊接表面起
    的头像 发表于 04-14 09:37 476次阅读
    这17种焊接<b class='flag-5'>陷阱</b>,你<b class='flag-5'>遇到过</b>多少?

    【电路设计】这17种焊接陷阱,你遇到过多少?

    良好的焊接是保证电路稳定持久工作的前提。下面给出了常见到的焊接缺陷。看看遇到过多少种?焊接中的常见问题▲陷阱1:锡珠▲陷阱2:扰动的焊接——在焊接点冷却过程中焊锡移动,造成焊接表面起
    的头像 发表于 05-24 09:27 516次阅读
    【电路设计】这17种焊接<b class='flag-5'>陷阱</b>,你<b class='flag-5'>遇到过</b>多少?

    喜讯 | 凌科电气荣获国家级专精特新&amp;amp;quot;小巨人&amp;amp;quot;企业

    热烈祝贺凌科电气成功荣获国家级专精特新“小巨人”企业凌科入选国家级专精特新“小巨人”企业近日,国家级专精特新&quot;小巨人&quot;企业名单公布,凌科电气成功入选国家级专精特新&quot
    的头像 发表于 08-26 16:33 451次阅读
    喜讯 | 凌科电气荣获国家级专精特新&<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>;企业

    芯片工艺的&amp;quot;7nm&amp;quot; 、&amp;quot;5nm&amp;quot;到底指什么?

    近几年,芯片产业越来越火热,一些行业内的术语大家也听得比较多了。那么工艺节点、制程是什么,&quot;7nm&quot; 、&quot;5nm&quot;又是指什么?
    的头像 发表于 07-28 17:34 5847次阅读
    芯片工艺的&<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>;到底指什么?

    橙群微电子NanoBeacon SoC 在 &amp;amp;quot;Truly Innovative Electronics &amp;amp;quot;评选中脱颖而出

    InPlay我们的#NanoBeaconSoC产品在ElectronicsForYou的&quot;TrulyInnovativeElectronics&quot;评选中脱颖而出
    的头像 发表于 08-18 08:32 402次阅读
    橙群微电子NanoBeacon SoC 在  &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;Truly Innovative Electronics &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;评选中脱颖而出

    科沃斯扫地机器人通过TÜV莱茵&amp;quot;防缠绕&amp;quot;和&amp;quot;高效边角清洁&amp;quot;认证

    3月15日,在2024中国家电及消费电子博览会(AWE)上,国际独立第三方检测、检验和认证机构德国莱茵TÜV大中华区(简称&quot;TÜV莱茵&quot;)为科沃斯两款扫地机器人(型号:DDX14、DDX11)
    的头像 发表于 03-17 10:49 393次阅读