如何设置完整变量常量?

时间:2013-08-20 06:04:32

标签: 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

2 个答案:

答案 0 :(得分:7)

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

{a {b}} 会生成一个 a 向量 b 副本的向量。

在你的情况下,这将是:

 a = {`SIZE{1'b1}};

答案 1 :(得分:5)

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

如果您使用的是SystemVerilog,则可以使用a = '1;并将所有位设置为1.

这是SystemVerilog LRM所说的,

  

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