约束的时候通过约束块控制,实现 冲突约束的不同 情况下的通过。
class Packet;
rand int length;
//进行两个冲突的约束length
constraint c_short {length inside [1:32];}
constraint c_long {length inside [1000:1023];}
endclass
Packet p;
initial begin
p = new();
//Create a long packet by disabling short constraint
p.c_short.constraint_mode(0);
assert(p.randmize());
transmit(p);
//Create a short packet by disabling all constraints then enabling only the shart constraint
p.constraint_mode(0);
p.c_short.constraint_mode(1);
assert(p.randomize());
transmit(p);
end
问题:随机化对象,不禁止任何一个约束块,那么调用随机函数randomize()函数之后, p.length可能 会是多少呢?0
class Transaction;
rand bit [31:0] addr, data;
constraint c