Go Back   Velocity Reviews > Newsgroups > VHDL
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

VHDL - Xilinx XST Error

 
Thread Tools Search this Thread
Old 06-13-2006, 08:59 PM   #1
Default Xilinx XST Error


At the bottom of this post is the code.

First, let me say that I have run this "program" through a TBW, and it
seems to simulate correctly.

Second, I'll describe what this module does (or at least, should do).
8 bytes (along with 5 address bits that are carried). When 8 bytes
come in, it outputs all 8 at once in a 64 bit value (again, along with
the carried 5 bit address).

The latch line is mostly simply passed through, except that it is
additionally used to reset the buffer pointer.

Am I making this task overly complex? If not, what's going on with it?

When I run the "implement design" task, I get the following warnings /
errors:



================================================== =======================
* HDL Analysis
*
================================================== =======================
Analyzing Entity <queue> (Architecture <behavioral>).
WARNING:Xst:790 - "C:/xilinx/tutorial/queue.vhd" line 46: Index
value(s) does not match array range, simulation mismatch.
INFO:Xst:1433 - Contents of array <data_buffer> may be accessed with an
index that exceeds the array size. This could cause simulation
mismatch.
ERROR:Xst:827 - "C:/xilinx/tutorial/queue.vhd" line 23: Signal
DATA_OUT<57> cannot be synthesized, bad synchronous description.




I'm indeed new to VHDL, and I'm just not clear on what the problem is
here. Any help would be greatly, greatly appreciated. I can supply a
zip of the project to anyone interested in helping enough for that.

Thanks!

Alex McHale








library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity queue is
Port ( DATA_IN : in STD_LOGIC_VECTOR (7 downto 0);
LATCH_IN : in STD_LOGIC;
CLOCK_IN : in STD_LOGIC;
ADDRESS_IN : in STD_LOGIC_VECTOR (4 downto 0);
DATA_OUT : out STD_LOGIC_VECTOR (63 downto 0);
LATCH_OUT : out STD_LOGIC;
CLOCK_OUT : out STD_LOGIC;
ADDRESS_OUT : out STD_LOGIC_VECTOR (4 downto 0));
end queue;

architecture Behavioral of queue is
type ram_type is array (0 to 7) of STD_LOGIC_VECTOR (7 downto 0);
signal data_buffer : ram_type := ("00000000", "00000000", "00000000",
"00000000", "00000000", "00000000", "00000000", "00000000");
signal buffer_write_offset : STD_LOGIC_VECTOR (3 downto 0) := "0000";
signal address_buffer : STD_LOGIC_VECTOR (4 downto 0) := "00000";
begin
process (CLOCK_IN, LATCH_IN)
begin
if rising_edge( LATCH_IN ) then
buffer_write_offset <= "0000";
LATCH_OUT <= '1';
elsif falling_edge( LATCH_IN ) then
LATCH_OUT <= '0';
elsif rising_edge( CLOCK_IN ) then
CLOCK_OUT <= '0';

if buffer_write_offset = "0000" then
DATA_OUT( 7 downto 0 ) <= data_buffer( 0 );
DATA_OUT( 15 downto 8 ) <= data_buffer( 1 );
DATA_OUT( 23 downto 16 ) <= data_buffer( 2 );
DATA_OUT( 31 downto 24 ) <= data_buffer( 3 );
DATA_OUT( 39 downto 32 ) <= data_buffer( 4 );
DATA_OUT( 47 downto 40 ) <= data_buffer( 5 );
DATA_OUT( 55 downto 48 ) <= data_buffer( 6 );
DATA_OUT( 63 downto 56 ) <= data_buffer( 7 );
ADDRESS_OUT <= address_buffer;
CLOCK_OUT <= '1' after 1ns;
end if;

data_buffer( conv_integer( buffer_write_offset ) ) <= DATA_IN after
5ns;
address_buffer <= ADDRESS_IN after 5ns;
buffer_write_offset <= (buffer_write_offset + 1) and "0111" after
10ns;
end if;
end process;
end Behavioral;



Alex McHale
  Reply With Quote
Old 06-14-2006, 07:54 PM   #2
Rtafas
 
Posts: n/a
Default Re: Xilinx XST Error
Hello,

You have 8 elements on data buffer. 3 bits to address it, from 0 to 7.
buffer_write_offset is 4 bits wide. it addresses 0 to 15. Correct the
size of bufferwrite_offset or increase the ram size.

About the error: it won´t compile with all these edges, with "after"
and "wait" statments. Search for synthesizable VHDL references. this is
a simulation model only.

Best regards,

RTafas



Alex McHale escreveu:

> At the bottom of this post is the code.
>
> First, let me say that I have run this "program" through a TBW, and it
> seems to simulate correctly.
>
> Second, I'll describe what this module does (or at least, should do).
> 8 bytes (along with 5 address bits that are carried). When 8 bytes
> come in, it outputs all 8 at once in a 64 bit value (again, along with
> the carried 5 bit address).
>
> The latch line is mostly simply passed through, except that it is
> additionally used to reset the buffer pointer.
>
> Am I making this task overly complex? If not, what's going on with it?
>
> When I run the "implement design" task, I get the following warnings /
> errors:
>
>
>
> ================================================== =======================
> * HDL Analysis
> *
> ================================================== =======================
> Analyzing Entity <queue> (Architecture <behavioral>).
> WARNING:Xst:790 - "C:/xilinx/tutorial/queue.vhd" line 46: Index
> value(s) does not match array range, simulation mismatch.
> INFO:Xst:1433 - Contents of array <data_buffer> may be accessed with an
> index that exceeds the array size. This could cause simulation
> mismatch.
> ERROR:Xst:827 - "C:/xilinx/tutorial/queue.vhd" line 23: Signal
> DATA_OUT<57> cannot be synthesized, bad synchronous description.
>
>
>
>
> I'm indeed new to VHDL, and I'm just not clear on what the problem is
> here. Any help would be greatly, greatly appreciated. I can supply a
> zip of the project to anyone interested in helping enough for that.
>
> Thanks!
>
> Alex McHale
>
>
>
>
>
>
>
>
> library IEEE;
> use IEEE.STD_LOGIC_1164.ALL;
> use IEEE.STD_LOGIC_ARITH.ALL;
> use IEEE.STD_LOGIC_UNSIGNED.ALL;
>
> entity queue is
> Port ( DATA_IN : in STD_LOGIC_VECTOR (7 downto 0);
> LATCH_IN : in STD_LOGIC;
> CLOCK_IN : in STD_LOGIC;
> ADDRESS_IN : in STD_LOGIC_VECTOR (4 downto 0);
> DATA_OUT : out STD_LOGIC_VECTOR (63 downto 0);
> LATCH_OUT : out STD_LOGIC;
> CLOCK_OUT : out STD_LOGIC;
> ADDRESS_OUT : out STD_LOGIC_VECTOR (4 downto 0));
> end queue;
>
> architecture Behavioral of queue is
> type ram_type is array (0 to 7) of STD_LOGIC_VECTOR (7 downto 0);
> signal data_buffer : ram_type := ("00000000", "00000000", "00000000",
> "00000000", "00000000", "00000000", "00000000", "00000000");
> signal buffer_write_offset : STD_LOGIC_VECTOR (3 downto 0) := "0000";
> signal address_buffer : STD_LOGIC_VECTOR (4 downto 0) := "00000";
> begin
> process (CLOCK_IN, LATCH_IN)
> begin
> if rising_edge( LATCH_IN ) then
> buffer_write_offset <= "0000";
> LATCH_OUT <= '1';
> elsif falling_edge( LATCH_IN ) then
> LATCH_OUT <= '0';
> elsif rising_edge( CLOCK_IN ) then
> CLOCK_OUT <= '0';
>
> if buffer_write_offset = "0000" then
> DATA_OUT( 7 downto 0 ) <= data_buffer( 0 );
> DATA_OUT( 15 downto 8 ) <= data_buffer( 1 );
> DATA_OUT( 23 downto 16 ) <= data_buffer( 2 );
> DATA_OUT( 31 downto 24 ) <= data_buffer( 3 );
> DATA_OUT( 39 downto 32 ) <= data_buffer( 4 );
> DATA_OUT( 47 downto 40 ) <= data_buffer( 5 );
> DATA_OUT( 55 downto 48 ) <= data_buffer( 6 );
> DATA_OUT( 63 downto 56 ) <= data_buffer( 7 );
> ADDRESS_OUT <= address_buffer;
> CLOCK_OUT <= '1' after 1ns;
> end if;
>
> data_buffer( conv_integer( buffer_write_offset ) ) <= DATA_IN after
> 5ns;
> address_buffer <= ADDRESS_IN after 5ns;
> buffer_write_offset <= (buffer_write_offset + 1) and "0111" after
> 10ns;
> end if;
> end process;
> end Behavioral;




Rtafas
  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

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

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

Similar Threads
Thread Thread Starter Forum Replies Last Post
Xilinx 7.1 and testbench error boitsas Software 0 01-15-2008 04:14 PM
xilinx ISE8.2 error: XST779 JayTee Hardware 1 07-11-2007 01:16 PM
Need help on Modelsim VHDL syntax? ASAP:) kaji General Help Related Topics 0 03-14-2007 10:43 PM
Need help on a Modelsim VHDL Syntax? ASAP:) kaji Software 0 03-14-2007 10:43 PM
Need Help on a Modelsim VHDL Syntax....ASAP:) kaji Hardware 0 03-14-2007 10:41 PM




SEO by vBSEO 3.3.2 ©2009, Crawlability, Inc.

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