Я новичок в 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
.. но также получил ту же ошибку.
Заранее спасибо!