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# 6514

3.1i XST - " Done: failed with exit code: 0002" for VHDL designs with exponential operator, functions, and procedures.

Description

Keywords: XST, Done, exit, code, 0002, VHDL, exponent, function, procedure

Urgency: Standard

General Description:
Problems occur with a variable being used in the combination of the following items:

1. The variable is used as an index in the signal that is being operated on.
2. The variable is used as an index in a loop statement as the exponent.
3. The signal is passed to the function/procedure.

These points are illustrated in the following VHDL portions:
.
.
.
TYPE data_array IS ARRAY (integer range <>) OF std_logic_vector(7 DOWNTO 0);

Point 1: The variable "add_width" is used as an index in the signal "data".

SIGNAL data : data_array(0 to (2**add_width) );

procedure init_mem(signal memory_cell : inout data_array ) is
begin

Point 2: The variable "add_width" is the upper bound in the loop as an exponent.

for i in 0 to (2**add_width) loop
memory_cell(i) <= (others => '0');
end loop;

end init_mem;
.
.
.

Point 3: The signal "data" is being passed to the procedure.

init_mem ( data);

Solution

This problem is fixed in the latest 3.1i Service Pack, available at:
http://support.xilinx.com/support/techsup/sw_updates.
The first service pack containing the fix is 3.1i Service Pack 3.
AR# 6514
Date Created 05/17/1999
Last Updated 08/20/2002
Status Archive
Type General Article