program tst;
class Packet;
rand bit [7:0] length,payload[$];
constraint c_valid {length > 0;payload.size == length;}
constraint payload_val {foreach(payload[i]) payload[i] < 100;};
function void display;
$display("Packet len=%0d,payload size=%0d,byte=",length,payload.size());
for(int i=0; (i<10 && i<payload.size()); i++)
$write("%0d\t",payload[i]);
$display( "\n------------------------------------------------------------------------------" );
endfunction
endclass
Packet p;
initial begin
for(int i=0;i<=9;i++)
begin
p = new();
if (i%2==0) begin
p.length.rand_mode(1);
$display("i=%0d,rand_mode = %0d",i,p.length.rand_mode());
$display("Simple randomize, queue's length is random");
assert (p.randomize());
p.display;
end else begin
p.length.rand_mode(0);
$display("i=%0d,rand_mode = %0d",i,p.length.rand_mode());
p.length = 42;
$display("Randomize with rand_mode, queue's length is = %0d",p.length);
assert(p.randomize());
p.display;
end
end
$stop;
end
endprogram