我是 Verilog 的新手,我想知道您对尝试合成下面引用的代码部分时遇到的错误的看法:
input [31:0] A;
reg [31:0] X,Y;
reg [15:0] width;
input action;
always@*
begin
width= A [31:16];
if (action==1)
begin
case (width)
16'b0: X=0;
default:
begin
for (i=32; i>=width+1 ; i=i-1)
X[i]=0;
for (i=width; i>=0; i=i-1)
X[i]=1;
end
endcase
Y=X >> 1;
end
end
我正在使用 Cadence 综合工具,我得到的错误是在我的这部分代码中说:
索引“X[-1]”不在声明的有效范围内 [31:0]
我不明白,因为即使width=0
我有一个不应该涉及 for 循环的特殊情况。我也尝试将限制增加到width +2
,width +1
然后shift the quantity X by 2
..但也遇到了同样的错误。
先感谢您!