uvm config机制(uvm环境进入scoreboard的死循环)

技术如何浅析UVM概念中的raise/drop objection如何浅析UVM概念中的raise/drop objection,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴

如何浅析UVM概念中的提出/放弃异议,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

UVM中,组件的任务阶段是消耗仿真时间的,各个成分需要在不同层次的任务阶段中同步信息。

UVM中通过异议机制来控制phase的执行,通过提出或放弃异议来决定阶段中事件的开始和停止。

当程序根据阶段执行顺序,进入到某一个阶段中时,它会收集此阶段提起的所有的反对(每个成分都可以raise 反对)

当这个阶段中所有的反对都被撤销(drop)之后,那么这个阶段就执行结束。

成分或顺序将在验证行为的开始提出阶段异议,在验证行为完成后放弃阶段异议。一旦阶段里所有的反对都被掉了,该阶段就结束了。

考虑一个例子,探员完成读写操作。通常可以在顺序或者试验中添加提出/放弃反对意见。

Objection insequence

classwr _ rd _ seqextendsuvm _ sequence #(mem _ seq _ item);

taskpre _ body();

//raiseobjectionifstartedasarootsequence

if(starting_phase!=null)

starting_phase.raise_objection(此);endtasktokbody();

` uvm_do_with(req,wr _ en==1);

` uvm_do_with(req,rd _ en==1);

endtasksopst _ body();

//dropoobjectionifstartedasarootsequence

if(starting_phase!=null)

starting _ phase.drop _ objection(此);

endtaskendclass

在uvm _序列中有一个starting_phase成员,它是uvm _相位类型。如果我们通过设置运行阶段的default sequence来启动一个序列,那么会默认将运行阶段的阶段传递给这个顺序的开始阶段。

Objection in test

如果需要在试验中显式启动序列,即在试验中添加反对。

class wr _ rd _ testextendsuvm _ test;

任务main _ phase(uvm _ phase阶段);

阶段。提出异议();

//rasingbejectionwr _ rd _ seq。start(mem _ agent。定序器);

阶段。drop _ objection();

//dropingbemonedtaskend类

在试验中显式启动顺序时开始阶段的值是零。

关于如何浅析UVM概念中的提出/放弃异议问题的解答就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/151918.html

(1)

相关推荐