Я пытаюсь случайно ограничить 32-битный адрес. Есть ли способ ограничить определенные биты адреса?
rand bit [31:0] addr;
// last two bits should always be zero
req.randomize() with { addr[1:0] == 2'b00; };
Я пытаюсь случайно ограничить 32-битный адрес. Есть ли способ ограничить определенные биты адреса?
rand bit [31:0] addr;
// last two bits should always be zero
req.randomize() with { addr[1:0] == 2'b00; };
Да, есть способы ограничить определенные биты адреса.
Один из способов — использовать randomize with
, как вы сделали.
Другой способ — создать блок constraint
внутри вашего файла class
. Например:
class foo;
rand bit [31:0] addr;
constraint c1 { addr[1:0] == 2'b00; }
endclass
module tb;
foo req = new();
initial begin
repeat (5) begin
req.randomize();
$display(req.addr, " ", req.addr[1:0]);
end
end
endmodule
Выход:
3053944240 0
2417184000 0
629780252 0
469272576 0
1715295476 0
req.randomize(); loc_addr = {req.addr[31:2],2'b00}
это грубый способ, но всегда будет работать. - person vjain419   schedule 23.01.2014