【发布时间】:2019-05-28 15:11:37
【问题描述】:
在写泛型模块的时候,经常会遇到0位宽的情况。
module test #(
parameter WIDTH
) (
input logic [31 : 0] x,
output logic [31 : 0] y
);
always_comb begin
y = x[WIDTH - 1 : 0];
end
endmodule
例如,上述模块从 x 中提取最低 WIDTH 位。 当 WIDTH 为 0 时,不关心输出。 但是,当使用 WIDTH 0 实例化模块时,我在 Modelsim 中收到以下错误:
# ** Fatal: (vsim-3373) test.sv(8): Range of part-select [-1:0] into 'x' [31:0] is reversed.
我尝试了以下代码,希望在编译时优化掉错误的部分,但错误仍然存在。
if (WIDTH == 0) y = 0;
else y = x[WIDTH - 1 : 0];
这种情况有什么补救措施吗?
【问题讨论】: