Je veux contraindre une adresse dans le système Verilog afin que l'adresse est égale à deux la puissance de la valeur. par exemple l'adresse générée (16 bits) doit êtreSystème Verilog randomize adresse égale à 2 à la mise hors tension
addr = 0, 2, 4, 8, 16, 32 .... 32768
Les ouvrages suivants pour moi. Cependant, je cherche n'importe quelle autre manière courte et élégante de le faire.
class two_power_addr;
rand bit [15:0] addr;
bit [15:0] temp;
constraint c_addr {
addr == temp;
}
endclass
module tb();
two_power_addr c;
initial begin
c=new();
c.temp=0;
c.randomize();
$display("%0d \n", c.addr);
c.temp=16'h2;
for(int i=0; i<10; i++) begin
c.randomize();
c.temp=c.temp<<1;
$display("%0d \n", c.addr);
end
end
endmodule