如何结束OVM中所有未解决的异议

时间:2019-03-01 05:11:59

标签: system-verilog uvm

我处于运行阶段,可以说我提出了20个反对意见。我想结束所有已经提出的20个反对意见,并在同一阶段提出20个新的反对意见,而不必跳到下一阶段。有人可以建议如何实现吗?

1 个答案:

答案 0 :(得分:0)

这是第一种方法(您不知道提出了多少反对意见):

  phase.raise_objection(this);
  phase.raise_objection(this);
  //your code here
  m_phase.drop_objection(this, "", m_phase.get_objection_count(this));

这是相同的方法(假设您知道提出了多少反对意见):

  phase.raise_objection(this, "raise 3 objections", 3);
  //your code here
  m_phase.drop_objection(this, "drop 3 objections", 3);
  end

方法较少,但值得一提:

  `uvm_info(get_type_name(), $sformatf("Dropping all objections now"), UVM_MEDIUM)  
  for (int i=0 ; m_phase.get_objection_count(this) > 0; i++) begin
    `uvm_info(get_type_name(), $sformatf("Dropping objection #%d", i), UVM_MEDIUM)
    m_phase.drop_objection(this);
  end

您可以在此处找到有关uvm_phase类的更多信息: https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.2/html/files/base/uvm_phase-svh.html

我还为这些示例编写了代码,供您在这里尝试: https://www.edaplayground.com/x/2KLd