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

Reply

VHDL - Re: Multi Cycle path and False paths

 
Thread Tools Search this Thread
Old 07-26-2003, 02:00 PM   #1
Default Re: Multi Cycle path and False paths


Multicycle paths are paths between registers that intentionally take more
than one clock cycle to become stable. For example a register may need to
trigger a signal every second or third rising clock edge.

A False path is any path that is not relevant to a circuit's operation.

A good description of both multicycle and false paths can be found in the
following Timing Analysis App Note:

http://www.altera.com/literature/an/an123.pdf

Subroto Datta
Altera Corp.




"LIJO" <> wrote in message
news:bftlvd$iao78$...
> Hi,
> Can anyone tell me what is Multi Cycle path and False path?
>
> thanks
> Lijo
>
>
>
>





Subroto Datta
  Reply With Quote
Old 07-26-2003, 05:24 PM   #2
Ray Cheung
 
Posts: n/a
Default Re: Multi Cycle path and False paths
There is a short and good example on multi-cycle path. Thanks.
http://www.saros.co.uk/hdlsolutions/...rdo/SAN001.pdf

- Ray

In comp.arch.fpga Subroto Datta <> wrote:
> Multicycle paths are paths between registers that intentionally take more
> than one clock cycle to become stable. For example a register may need to
> trigger a signal every second or third rising clock edge.


> A False path is any path that is not relevant to a circuit's operation.


> A good description of both multicycle and false paths can be found in the
> following Timing Analysis App Note:


> http://www.altera.com/literature/an/an123.pdf


> Subroto Datta
> Altera Corp.





> "LIJO" <> wrote in message
> news:bftlvd$iao78$...
>> Hi,
>> Can anyone tell me what is Multi Cycle path and False path?
>>
>> thanks
>> Lijo
>>
>>
>>
>>




--


Ray Cheung
  Reply With Quote
Old 07-30-2003, 05:10 AM   #3
hrwieuyriwru
 
Posts: n/a
Default Re: Multi Cycle path and False paths

"Subroto Datta" <> wrote in message
news:qXuUa.3036$ m...
> Multicycle paths are paths between registers that intentionally take more
> than one clock cycle to become stable. For example a register may need to
> trigger a signal every second or third rising clock edge.
>
> A False path is any path that is not relevant to a circuit's operation.
>
> A good description of both multicycle and false paths can be found in the
> following Timing Analysis App Note:
>
> http://www.altera.com/literature/an/an123.pdf
>
> Subroto Datta
> Altera Corp.


From a conceptual standpoint, these definitions are mostly correct.
But be aware that different CAD-tool vendors (Synopsys, Cadence,
etc.) may treat the *operational* meanings of false-path differently..

In Synopsys's case, their application manuals have clear
examples when to use 'set_disable_timing' versus 'set_false_path.'
The problem with set_false_path is that it can (unintentionally)
affect more than just timing-constraints.

>
>
>
> "LIJO" <> wrote in message
> news:bftlvd$iao78$...
> > Hi,
> > Can anyone tell me what is Multi Cycle path and False path?
> >
> > thanks
> > Lijo
> >
> >
> >
> >

>
>
>





hrwieuyriwru
  Reply With Quote
Old 07-30-2003, 07:53 PM   #4
Prasanna
 
Posts: n/a
Default Re: Multi Cycle path and False paths
"hrwieuyriwru" <> wrote in message news:<WyHVa.696$ y.com>...
> "Subroto Datta" <> wrote in message
> news:qXuUa.3036$ m...
> > Multicycle paths are paths between registers that intentionally take more
> > than one clock cycle to become stable. For example a register may need to
> > trigger a signal every second or third rising clock edge.
> >
> > A False path is any path that is not relevant to a circuit's operation.
> >
> > A good description of both multicycle and false paths can be found in the
> > following Timing Analysis App Note:
> >
> > http://www.altera.com/literature/an/an123.pdf
> >
> > Subroto Datta
> > Altera Corp.

>
> From a conceptual standpoint, these definitions are mostly correct.
> But be aware that different CAD-tool vendors (Synopsys, Cadence,
> etc.) may treat the *operational* meanings of false-path differently..
>
> In Synopsys's case, their application manuals have clear
> examples when to use 'set_disable_timing' versus 'set_false_path.'
> The problem with set_false_path is that it can (unintentionally)
> affect more than just timing-constraints.
>
> >
> >
> >
> > "LIJO" <> wrote in message
> > news:bftlvd$iao78$...
> > > Hi,
> > > Can anyone tell me what is Multi Cycle path and False path?
> > >
> > > thanks
> > > Lijo
> > >
> > >
> > >
> > >

> >
> >
> >


Here are some examples I can think of.

Lets say you have a mode bit that you use in your logic and you know
some paths specifically do not exist when the core is not in that
mode, that becomes a false path.

Lets say, you do a complex logic such as a CRC and find that your
final CRC evaluation takes more than one clock cycle (based on byte
enables) and cannot meet the speed requirements. You can pipeline the
data and calculate final CRC in multiple clock cycles.

Open to learn more


Prasanna
  Reply With Quote
Old 07-31-2003, 03:13 PM   #5
rickman
 
Posts: n/a
Default Re: Multi Cycle path and False paths
Prasanna wrote:
>
> Here are some examples I can think of.
>
> Lets say you have a mode bit that you use in your logic and you know
> some paths specifically do not exist when the core is not in that
> mode, that becomes a false path.
>
> Lets say, you do a complex logic such as a CRC and find that your
> final CRC evaluation takes more than one clock cycle (based on byte
> enables) and cannot meet the speed requirements. You can pipeline the
> data and calculate final CRC in multiple clock cycles.


This is exactly what multicycle is not. If you allowed the CRC
calculation to have two or three clock cycles for the logic delays to
settle out and used an enable on the register at the end, that would be
a multicycle path. This requires a separate multicycle timing spec
since otherwise the tool will try to optimize this to get it to run in
one clock cycle. If you add pipeline registers, then each stage will
need to be done in a single clock cycle and will definitely *not* be
multicycle.

--

Rick "rickman" Collins


Ignore the reply address. To email me use the above address with the XY
removed.

Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design URL http://www.arius.com
4 King Ave 301-682-7772 Voice
Frederick, MD 21701-3110 301-682-7666 FAX


rickman
  Reply With Quote
Old 07-31-2003, 08:25 PM   #6
Prasanna
 
Posts: n/a
Default Re: Multi Cycle path and False paths
rickman <> wrote in message news:<>...
> Prasanna wrote:
> >
> > Here are some examples I can think of.
> >
> > Lets say you have a mode bit that you use in your logic and you know
> > some paths specifically do not exist when the core is not in that
> > mode, that becomes a false path.
> >
> > Lets say, you do a complex logic such as a CRC and find that your
> > final CRC evaluation takes more than one clock cycle (based on byte
> > enables) and cannot meet the speed requirements. You can pipeline the
> > data and calculate final CRC in multiple clock cycles.

>
> This is exactly what multicycle is not. If you allowed the CRC
> calculation to have two or three clock cycles for the logic delays to
> settle out and used an enable on the register at the end, that would be
> a multicycle path. This requires a separate multicycle timing spec
> since otherwise the tool will try to optimize this to get it to run in
> one clock cycle. If you add pipeline registers, then each stage will
> need to be done in a single clock cycle and will definitely *not* be
> multicycle.
>
> --
>
> Rick "rickman" Collins
>
>
> Ignore the reply address. To email me use the above address with the XY
> removed.
>
> Arius - A Signal Processing Solutions Company
> Specializing in DSP and FPGA design URL http://www.arius.com
> 4 King Ave 301-682-7772 Voice
> Frederick, MD 21701-3110 301-682-7666 FAX


I guess you know what I meant on multicycle path on calculating final
CRC. I was not mainly addressing the issue how to use pipeline here. I
used the word pipeline there to address the issue of what do you do
with the incoming data when the logic is taking multiple clock cycles
to complete a job. I think designers do understand how to keep data
stable for more clocks with enables.

Guess I focussed my point this time on multicycle path.


Prasanna
  Reply With Quote
Old 08-01-2003, 04:51 PM   #7
Nicholas C. Weaver
 
Posts: n/a
Default Re: Multi Cycle path and False paths
In article <>,
rickman <> wrote:

>Not always true. Anytime you add a register, you have to add setup time
>and output delay to your path. Plus your path must be broken
>arbitrarily and it is not simple to pick the optimal points. By not
>adding registers and using an enable on the one register, you allow the
>full N clock cycles for the logic to settle. This was exactly how we
>designed an ATM chip. Once the cell had been received we had three
>clocks to analyze it and decide what to do with it. Turns out we needed
>all three as a multicycle. If we had pipelined it we would not have met
>the timing budget.


Of course, two observations:

1) Flip-flop setup and clk->Q combined are pretty low compared to
interconnect costs. EG, from the Spartan II datasheet, the additional
time if the flip-flop is the LUT output is ~2 ns. So even if your
design is running at 100 MHz in one of these parts, only 20% of your
time is going to the flops.

In the Virtex II its in the <1 ns range on the slowest speedgrade.


2) Retiming can place those registers in the right place. You can
either do the transformation by hand or use a tool, but I'm not sure
how well Synplify will handle retiming through preplaced blocks, and
the attempt to maintain initial conditions really hurts the power of
this transformation.

Nonetheless, it is possible, and NOT hard (given a timing model), to
move all the registers manually into the right place, given the
algorithm to solve the problem. If a block is feed forward, and you
just want to repipeline the block, the task is easier.
--
Nicholas C. Weaver


Nicholas C. Weaver
  Reply With Quote
Old 08-02-2003, 07:39 AM   #8
rickman
 
Posts: n/a
Default Re: Multi Cycle path and False paths
"Nicholas C. Weaver" wrote:
>
> In article <>,
> rickman <> wrote:
>
> >Not always true. Anytime you add a register, you have to add setup time
> >and output delay to your path. Plus your path must be broken
> >arbitrarily and it is not simple to pick the optimal points. By not
> >adding registers and using an enable on the one register, you allow the
> >full N clock cycles for the logic to settle. This was exactly how we
> >designed an ATM chip. Once the cell had been received we had three
> >clocks to analyze it and decide what to do with it. Turns out we needed
> >all three as a multicycle. If we had pipelined it we would not have met
> >the timing budget.

>
> Of course, two observations:
>
> 1) Flip-flop setup and clk->Q combined are pretty low compared to
> interconnect costs. EG, from the Spartan II datasheet, the additional
> time if the flip-flop is the LUT output is ~2 ns. So even if your
> design is running at 100 MHz in one of these parts, only 20% of your
> time is going to the flops.
>
> In the Virtex II its in the <1 ns range on the slowest speedgrade.
>
> 2) Retiming can place those registers in the right place. You can
> either do the transformation by hand or use a tool, but I'm not sure
> how well Synplify will handle retiming through preplaced blocks, and
> the attempt to maintain initial conditions really hurts the power of
> this transformation.
>
> Nonetheless, it is possible, and NOT hard (given a timing model), to
> move all the registers manually into the right place, given the
> algorithm to solve the problem. If a block is feed forward, and you
> just want to repipeline the block, the task is easier.


The point is, why bother spending the effort to do something that is
going to *slow* down the design and possibly break it? As in the
example I gave, we found it was not worth the effort in our design to
even consider adding the registers. Besides, they are not anything
remotely like free in a design that has a high utilization.

I guess you just don't like multi-cycle constraints. But I find they
are quite easy to use if used correctly.

--

Rick "rickman" Collins


Ignore the reply address. To email me use the above address with the XY
removed.

Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design URL http://www.arius.com
4 King Ave 301-682-7772 Voice
Frederick, MD 21701-3110 301-682-7666 FAX


rickman
  Reply With Quote
Old 08-02-2003, 03:25 PM   #9
Jeff Cunningham
 
Posts: n/a
Default Re: Multi Cycle path and False paths
rickman wrote:

> The point is, why bother spending the effort to do something that is
> going to *slow* down the design and possibly break it? As in the
> example I gave, we found it was not worth the effort in our design to
> even consider adding the registers. Besides, they are not anything
> remotely like free in a design that has a high utilization.


This mirrors my experience. In a recent FPGA design, I had to multiply
two signed 24 bit numbers. It seemed easier to implement it as a
multicycle path than to break it up by hand into pipelined stages.

Now if there is some tool that will insert the pipelining automatically
that is easy to use and doesn't cost $20K/seat I would like to hear
about it, because it is a small hassle to set up the multicycle timing
constraints.

JCC




Jeff Cunningham
  Reply With Quote
Old 08-02-2003, 06:44 PM   #10
Nicholas C. Weaver
 
Posts: n/a
Default Re: Multi Cycle path and False paths
In article <JIPWa.2842$>,
Jeff Cunningham <> wrote:

>This mirrors my experience. In a recent FPGA design, I had to multiply
>two signed 24 bit numbers. It seemed easier to implement it as a
>multicycle path than to break it up by hand into pipelined stages.
>
>Now if there is some tool that will insert the pipelining automatically
>that is easy to use and doesn't cost $20K/seat I would like to hear
>about it, because it is a small hassle to set up the multicycle timing
>constraints.


Altera's standard flow includes retiming, so if you turn it on and
place the registers at the start, they get moved forward into the
design.

Likewise, Synplify does this as well, and the Xilinx only version I
thought was 7K each.

The only (and moderate/significant) gotcha is that both tools
preserve initial condition/global set-reset semantics, which limits
the benefits which retiming achieves. For a large design (eg, a uP
core) this can be a significant limitation, but it may be OK for a
single smaller module.




Also, if you do have to do this by hand for some design piece (after
all, the result IS a pipelined, higher throughput design), the
retiming algorithm itself is not that bad, and can be simplified: as
you don't have to get an exact solution to the all-pairs shortest-path
problem, but just want to insure the correctness constraints (the
number of registers on each path are unchanged).
--
Nicholas C. Weaver


Nicholas C. Weaver
  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




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