如何设置完整变量常量?

gno*_*ejh 2 verilog system-verilog

当数字大小可变并因此必须通过参数设置时,如何设置最大数量?在下面,结果必须是"FFFF",但模拟器只返回"F".谁能解决这个问题?

`define SIZE 10
module tb1;
    reg [15:0] a;

    initial begin
        a = `SIZE'hF;
        $display("a=%h",a);
    end
endmodule
Run Code Online (Sandbox Code Playgroud)

Pet*_*vaz 7

您可以使用复制运算符构造位向量.

{A {B}}产生具有矢量一个载体的拷贝b.

在你的情况下,这将是:

 a = {`SIZE{1'b1}};
Run Code Online (Sandbox Code Playgroud)


jcl*_*lin 5

`SIZE'hF,该SIZE部分仅表示它只是一个n位宽度数.在您的情况下,10'hF它意味着它是一个10位数字0xF,因此它在您的模拟中是正确的.

如果您正在使用SystemVerilog,您可以使用a = '1;它,它会将所有位设置为1.

这是SystemVerilog LRM所说的,

可以通过使用撇号(')在单比特值之前指定未指定的单比特值,但不使用基本说明符.未计算值的所有位应设置为指定位的值.在自定义的上下文中,未标准化的单比特值应具有1比特的宽度,并且该值应被视为无符号.