AR# 6514


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


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

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);


This problem is fixed in the latest 3.1i Service Pack, available at:
The first service pack containing the fix is 3.1i Service Pack 3.
AR# 6514
Date 08/20/2002
Status Archive
Type General Article
People Also Viewed