定宽数组的随机约束

已知uvm_sequence_item中,存在随机定宽数组rand int array_a[5],

  1. 如何对其定义constraint约束?

  2. 如何对其进行`uvm_do_on约束?

  3. 在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

  4. 在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};})报错

相关推荐
北方孤寂的灵魂11 天前
systemverilog中随机std::randomize的用法
verilog·systemverilog·sv·数字验证
蓝天下的守望者12 天前
由continue引发的一个debug灾难
算法·systemverilog
蓝天下的守望者21 天前
systemverilog系统函数$test$plusargs和$value$plusargs
systemverilog·芯片验证
lbt_dvshare24 天前
MTCMOS flow
systemverilog
蓝天下的守望者1 个月前
systemverilog中的virtual function
systemverilog
Nick.Q1 个月前
$cast用法
systemverilog
不会武功的火柴1 个月前
UVM验证入门(18)-Callback机制
systemverilog·ic验证·uvm方法学
不会武功的火柴1 个月前
UVM验证入门(15)-uvm_agent代理
systemverilog·ic验证·uvm方法学
zhuangzhunag2 个月前
【SV验证入门】接口在设计和验证中的使用
systemverilog