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

    文章

    3860

    浏览量

    131954
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    18935
  • 机制
    +关注

    关注

    0

    文章

    24

    浏览量

    9697

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    Windows消息机制模拟用户输入的方法介绍

    Windows平台上的应用程序是事件驱动的** ,它们不会显式地调用底层函数以获得用户输入或其它信息,而是等待系统将这些信息提供给它们。
    的头像 发表于 09-07 10:59 578次阅读
    Windows消息<b class='flag-5'>机制</b>模拟<b class='flag-5'>用户</b>输入的方法介绍

    一文详解UVM设计模式

    本篇是对UVM设计模式 ( 二 ) 参数化类、静态变量/方法/类、单例模式、UVM_ROOT、工厂模式、UVM_FACTORY[1]中单例模式的补充,分析静态类的使用,UVM中资源池的
    的头像 发表于 08-06 10:38 833次阅读
    一文详解<b class='flag-5'>UVM</b>设计模式

    UVM环境debug的正确开启方式

    在使用UVM搭建环境时,遇到问题时,调试方式有千千万万,但很有必要了解下UVM提供了哪些内建的调试手段,可以少走弯路,大大提升效率,而不是
    的头像 发表于 07-03 18:14 1143次阅读

    UVMuvm_config_db机制背后的大功臣

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

    UVMuvm_config_db机制背后的大功臣

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

    聊一聊所谓的Objection机制

    Objection是UVM框架中用来同步不同组件的相同phase,以及决定当前测试用例什么时候结束(end-of-test)的机制,这也是用户在拿到UVM之后最直白的使用场景。
    的头像 发表于 06-09 11:16 1038次阅读
    聊一聊所谓的Objection<b class='flag-5'>机制</b>

    UVM中的uvm_do宏简析

    uvm_do宏及其变体提供了创建、随机化和发送transaction items或者sequence的方法。
    的头像 发表于 06-09 09:36 2652次阅读
    <b class='flag-5'>UVM</b>中的<b class='flag-5'>uvm</b>_do宏简析

    UVM driver和sequencer的通信

    sequencer生成激励数据,并将其传递给driver执行。UVM类库提供uvm_sequencer基类,其参数为request和response数据类型。
    的头像 发表于 06-07 11:58 961次阅读
    <b class='flag-5'>UVM</b> driver和sequencer的通信

    UVM里的6个常见参数介绍分析

    UVM预先定义了六个详细程度; UVM_NONE到UVM_DEBUG。这些级别只不过是整数枚举值
    的头像 发表于 06-06 12:33 2697次阅读
    <b class='flag-5'>UVM</b>里的6个常见参数介绍分析

    UVM学习笔记(一)

    driver应该派生自uvm_driver,而uvm_driver派生自uvm_component。
    的头像 发表于 05-26 14:38 836次阅读
    <b class='flag-5'>UVM</b>学习笔记(一)

    UVM response_handler和get_response机制

    很多UVM用户平时更多的使用get_response()方式去获得uvm_driver的response,但get_response有些缺点
    的头像 发表于 05-23 16:56 606次阅读
    <b class='flag-5'>UVM</b> response_handler和get_response<b class='flag-5'>机制</b>

    典型的UVM Testbench架构

    UVM类库提供了通用的代码功能,如component hierarchy、transaction level model(TLM),configuration database等等,使用户
    的头像 发表于 05-22 10:14 1152次阅读
    典型的<b class='flag-5'>UVM</b> Testbench架构

    盘点UVM同机制调试功能

    基于UVM搭建验证环境和构造验证激励,调试的工作总是绕不开的。实际上,对验证环境和激励的调试,往往伴随着验证阶段的前半程,并且会花掉验证工程师很多时间和精力。
    的头像 发表于 04-06 09:36 435次阅读

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

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