( DAC 04 Item 41 ) --------------------------------------------- [ 02/09/05 ]
Subject: Prolific ProGenisis vs. Cadabra
NEW SOLDIERS, OLD WARS -- Years ago, when the dinosaurs still walked the
earth, Cadabra was the ancient rival to Prolific and vice versa. Then, in
big-fish-eating-little-fish fashion, Numerical Technologies acquired Cadabra.
And then Synopsys acquired Numerical. Yet today we still see users doing
side-by-side comparisons Prolific vs. Cadabra.
Yes, we have been a user of Prolific ProGenisis for about 3 years. We
have built one 90 nm chip and are in the final stages of another 90 nm
design. We are not using the latest release of the software because of
our tapeout schedule, so I am not able to give you an honest review
except to say we are still using the tool and plan to continue with it.
We did evaluate Cadabra and decided to stay with Prolific.
- Howard Sachs of Telairity Semiconductor
Prolific ProGenesis Layout Generator
We tested both Cadabra and Sagantec products against Prolific, but it
was several years ago. Sagantec was eliminated as we decided we wanted
to do generation, not just migration. Overall impression of Prolific
vs. Cadabra was sort of a user-friendliness vs. power. Cadabra had a
great interface -- GUI and programming -- but didn't have all the
capabilities that we wanted. It wasn't necessarily deterministic (you
get could very different layouts with very minor tweaks to the input
files), and couldn't do multi-row cells. Cadabra was also quite a bit
slower. Obviously, some of this may have changed, but that was the
result of our eval.
ProGenesis is extremely powerful, in that every little detail of its
operation can be tweaked/changed. This enables just about any style
routing, contacting, gates, taps, etc. The GUI interfaces are nice;
it's easy to get a very basic setup, technology layers/rules/etc.
Each rule can also have a recommended value, which is very nice,
although we haven't used it much. Custom rules are pretty easy to
define as well.
The drawback to being powerful is that the setup for Prolific is fairly
complex. If you want only the most rudimentary settings, ProGenesis
can be really straight forward. But I don't think most users would be
happy with this. If you really understand the tool, the setup doesn't
take too long, but to dig in to the myriad functions and options
available can be a quite daunting. Most of our ProGenesis settings are
done through scripts and functions calls -- which requires several
files all working in conjunction.
The multi-row capability is provided through the use of generators
(which is the basis for how cells are handled in all cases). The
"Prosticks" feature allows the creation of custom generators with any
number of busses or rows. This is entirely GUI based, which lets you
specify all the routing and placement that you want. The limiting
factor is how large a cell the "Progen" engine can handle. We've run
cells of up to ~200 transistors (defined as individual fingers). A
more realistic limit, however, is about 100-120 transistors. The
biggest drawback is the time and effort required to create large
generators. Ideally we would like to just specify the placement and
let to tool route -- which is not possible.
Overall, the main judgment of ProGenesis has to be in runtime and
results. For us, it was a big change to start auto-generating cells,
which might not look as "pretty" as carefully hand-crafted ones. The
results were generally very good though, and as I said, just about
anything can be tweaked. Its runtimes were very good (although they
use the 1 cell at a time per license model -- which is pretty limiting
without lots of licenses.) The runtimes vary a lot depending on cell
size -- we've seen anything from 30 seconds to days. We've averaged
somewhere around 20-30 minutes per cell for an ~250 cell library, with
transistor counts varying from 2 to ~100, the largest cells causing
the bulk of the runtime.
The tool has not been entirely bug-free, either. In basic cells, it's
good, but with custom or very complex function calls (or generators),
it is possible to cause DRC problems, or violate the cell architecture
that has been defined, so you have to be careful. The support we've
received has been good on tracking these down and getting fixes
(functions or patches) for them, although the fixes would be better
incorporated into the base tool.
- [ An Anon Engineer ]
We found that Prolific gives us best control of our build style with
their stick layout tool. Either this tool will start from a schematic
or it can start with a stick diagram. This stick diagram can then be
used to rebuild the cell in a different technology or rebuild with
modified design rules when these occur or venders are changed. This
has worked very well for us in that we had to do only minor adjustments
in transistor widths to accommodate the rule differences where
maximum size devices were used.
Operation observations:
Both Cadabra & Prolific keep track of their every completed cell try
for defined stages of progress. These stored stages are used as branch
points that the tool may decide to take as based on some internal
metrics. X or Y compaction for example.
Cadabra operation displays an inverted tree of the path it is taking.
Each level of the tree represents a level of progress uniformally across
the tree. The user can halt the tool and graphically observe the layout
of any point he or she desires. The neat thing is that the user can
intervene and modify the layout here with a path type of layout editor.
Prolific displays its progress in real time so that the path it's taking
can be observed. The user can then go back to the stick diagram to
force a different start stick diagram route preference or seed. It
would be nice to be able to pause the tool's progress, modify some
paths, and restart ProGenesis; but this is not consistant with its
automatic philosophy which uses stick based seed starts. It is
understood that in this manner, the cell layout can be regenerated using
different design rules at any time from preserved results.
Prolific has a table-driven easy method of design rule entry and display
which is similar to the more modern CAD tool design rule entry. This
also applies to the cell architecture. This database entry/display is
extremely helpful.
As I said before, Cadabra has the advantage of being able to interrupt
the cell's construction in order to modify its path of its progress.
When we visually observe the path the cell's construction is taking,
some changes are obvious, but the Prolific tool does not have the
ability see them. A little frustrating. For instance, we could easily
interchange wire order or go a different way around a group of
obstructions. With Cadabra, it is nice to make these changes in
midcourse layout, without the consideration of design rule violations,
and let the tool will take care of rules when restarted.
With Prolific, these changes are taken care of by modifying a stick
diagram that is used to seed the layout. The layout is then restarted
from the stick diagram -- an easy job for the computer. The layout
in Prolific can refer back to the stick diagram which has these layout
pushes stored in them. We consider preservation of the cell layout
procedure extremely important since the cells are always revisited
at later times.
With Cadabra, the result is that these layout pushes are part of each
regenerated layout procedure (which are not remembered when the cell is
ported to a new vender or process.) There is some control to restart
from the same point in a procedure, but when Cadabra is restarted
sometime later for re-layout, this point is not part of the procedure
rerun.
Once you have a good cell, in addition to Cadabra and Prolific, there
is an alternate approach, which is the design rule migration path. For
this, there are tools such as RubiCAD, Sagantec, Cadence Layout Migrate,
and others. However, they do not supply a way to find that good
original cell and we found the migration produce produces increasingly
poor results.
A nice feature of the Prolific tool is if you do end up with constraints
that cannot be resolved, the tool has a familiar feel "DRC" like feature
which will help determine which stack of constraint has to change to
complete the cell with in the required cell height.
Cadabra has a slight edge on the manufacturability cell cleanup rule
side. It has an effective post-processor cleanup cycle. The basic
cell layout is not encumbered with perfect cell results in the interest
of time.
Prolific has a "Fast" cell generation option that principally works on
the critical stack that defines the cell size in both x and y. Here
polygons are not trimmed off to their minimum, but extend to the next
interference object. This saves processing time in minimizing the cell
layout. Some rules can also be relaxed here to get a more rapid cell
generation. The idea is to try many different combinations of limiting
cell builds and keep track of the progress to branch to the smallest
cell. After a good cell is roughed in, the "Fast" option is turned off
and the final cell is made with all the details completed.
User accessibility and control for those that may want to control these
programs more:
- Prolific uses a lot of higher or macro like ".tcl" UNIX features that
are in ASCII that can be edited by the user.
- Cadabra is less accessible with more "C" code like access.
Most important to us is the ability to create a "hard or defiant" cell
from a SPICE netlist. We have made several complicated cells that we
initially did not have an acceptable stick diagram. As an examples of
this, there is a need for very good scan in & out flip-flops with reset
and set asynchronous inputs and other features. We tried many different
designs many of which were nearly impossible to layout unless the whole
library was increased in size. They also had to perform well in both
speed and power. We had to try many strange configurations to arrive
at some of the best layouts achievable. It is the layout size, and its
performance that counts, not the generic schematic. Prolific assisted
us in delivering these.
Cadabra was poor. It could do recognizable circuit configurations, but
when it was presented with some of our strange configurations, Cadabra
could not arrive at a result.
Prolific, on the other hand, always arrived at some configuration, even
though we may not have liked it. Sometimes the cell was way too tall,
but Prolific always gave us results that we could tweak to restart with
a resulting stick diagram and progress through a path to acceptable
results. Often times Prolific found configurations we did not consider,
which made us very happy.
On the support side, we find that Prolific is extremely responsive.
Typically, a call is answered during the call or within a couple of
hours if the answer calls for some research. The support person on the
first call answers 90% of the questions. The other 10% of the questions
have always been answered the next day. When Prolific is given
feedback, we see many of the features actually get incorporated in the
next release if not in a patch delivered to us. As Red Hat Linux users,
Prolific does a good job at supporting Red Hat's latest release instead
of requiring we keep a machine with a legacy operating system maintained
for their software.
- Bob Schober of Nanopower Technologies, Inc.
Cadabra automatic layout generation tool Kazam is really a good tool
that does 90% of the job. Most important, the support from the Cadabra
AEs is outstanding.
Prolific has a different approach, maybe faster but needs more coding.
Not really impressed by the support.
What happened to Circuit Semantics tools "acquired" by Silvaco
(Dynacore, Dynacell...)? Are they still alive?
- [ An Anon Engineer ]
Index
Next->Item
|
|