【发布时间】:2014-08-14 00:29:48
【问题描述】:
我是 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 ..但也得到了同样的错误。
提前谢谢你!
【问题讨论】:
标签: verilog synthesis case-statement register-transfer-level cadence