Timing issues !!! help help!

Discussion in 'VHDL' started by jaquesgrobler, May 8, 2008.

  1. jaquesgrobler


    May 8, 2008
    Hola.... okay i'm having a really frustrating problem with timing and I'm running out of time. I'm designing a digital filter for an FPGA, but there are some hicups.

    Basically, the filtering process contains a state machine with 20 states that all follow in straight forward sequence. I make use of megafunction multipliers and adders (LPM_MUL & LPM_ADD). One state will have one multiplication operation. then the output will be fed into an adder in the next state.

    The problem im sitting with is that when i do a functional simulation, the results are correct. however, when i do a timing analysis, the values are incorrect. So I assume it's a timing related problem. The only timing related warning I have is :

    Warning: 31 (of 3893) connections in the design require a large routing delay to achieve hold requirements. Please check the circuit's timing constraints and clocking methodology, especially multicycles and gated clocks.

    What exactly does this mean? How do I go about improving this. I'm stil a bit of a beginner with this language.

    The other thing that I think might have a hand in the problem, is this:

    Warning: Latch \p2:Temp_mem[1][0] has unsafe behavior
    Warning: Ports D and ENA on the latch are fed by the same signal present_state.s10

    there are more than one of these. Could they be causing the delays or timing errors? I've seen some other posts on this topic but still don't really grasp how I am suppose to fix it. The code in state S10 looks like this:

    next_state <= S11;
    stop_filter <= '0';
    Temp_mem(Temp_point) := add_output2;
    mul_A1 <= Temp_mem(Temp_point);
    mul_B1 <= COEFB(0);
    shifted_answer1 := mul_ans1 (31 downto 8 );

    next_state is obviously the next state.
    stop_filter is a flag that is turned on later when the sample is filtered.
    Temp_mem (Temp_point) is an array of the following:

    type wrap_memory is
    array(0 to 4) of std_logic_vector (23 downto 0);

    and is used to store 5 values.
    add_output2 is the output from state S9's addition operation.
    Temp_point is just an integer that works like an array index.
    mul_A1 and mul_B1 are the inputs to a multiplier.
    COEFB (0) is a constant value.
    mul_ans1 is the ouput from the multiplier and shifted_answer1 is a valiable it is stored in and carried over in to the next state.

    Any help at all would be appreciated. Basically i need to know if the latch's unsafe behaviour is responsible and how the hell to fix it.

    Thanks to anyone who responds
    jaquesgrobler, May 8, 2008
    1. Advertisements

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Brian Hanson

    File.Copy Method timing issues.

    Brian Hanson, Feb 6, 2004, in forum: ASP .Net
  2. tatemononai@gmail.com

    Timing issues with OnInit in derived class

    tatemononai@gmail.com, Mar 14, 2005, in forum: ASP .Net
    Brock Allen
    Mar 14, 2005
  3. Josef Frank
    Josef Frank
    Oct 28, 2010
  4. Giles Bowkett

    precise timing issues with ruby

    Giles Bowkett, Jan 9, 2008, in forum: Ruby
    Giles Bowkett
    Jan 9, 2008
  5. mastermagrath

    performance and timing issues udp socket

    mastermagrath, Nov 29, 2005, in forum: Perl Misc
    Nov 29, 2005

Share This Page