Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
14 years ago

multicycle special case

Hi,

I have a special case of multicycle.

The source data is changing long after the destination register sampling the data.

I attached figure for details.

Please help me to define the timequest proper constraints.

I tried to define:

set_multicycle_path .... -setup 156

set_multicycle_path .... -hold 155

and received hold violation, but as you can see there is no way there is an hold problem

1 Reply

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I'm not following the diagram, specifically what the setup requirement should be(and if they're edge aligned). Specifically I see the source data changing but don't see when it is latched. Let's say it is latched in the destination on the next latch edge(i.e. the default). Let's say the previous data is latched 20 clock cycles before that. Then you would do something like:

    set_multicycle_path -hold -end 20

    Now, I believe the data is latched much later. So let's pretend it's 100 cycles later. Then it would be:

    set_multicycle_path -setup -end 100

    set_multicycle_path -hold -end 120

    I would suggest looking at the TimeQuest User Guide on alterawiki.com, specifically Section 2 on Multicycles. Also, a good way is to put in a multicycle and run report_timing -setup and report_timing -hold on that path to see what the setup and hold relationships are. If they're not what you want, start changing the values(do the setup first, since hold changes with it). You don't have to re-fit, just re-run TimeQuest. It might take a few iterations but should be pretty quick