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

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

3天内不再提示

盘点UVM针对不同机制提供给用户的调试功能

路科验证 来源:路科验证 作者:路科验证 2022-05-19 14:17 次阅读

基于UVM搭建验证环境和构造验证激励,调试的工作总是绕不开的。实际上,对验证环境和激励的调试,往往伴随着验证阶段的前半程,并且会花掉验证工程师很多时间和精力。然而,大部分细节被隐藏在复杂的环境内部。这里的复杂,指的是UVM本身构造的不同机制(比如factory、config_db、objection等),以及在不同机制内部使用的数据结构。

作为UVM的用户,我们需要相信在绝大部分情况下这些机制本身是没有问题的。因此,从顶层获得有效的调试信息就非常关键,比起潜入到内部要高效得多。

这也是本文的目的,盘点UVM针对不同机制提供给用户的调试功能。建议收藏和关注,总有一天你会用到。本文的示例代码都是在UVM类库提供的例程上进行少量修改得到的。

01 PLUGARG(命令行参数)

01 PLUGARG(命令行参数)

UVM将不同机制的调试功能封装成了命令行参数。在运行仿真的时候带上这些参数,就可以在仿真日志中打印出来对应的详细调试信息。本节将这些命令行参数都梳理出来,并附有仿真日志截图。

+UVM_DUMP_CMDLINE_ARGS:导出所有的命令行参数,确认当前的命令行参数符合你的预期。

cc584f18-d72b-11ec-bce3-dac502259ad0.png

+UVM_CONFIG_DB_TRACE: 打开访问Config_db的追踪(tracing)功能,可以看到config_db的set和get操作在什么时间由什么组件发起。

cc9c0fc8-d72b-11ec-bce3-dac502259ad0.png

+UVM_PHASE_TRACE:打开Phase执行的追踪功能,可以看到不同phase的执行顺序。

ccfae7fa-d72b-11ec-bce3-dac502259ad0.png

+UVM_OBJECTION_TRACE:打开Objection相关活动的追踪功能,可以清晰地呈现出objection在运行中的状态。

cd2081ae-d72b-11ec-bce3-dac502259ad0.png

+UVM_VERBOSITY:设置打印信息的冗余程度,有效地控制不同重要性信息的打印和屏蔽。

cd626614-d72b-11ec-bce3-dac502259ad0.png

02 PRINT(打印)

02PRINT(打印)

除了命令行参数,UVM还提供了很多内置打印函数。这些函数可以在验证环境中被调用,调用后会将对应的数据结构按照强可读性的格式打印到仿真日志中,为环境调试工作提供极大的便利。

cdce8452-d72b-11ec-bce3-dac502259ad0.png

uvm_root::print_topology():打印整个验证环境的组件拓扑结构

ce19c458-d72b-11ec-bce3-dac502259ad0.png

uvm_component::print_config():打印当前组件可见视角下的所有配置资源信息

ce57be5c-d72b-11ec-bce3-dac502259ad0.png

uvm_component::print_override_info():打印当前组件的工厂重载信息

cea608fa-d72b-11ec-bce3-dac502259ad0.png

uvm_factory::print():打印全局工厂中注册的类型以及instance和type重载信息

cf0137b6-d72b-11ec-bce3-dac502259ad0.png

uvm_factory::debug_create_by_type():打印工厂根据参数实际会创建的类型

uvm_factory::debug_create_by_name():打印工厂根据参数实际会创建的类型

cf1e565c-d72b-11ec-bce3-dac502259ad0.png

uvm_port_base::debug_connected_to():打印当前端口连接的下游端口网络,包括port/export/imp

uvm_port_base::debug_provided_to():打印当前端口连接的上游端口网络,包括port/export

cf3ea920-d72b-11ec-bce3-dac502259ad0.png

审核编辑 :李倩

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

    关注

    50

    文章

    4014

    浏览量

    133310
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    19119
  • 机制
    +关注

    关注

    0

    文章

    24

    浏览量

    9765

原文标题:SystemVerilog | UVM | 超实用!盘点UVM不同机制的调试功能

文章出处:【微信号:Rocker-IC,微信公众号:路科验证】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    云计算hpc的主要功能是什么

    云计算HPC(High-Performance Computing)是指利用云计算技术来实现高性能计算的一种解决方案。云计算HPC将高性能计算能力以云服务的形式提供给用户
    的头像 发表于 10-22 10:20 120次阅读

    七大嵌入式GUI盘点

    GUI设计。 AWTK 全称为Toolkit AnyWhere,是周立功倾心打造的一套基于C语言开发的GUI框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎。其
    发表于 09-02 10:58

    鸿蒙原生应用元服务开发-设备管理USB服务开发概览

    。 USB Service:主要实现HAL层数据的接收、解析、分发以及对设备的管理等。 USB HAL层:提供给用户态可直接调用的驱动能力接口。 本文引用参考HarmonyOS官方API9。
    发表于 06-11 10:26

    OpenAI推出ChatGPT桌面版应用程序

    OpenAI 近日宣布,备受期待的 ChatGPT 桌面版应用程序现已正式发布。在官方公告中,OpenAI 表示他们首先会将这款应用提供给 Plus 用户群体,并特别针对 macOS 系统推出。这是该公司为了满足
    的头像 发表于 05-14 11:51 967次阅读

    fpga验证和uvm验证的区别

    FPGA验证和UVM验证在芯片设计和验证过程中都扮演着重要的角色,但它们之间存在明显的区别。
    的头像 发表于 03-15 15:00 1383次阅读

    uvm1.1升级为uvm1.2 uvm_report_server报错是何原因?

    ISP算法仿真中,小编会用reference model调用DPI接口用C++ 算法实现pixel算法处理,然后和DUT算法处理输出的pixel值进行比较,比较时候发现报错,报错代码如下,原因是小编把uvm1.1升级为uvm1.2了。
    的头像 发表于 03-04 14:18 708次阅读
    <b class='flag-5'>uvm</b>1.1升级为<b class='flag-5'>uvm</b>1.2 <b class='flag-5'>uvm</b>_report_server报错是何原因?

    UVM手把手教程系列(二)Phase机制简单介绍

    UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类
    的头像 发表于 02-29 09:26 1250次阅读
    <b class='flag-5'>UVM</b>手把手教程系列(二)Phase<b class='flag-5'>机制</b>简单介绍

    简述GDB调试提供的基本功能

    GDB是一个功能强大的源代码级调试工具,它提供了多种基本功能,帮助程序员** **更好地理解程序的运行机制和定位问题** **。
    的头像 发表于 01-28 17:44 1192次阅读

    MPLAB® PICkit™ 4 在线调试器用户指南

    电子发烧友网站提供《MPLAB® PICkit™ 4 在线调试器用户指南.pdf》资料免费下载
    发表于 01-07 10:57 6次下载

    电机控制调试助手怎么用

    电机控制调试助手是一种帮助用户进行电机控制调试的辅助工具。它可以提供实时监测、参数设置、故障诊断和历史数据分析等功能,为
    的头像 发表于 12-28 13:57 845次阅读

    EtherCAT转CANopen转EtherCAT如何解决不同机器人的复杂联网方案?

    我们如何解决机器人的联网变得简单这个问题呢? 当系统改造受困与成本及设备空间等不可更改的限制因素的时候,我们还可以提供给客户另一种方案,让基于CANopen协议的机器人系统与客户的EthetCAT网络进行通信。
    的头像 发表于 12-13 15:29 604次阅读

    IDEA的调试功能

    在软件开发过程中,调试是一个非常重要的步骤。它可以帮助开发者定位和解决程序中的错误,提高代码的质量和效率。IntelliJ IDEA(以下简称IDEA)是一款强大的集成开发环境,提供了许多强大的调试
    的头像 发表于 12-06 14:07 646次阅读

    UVM环境的看门狗怎么没看住超时了?

    uvm验证环境里一般通过objection机制来控制仿真的结束,不过在机制之外,有时还需要通过看门狗来watchdog避免仿真环境挂死,watchdog配合objection一起来控制仿真的进行与结束。
    的头像 发表于 12-04 11:42 1036次阅读

    如何提供给AD623基准端(REF)一个稳定的电压?

    我最近用到AD623,为了不至于是AD623输出进入地电平,需要给REF基准端提供一个电压,我使用了一个op113做的电路(见下图),如果不连接AD623的REF脚的时候,好像还是比较稳定的,但接上AD623的REF脚后波动比较大,请教各位是如何给AD623提供一个稳定的
    发表于 11-27 11:14

    转换式电源供给器的原理与设计

    电子发烧友网站提供《转换式电源供给器的原理与设计.rar》资料免费下载
    发表于 11-20 10:06 2次下载
    转换式电源<b class='flag-5'>供给</b>器的原理与设计