System verilog 特定位的约束
我试图随机约束32位地址。 有没有办法约束地址的特定位System verilog 特定位的约束,system-verilog,verification,System Verilog,Verification,我试图随机约束32位地址。 有没有办法约束地址的特定位 rand bit [31:0] addr; // last two bits should always be zero req.randomize() with { addr[1:0] == 2'b00; }; 是的,有一些方法可以约束地址的特定位 一种方法是使用随机化,正如您所做的那样 另一种方法是在类中创建约束块。例如: class foo; rand bit [31:0] addr; constraint c1
rand bit [31:0] addr;
// last two bits should always be zero
req.randomize() with { addr[1:0] == 2'b00; };
是的,有一些方法可以约束地址的特定位 一种方法是使用随机化,正如您所做的那样 另一种方法是在
类中创建约束
块。例如:
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}
这是一种粗糙的方法,但总是有效的。