热度 11| |||
为了能在virtual sequence中实现统一的约束管理,方便在单一验证场景但测试数据量巨大的情况下完成多case回归收集覆盖率,可以如此实现。
首先通过使用uvm_do_on_with,发送约束。
约束名字必须是seq中定义的中间变量,不可以是transaction,因为如果这样uvm会报一个返回空指针的错误,原因是,transaction没有被例化,地址空间不存在。
`uvm_do_on_with(tr,sqr,{tr.var == 1};)只能发送一个包,如果seq中其他逻辑恐怕就不好说了。
大致实现方法如下。
1、class vseq;
`uvm_do_on_with(seq,p_sequencer.vsqr,{value==0;});
2、
class seq
rand bit value;
transaction tr;
...
tr.value = value;