Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > Array indexing problem: "Data corruption (ListDelShift) - Bad Index"

Reply
Thread Tools

Array indexing problem: "Data corruption (ListDelShift) - Bad Index"

 
 
Robin Emery
Guest
Posts: n/a
 
      06-21-2006
Hi,

I'm trying to access a single element of a std_logic_vector, and I am
getting this error from ISE (6.3i):

"FATAL_ERROR:Xst:listutil.c:503:1.19 - Data corruption (ListDelShift) -
Bad Index Process will terminate. To resolve this error, please
consult the Answers Database and other online resources at
http://support.xilinx.com. If you need further assistance, please open
a Webcase by clicking on the "WebCase" link at
http://support.xilinx.com"

The code that generates this is:

process(output_enable)
variable temp_weight :
std_logic_vector(weight_precision - 1 downto 0);
begin
if config_enable='0' then
for i in weight_precision - 1 downto 0 loop
temp_weight(i) := weight_table(0); <== ERROR HERE
end loop;

weight <= SXT(temp_weight, adder_input_width);
end if;
end process;

The error would appear to refer to the "weight_table(0)" statement.
Normally, I don't reference just the 0'th element - I use an expression
to calculate the bit I need - but the error still occurs. The error
occurs with other indices (such as 1,2,3 etc, and also
"weight_table'length - 1") too.

weight_table is defined as:
"signal weight_table : std_logic_vector(weight_table_left downto 0)"
where "weight_table_left" is 63 in this case.

"weight_table" is initialised to all zeros.

I'm sure it is something simple, but I just can't see it. Can anyone
help?

Many thanks,
Robin

 
Reply With Quote
 
 
 
 
Andy
Guest
Posts: n/a
 
      06-21-2006
What does simulation say? It is usually a lot easier to determine the
cause of bad indexing in simulation.

There are several signals missing from your sensitivity list, but I
doubt that would cause your problem in synthesis.

For safety's sake, I usually try to use an array's 'range attribute as
the loop index specification. That way I know that the index will not
be out of bounds on the array.

Andy

 
Reply With Quote
 
 
 
 
Robin Emery
Guest
Posts: n/a
 
      06-21-2006
Hi Andy,

I'm not sure that I can simulate the code as the error occurs during
synthesis...

As for the range, the value is question is the "weight_table" signal -
which in the code I posted has a fixed index. I know it must be this
that is causng the error as I have removed the other parts of the code
through a process of elimination.

Does that help to shed any light on the problem?

Thanks,
Robin

Andy wrote:
> What does simulation say? It is usually a lot easier to determine the
> cause of bad indexing in simulation.
>
> There are several signals missing from your sensitivity list, but I
> doubt that would cause your problem in synthesis.
>
> For safety's sake, I usually try to use an array's 'range attribute as
> the loop index specification. That way I know that the index will not
> be out of bounds on the array.
>
> Andy


 
Reply With Quote
 
Mike Treseler
Guest
Posts: n/a
 
      06-21-2006
Robin Emery wrote:

> I'm not sure that I can simulate the code as the error occurs during
> synthesis...


I'm sure you can, if you have a vhdl simulator.

-- Mike Treseler
 
Reply With Quote
 
dipesh.trivedi
Guest
Posts: n/a
 
      06-22-2006
hi
i think Mike is right. it is not always that, if your code is not
getting synthesis means it wont get simulate. i think you should try
to simulate. if there wont be an error, at least you will get warnings
from simulator. so please try to simulate first.


Mike Treseler wrote:
> Robin Emery wrote:
>
> > I'm not sure that I can simulate the code as the error occurs during
> > synthesis...

>
> I'm sure you can, if you have a vhdl simulator.
>
> -- Mike Treseler


 
Reply With Quote
 
KJ
Guest
Posts: n/a
 
      06-22-2006
You have a number of problems in the code that you posted....

1. What is 'weight_precision'? By it's usage it would appear to most
likely be a constant, but who knows?
2. The process lists the signal 'output_enable' in the sensitivity list
but that signal is not used in the process so it shouldn't be there.
3. config_enable IS used in the process but is not in the sensitivity
list.
4. weight_table IS used in the process but is not in the sensitivity
list.
5. adder_input_width IS used in the process but is not in the
sensitivity list.

Clean up those problems and as has been suggested run it on a
simulator.

KJ

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Dynamic indexing (multi-dimensional-indexing) (probably my most important/valuable posting up to this date) Skybuck Flying C Programming 30 09-18-2011 11:29 PM
Indexing services under Windows XP SP2 - Can I disable MS Indexing Service to hasten Google's OR does Google Desktop uses this MS Indexing Service? ricardodefaria Computer Support 6 08-05-2007 04:14 AM
How much slower is dict indexing vs. list indexing? Emin Python 4 01-12-2007 02:40 PM
Indexing PDF's using MS Indexing Service C ASP General 3 10-17-2003 05:47 PM
Indexing PDF Files using MS Indexing Service C ASP .Net 0 10-17-2003 04:27 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57