Ограничение для определенных битов

Я пытаюсь случайно ограничить 32-битный адрес. Есть ли способ ограничить определенные биты адреса?

rand bit [31:0] addr;

// last two bits should always be zero

req.randomize() with { addr[1:0] == 2'b00; };

person shicky    schedule 13.01.2014    source источник
comment
этот код должен работать. вы также можете использовать ниже req.randomize(); loc_addr = {req.addr[31:2],2'b00} это грубый способ, но всегда будет работать.   -  person vjain419    schedule 23.01.2014


Ответы (1)


Да, есть способы ограничить определенные биты адреса.

Один из способов — использовать 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
person toolic    schedule 13.01.2014