Следующий код имеет два класса - пакет и пакет_1;Класс пакета имеет свойства длины и режима, класс пакета имеет ограничения, необходимые для длины и режима.В классе packet_1 я хочу создать 30 таких пакетов и хочу применить ограничение длины = 6 для 10 случайных пакетов, я мог бы сделать это для одного конкретного (не случайного) пакета, пожалуйста, дайте мне знать, если это правильный путь и каксделать это для 10 случайных пакетов?
Следующий код сгенерировал 30 пакетов с 4-м пакетом, имеющим длину = 6 и соответствующим другим ограничениям, но как сделать то же самое для 1 случайного пакета (не фиксированного 4-го пакета)) или 10 случайных пакетов из 30.
class packet;
rand bit[1:0] mode;
rand int length;
int num;
constraint mod_len {mode==0 -> length inside {[1:5]};
mode==1 -> length inside {[6:10]};
mode==2 -> length inside {[11:15]};
mode==3 -> length inside {[16:20]};};
endclass
class packet_1;
packet p1;
task pack();
p1=new;
p1.num=0;
repeat(30)
begin
p1.num++;
if(p1.num==4)
p1.randomize with {(p1.length==6);} ;
else
p1.randomize ;
$display("packet is %p",p1);
end
endtask
endclass
module a;
packet_1 p2;
initial
begin
p2=new();
p2.pack();
end
endmodule