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

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

3天内不再提示

盘点UVM不同机制的调试功能

sanyue7758 来源:芯片学堂 2023-04-06 09:36 次阅读

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

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

这也是本文的目的,盘点UVM针对不同机制提供给用户的调试功能。建议收藏和关注,总有一天你会用到。

01 PLUGARG(命令行参数)

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

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

0d444e76-d40d-11ed-bfe3-dac502259ad0.png

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

0d84ed1e-d40d-11ed-bfe3-dac502259ad0.png

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

0dacd7f2-d40d-11ed-bfe3-dac502259ad0.png

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

0dcd5bf8-d40d-11ed-bfe3-dac502259ad0.png

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

0e21ca94-d40d-11ed-bfe3-dac502259ad0.png

02 PRINT(打印)

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

0e5ed6c8-d40d-11ed-bfe3-dac502259ad0.png

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

0e783776-d40d-11ed-bfe3-dac502259ad0.png

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

0e996522-d40d-11ed-bfe3-dac502259ad0.png

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

0ee20ac0-d40d-11ed-bfe3-dac502259ad0.png

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

0f05eab2-d40d-11ed-bfe3-dac502259ad0.png

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

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

0f4727de-d40d-11ed-bfe3-dac502259ad0.png

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

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

0f9b1006-d40d-11ed-bfe3-dac502259ad0.png









审核编辑:刘清

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

    关注

    28

    文章

    1326

    浏览量

    109302
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    18965

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

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    UVM中的field automation机制有哪些用途

    不知道UVM中的field automation机制怎么翻译,不管了,反正就是**机制,理解它能干啥就行了。
    的头像 发表于 07-19 09:45 1759次阅读

    IC验证"为什么要学习UVM呢"

    验证的基本常识,将会散落在各个章节之间。UVM的一些高级功能,如何灵活地使用sequence机制、factory机制等。如何编写代码才能保证可重用性。可重用性是目前IC界提及最多的几个
    发表于 12-01 15:09

    IC验证"UVM验证平台加入factory机制"(六)

    为读者展示在初学者看来感觉最神奇的一点:自动创建一个类的实例并调用其中的函数(function)和任务 (task)。  要使用这个功能,需要引入UVM的factory机制:[code]文件:src
    发表于 12-08 12:07

    IC验证“UVM验证平台加入objection机制和virtual interface机制“(七)

    在上一节中,**《IC验证"UVM验证平台加入factory机制"(六)》**虽然输出了“main_phase is called”,但是“data is drived”并没有
    发表于 12-09 18:28

    UVM交互式调试库介绍

    什么是UVM交互式调试
    发表于 12-17 07:34

    什么是UVM Report机制

    UVM Report机制概述
    发表于 12-21 06:55

    数字IC验证之“什么是UVM”“UVM的特点”“UVM提供哪些资源”(2)连载中...

    dut。功能覆盖率是评判验证工作进度的标准,验证工程师可以根据当前的覆盖率的情况来确定下一步的验证工作,那么,uvm内建了许多机制uvm的工程机制
    发表于 01-21 16:00

    深入了解Factory机制的实现方式

    Factory是UVM世界中承载着对象实例化和重载(override)等作用的重要机制。深入了解Factory机制的实现方式,有助于我们在实际工程中更好地应用和调试。本文介绍Facto
    发表于 09-16 14:35

    谈谈UVM中的uvm_info打印

      uvm_info宏的定义如下:  `define uvm_info(ID,MSG,VERBOSITY) \  begin \  if (uvm_report_enabled(VERBOSITY
    发表于 03-17 16:41

    UVM中seq.start()和default_sequence执行顺序

      1. 问题  假如用以下两种方式启动sequence,方法1用sequence的start()方法启动seq1,方法2用UVM的default_sequence机制启动seq2。那么seq1
    发表于 04-04 17:15

    UVM实战卷1 PDF电子书免费下载

    UVM实战》主要介绍UVM的使用。全书详尽介绍了UVM的factory机制、sequence机制、phase
    发表于 11-29 08:00 29次下载
    <b class='flag-5'>UVM</b>实战卷1 PDF电子书免费下载

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

    +UVM_OBJECTION_TRACE:打开Objection相关活动的追踪功能,可以清晰地呈现出objection在运行中的状态。
    的头像 发表于 05-19 14:17 976次阅读

    浅析UVM同机制调试功能

    作为UVM的用户,我们需要相信在绝大部分情况下这些机制本身是没有问题的。因此,从顶层获得有效的调试信息就非常关键,比起潜入到内部要高效得多。 这也是本文的目的,盘点
    的头像 发表于 02-14 16:23 992次阅读
    浅析<b class='flag-5'>UVM</b>不<b class='flag-5'>同机制</b>的<b class='flag-5'>调试</b><b class='flag-5'>功能</b>

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-20 17:28 797次阅读

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-29 16:57 615次阅读