已知uvm_sequence_item中,存在随机定宽数组rand int array_a[5],
-
如何对其定义constraint约束?
-
如何对其进行`uvm_do_on约束?
-
在uvm_sequence_item中定义constraint
class my_item extends uvm_sequence_item;
rand int array_a[5];// 方法1: foreach循环约束
constraint array_c1 {在这里插入代码片
foreach(array_a[i]) {
array_a[i] inside {[0:100]};
}
}// 方法2: 元素间关系约束
constraint array_c2 {
array_a[0] < array_a[4];
array_a.sum() == 200;
}
endclass -
在uvm_do_with中约束
class my_sequence extends uvm_sequence#(my_item);
task body();
// 使用foreach
`uvm_do_with(req, {
foreach(array_a[i]) {
array_a[i] inside {[10:50]};
}
})// 指定具体元素 `uvm_do_with(req, { array_a[0] == 1; array_a[1] == 2; array_a[2] == 3; array_a[3] == 4; array_a[4] == 5; })endtask
endclass
Note:`uvm_do_with(req,{array_a == '{1,2,3,4,5};})报错