UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 21514

7.1i XST - "ERROR:Xst:792 - "<filename>.v" line 8: Index 7 is not in range of signal <select> Set property "resynthesize = true" for unit <problem>"

Description

Keywords: range, signal, analysis, analyze

Urgency: Standard

General Description:
When trying to synthesize the following code:

----------------------------------------------------------------------------------------------
module problem(input_a, output_b);
parameter size = 1;
input [31:0] input_a;
output [size +8:0] output_b;

reg [size +8:0] select;
always@* begin
select[size +8 : size +6] = input_a[31:29];
select[size +5 : 0] = input_a[size +5 : 0];
end

assign output_b = select;

endmodule
-------------------------------------------------------------------------------------------

XST in ISE 7.1i, produces the following error:

"=========================================================================
* HDL Analysis *
=========================================================================
Analyzing top module <problem>.
size = 1
ERROR:Xst:792 - "problem.v" line 8: Index 7 is not in range of signal <select>.
Set property "resynthesize = true" for unit <problem>."


This used to work in ISE 6.3i version of XST.

Solution

This is valid code and should work fine in XST, but there is a problem with the ISE 7.1i version of XST that causes this error.

The same code can be successfully recoded in the following manner:

------------------------------------------------------------------------------------------------------------
module problem(input_a, output_b);
parameter size = 1;
parameter msb1 = size+8;
parameter msb2 = size+5;
parameter lsb1 = size+6;

input [31:0] input_a;
output [msb1:0] output_b;

reg [msb1:0] select;
always@* begin
select[msb1 : lsb1] = input_a[31:29];
select[msb2 : 0] = input_a[msb2 : 0];
end

assign output_b = select;

endmodule
--------------------------------------------------------------------------------------------------------------

This issue is fixed in 10.1
AR# 21514
Date Created 09/04/2007
Last Updated 01/08/2009
Status Archive
Type General Article