是否有必要在Verilog中对扩展0位进行签名?

时间:2013-07-13 18:54:25

标签: verilog hdl modelsim

Verilog全新。

简单的32位寄存器:

    reg32 Reg_32 (
    .in(valueA), // input 32 bits               
    .clock(clk),
    .reset(rst),
    .out(valueB) // output 32 bits  

但是,ValueA定义为10位线[9:0]。

valueA是否需要22个扩展0位?

即:

    .in({22b'0,valueA}), // 22 bits of 0 + value of wire [9:0]

或编译器是否在ModelSim中执行此操作?

1 个答案:

答案 0 :(得分:4)

我怀疑在大多数情况下都是必要的。但是,为了避免由于编译器不同而导致的不可预测行为,将值明确填充到正确的宽度会更安全。我会使用复制串联(例如IEEE Std 1800-2012中所述):

.in ({ {22{1'b0}}, valueA}),