VHDL Synthesis Error

Hello all,

I am trying to implement a network adapter that sends small packets to and from FPGA boards using VHDL. I want to download this and test it out, but I am getting the following synthesis error when I try to generate the bit file in Xilinx:

Related source file is "usa/delvecch/project1/Packet_Gen.vhd" ERROR:Xst:2108 - Logic for signal is controlled by a clock but does not appear to be a valid sequential description ERROR:Xst:1431 - Failed to synthesize unit .

Here is my code for the packet generation module:

library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all;

entity Packet_Gen is port( clkin: in std_logic; reset: in std_logic; load: in std_logic; fwd: in std_logic; dest_addr: in std_logic_vector (1 downto 0); packet_fwd: in std_logic_vector (5 downto 0); packet_out: out std_logic_vector (5 downto 0)); end Packet_Gen;

architecture behavioral of Packet_Gen is signal load_prev: std_logic := '0';

begin PG_proc: process (clkin, reset) is

begin if (reset = '0') then packet_out

Reply to
ray.delvecchio
Loading thread data ...

Maybe load_prev

Reply to
Mike Treseler

Not all synthesis tools allows signal assignments inside clocked processes, but outside the clocked IF statement. I'm pretty sure those that do will not allow the right hand side expression to contain signals (must use variables, constants, etc.).

Andy

Reply to
Andy

That's interesting, although the component I use to transmit this packet assigns the input to the output within a clocked if-statement, and I have tested this down to the board with another experiment. Here is the transmit code. The output from the packet generator (packet_out) is connected to the input of the transmit block (datatosend). Any other ideas?

library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all;

entity TX is port ( clkin : in std_logic; reset : in std_logic; datatosend: in std_logic_vector (5 downto 0); din : out std_logic_vector (5 downto 0)); end TX;

architecture behavioral of TX is begin

TX_proc: process (clkin, reset) is begin if reset = '0' then din

Reply to
Ray D.

I'm not sure you're getting what Mike originally said. You have: end if; load_prev

Reply to
Brad Smallridge

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.