uvm_objection/uvm_objection_events/test_done_objection/callbacks_objection/objection_callback

uvm_objection/uvm_objection_events/test_done_objection/callbacks_objection/objection_callback_liu_uestc_新浪博客

uvm_objection/uvm_objection_events/test_done_objection/callbacks_objection/objection_callback

 (2011-10-20 09:52:54)

分类: uvm

preface

 uvm_objection是在uvm_object上扩展出来的一个专门针对数据单元的类。该类也用来协调多个component的行动

  ie:the ~uvm_test_done~ built-in objection provides a means for
// coordinating when to end a test, i.e. when to call <global_stop_request> to
// end the <uvm_component::run> phase.  When all participating components have
// dropped their raised objections with ~uvm_test_done~, an implicit call to
// ~global_stop_request~ is issued

 1.uvm_objection_events是一个内部类,作用:里边记录的是某个component在等待本objection raised dropped all_dropped 发生,同一component每等待一次 waiters++

     int waiters;     
    event raised;    
    event dropped;   
    event all_dropped;

 2.uvm_objection_context_object这是一个内部的类,定义了一些属性,在uvm_objection中声明了一个这个类的pool,该类主要记录了一个component到objection的映射关系,为这个映射关系提供了描述,定义了一个count来为每次objection调用component的raised等方法提供一个数字

  uvm_object obj;
   uvm_object source_obj;
   string description;
   int count;
 3. uvm_objection extends uvm_report_object

  protected bit    m_trace_mode=0;//记录目标活动使能
  protected int    m_source_count[uvm_object];//某个component raised count
  protected int    m_total_count [uvm_object]; //某个component及其子孙共raised的count
  protected time   m_drain_time  [uvm_object];//某个component的drain time
  protected bit    m_draining   [uvm_object];//某个component 正在draining
  protected uvm_objection_events m_events [uvm_object];//记录某个component的raised dropped等情况
 bit    m_top_all_dropped;//top是否all_dropped
  protected process m_background_proc;

  protected uvm_root m_top = uvm_root::get();

  static uvm_objection m_objections[$];//全局的对象,记录了所有的objection

  local uvm_objection_context_object m_context_pool[$];
  local uvm_objection_context_object m_scheduled_list[$];

  bit m_hier_mode = 1;

  uvm_root top = uvm_root::get();

  protected bit m_cleared = 0;

  3.1 function new(string name="");//根据命令行的情况设置m_t

<think>好的,用户的问题是关于如何在UVM中配置环境以打印所有与UVM objection跟踪相关的调试信息。我需要根据提供的引用内容来回答这个问题。 首先,用户提到了+UVM_OBJECTION_TRACE,这可能是一个命令行参数,用于启用objection的跟踪功能。引用[3]中的日志显示UVM输出了objection相关的信息,比如计数和总数,这可能与这个参数有关。因此,我应该建议用户在仿真时添加这个参数,例如+UVM_OBJECTION_TRACE。 接下来,用户需要设置verbosity来控制uvm_info消息的显示。引用[1]提到可以全局或分布式地控制verbosity。对于objection跟踪信息,可能需要设置特定的verbosity级别。比如,使用命令行参数+uvm_set_verbosity=uvm_test_top.env,objection,UVM_DEBUG,time,100,这里的路径可能需要根据实际环境结构进行调整。 另外,引用[2]提到drain_time的设置可能影响phase结束的时机,但用户的问题主要是关于调试信息的打印,所以这部分可能不需要详细展开,但可以作为相关点提到。 然后,用户可能需要通过UVM源代码查找相关的标识符,例如uvm_objectionuvm_phase,并设置断点来调试。这部分可以建议用户结合调试工具进行。 最后,需要提醒用户命令行参数的具体使用方式,比如在仿真命令中添加这些参数,并确保路径和组件名称正确。同时,可能还需要调整verbosity的等级,如UVM_FULL或UVM_DEBUG,以确保信息被打印。 总结步骤: 1. 添加+UVM_OBJECTION_TRACE命令行参数。 2. 设置全局或特定组件的verbosity级别为UVM_DEBUG。 3. 使用uvm_cmdline_processor检查参数是否生效。 4. 必要时结合调试工具检查代码。 需要确保这些步骤覆盖了用户的需求,并且引用了提供的参考资料。同时,生成的相关问题应围绕UVM调试、verbosity设置、objection机制等展开。</think>在UVM中配置objection跟踪调试信息,可通过以下步骤实现: ### 1. 启用全局调试参数 在仿真命令行添加参数: ```shell +UVM_OBJECTION_TRACE ``` 该参数会激活所有uvm_objection相关的调试信息输出,包括objection的申请、撤销和状态变化[^3]。 ### 2. 设置verbosity级别 使用以下命令行参数提升特定组件或全局的verbosity等级: ```shell +uvm_set_verbosity=uvm_test_top.env,<component>,UVM_DEBUG,time,100 ``` 其中: - `uvm_test_top.env`为组件路径 - `<component>`可替换为`uvm_objection`或具体phase名称 - `UVM_DEBUG`为最高详细级别[^1] ### 3. 检查objection触发点 在RTL/验证环境代码中,通过添加调试标识符: ```systemverilog uvm_info("OBJIN_TRC", $sformatf("Objection状态变更 count=%0d", objection_count), UVM_DEBUG) ``` 结合`+UVM_OBJECTION_TRACE`参数可定位具体触发位置[^3]。 ### 4. 验证drain_time配置 在phase结束前添加调试语句: ```systemverilog uvm_top.set_drain_time(this, 10ns); uvm_info("DRAIN_CHK", "当前drain_time设置已生效", UVM_MEDIUM) ``` 通过观察日志输出验证phase结束时序[^2]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值