Bottom up or top down synthersis

S

Steve Wang

Guest
Hi,
Can any one expalin to me when to use a bottom up synthersis and when
to use a top down synthersis, abd whar are the differences?
Thanks.



Steve
 
In article <2a97b920.0310140908.77704383@posting.google.com>, swang@actrans-
inc.com says...
Hi,
Can any one expalin to me when to use a bottom up synthersis and when
to use a top down synthersis, abd whar are the differences?
Thanks.
In top down synthesis, you specifiy the top level constraints (input and
output requirements) and you specify the clock frequencies. Your design may
have many submodules but you do not have to specify constraints for the
submodules -- only the top level and clocks. The synthesis tool essentially
figures out the internal stuff -- its easier for it to do that if you ungroup
and flatten everything inside.

In bottom up synthesis you synthesize each or some of the submodules
separately. This means you have to budget the timing for all of these modules
and have separate constraints and synthesis scripts for each module in
addition to the top level constraints that you needed for the top down
synthesis. You end up with netlists for all of those submodules. Then in a
final step you integrate all of the already compiled lower level submodules
into the top level and do a top level compile (sometimes called stiching).
There is not much work left to do at this point so the top level compile
should not take much time especially compared to a top down synthesis.

Essentially you want to use top down synthesis whenever you can because it is
much easier and can potentially get better results. Its easier because you
don't have to budget timing for all of the submodules and produce synthesis
scripts for them. It usually gives better results because the synthesis tool
can "see" the entire paths when optimizing, rather than optimizing to your
budgeted constraints which are nothing more than educated guesses. That said,
you can sometimes do a better job on a block or two by isolating them and
working on them outside of a top down synthesis but that is the exception.

You want to use bottom up synthesis when your design is too big to do top down
or you just want to speed up the synthesis. You can generally do a bottom up
synthesis much faster than top down. And further, when something changes, you
can do an incremental bottom up compile extremely fast because you just have
to resynth that one block and then the top level again vs. resynthing the
entire thing in a top down flow. Many people figure that if the top down
synthesis starts to take longer than what can be done overnight, they switch
to bottom up (or buy a faster machine!).

--
Rich Iachetta
I do not speak for IBM
 
Hi, Rich:
Thanks for your detail explanation.
When you say top down synthersis can give a better result, better
result in term of "area"? or ?

Thanks

Steve

Richard Iachetta <no@virus.com> wrote in message news:<MPG.19f60282d086f9b698982d@ausnews.austin.ibm.com>...
In article <2a97b920.0310140908.77704383@posting.google.com>, swang@actrans-
inc.com says...
Hi,
Can any one expalin to me when to use a bottom up synthersis and when
to use a top down synthersis, abd whar are the differences?
Thanks.

In top down synthesis, you specifiy the top level constraints (input and
output requirements) and you specify the clock frequencies. Your design may
have many submodules but you do not have to specify constraints for the
submodules -- only the top level and clocks. The synthesis tool essentially
figures out the internal stuff -- its easier for it to do that if you ungroup
and flatten everything inside.

In bottom up synthesis you synthesize each or some of the submodules
separately. This means you have to budget the timing for all of these modules
and have separate constraints and synthesis scripts for each module in
addition to the top level constraints that you needed for the top down
synthesis. You end up with netlists for all of those submodules. Then in a
final step you integrate all of the already compiled lower level submodules
into the top level and do a top level compile (sometimes called stiching).
There is not much work left to do at this point so the top level compile
should not take much time especially compared to a top down synthesis.

Essentially you want to use top down synthesis whenever you can because it is
much easier and can potentially get better results. Its easier because you
don't have to budget timing for all of the submodules and produce synthesis
scripts for them. It usually gives better results because the synthesis tool
can "see" the entire paths when optimizing, rather than optimizing to your
budgeted constraints which are nothing more than educated guesses. That said,
you can sometimes do a better job on a block or two by isolating them and
working on them outside of a top down synthesis but that is the exception.

You want to use bottom up synthesis when your design is too big to do top down
or you just want to speed up the synthesis. You can generally do a bottom up
synthesis much faster than top down. And further, when something changes, you
can do an incremental bottom up compile extremely fast because you just have
to resynth that one block and then the top level again vs. resynthing the
entire thing in a top down flow. Many people figure that if the top down
synthesis starts to take longer than what can be done overnight, they switch
to bottom up (or buy a faster machine!).
 
Thanks for your detail explanation.
When you say top down synthersis can give a better result, better
result in term of "area"? or ?
Basically, the 'best result' is what *YOU* (the designer) tell the tool
to do. The traditional synthesis goals have been AREA and TIMING, but
newer fancy tools let you optimize for POWER-CONSUMPTION and physical
parameters ('placement aware' synthesis.)

I think most synthesis tools will automatically optimize for TIMING and
AREA (in that order.) Naturally, you can override this behavior (i.e.
make AREA the primary priority, and everything else second...)
 

Welcome to EDABoard.com

Sponsor

Back
Top