- Change: In GCell & GCellGrid, unificated way of computing all the GCell's
densities.
- Change: In GCell::stepDesaturate(), uses shearUp() instead of moveUp().
- Change: In AutoSegment, new method ::shearUp() to avoid moveUp() saturating
GCells as side-effect.
- Change: In LayerAssign, desaturate until the last two top layers are reacheds
instead of only METAL2 & METAL3.
- Change: In Configuration/GCellGrid/GCell, correct computation of the edges
capacity (based on the numbers of avalaibles layers and not hard-wired to
4).
- Change: In KatabaticEngine, the containers used to store the "nets to
route" is changed from a vector<> to a set<> sorted by the Nets names.
Uses more memory but allows much faster Net deletion.
- New: In _loadNetGlobalRouting(Net*), detect non-routed Nets. A Net is
considered as unrouted if it's 10 first RoutingPads have no slave
Segment. The Net is withdrawn from the set of Nets to route.
- Bug: In GCellConfiguration::_GCell_1G_1L1(), correctly compute the
access flag passed to _GCell_rp_Access().
- Change: In AutoContact::restrictConstraintBox() adds "warnOnError"
parameter to shut down warnings.
- New: KatabaticEngine::_computeNetConstraints() now also returns a set<>
of segments on which constraints are incompatibles. All the NetConstraints
related functions are modificateds accordingly.
- Change: In KatabaticEngine::_loadNetGlobalRouting(), create dogleg
on overconstrained Segments computed by a call to _computeNetConstraints().
Overconstraineds Segments can occurs when a global is directly
connecting two punctual RoutingPads (see "ieee_division").
As a side effect, and to avoid looping each Net is revalidated
*before* making any dogleg. So Nets are revalidated one by one instead
of alltogether.
- Change: In AutoSegment::_toConstraintAxis(), do nothing if constraint
interval is empty.
- Bug: In KatabaticEnginge::_desaturate() (part of LayerAssign), reset
the moved up Segment pointer between iterations. Suppress the warning
about the GCell's DyKeyQueue beeing not revalidated on deletion.
- Change: In LoadGrByNet, manage the 4G+3L1 configuration with the generic
_GCell_xG_xL1_xL3(). Needed for "dct_lvl2".
- Bug: In GCell, bad cast between <size_t> and <unsigned int>, showed only
under 64 bits.
- New: In KatabaticEngine::printMeasures(), adds a support for measurments,
both time and memory size in Mb are stored for each tag.
- New: Adds measurements "Gates", "GCells", "load" & "assign".
- New: In GCell & LayerAssign, adds a supplemental desaturation steps when
a GCell containts too many (more than 7) RoutingPads in M1. This is
especially useful for the eFPGA matrix with it's custom made cells.
- Change: Uses a map instead of a sorted vector in the layer assignment
steps. It was used to order GCells by density, and causing terrific
slowdown on big examples. Namely the eFPGA 16x16 took 1h20, now it's
down to 21 seconds...
Devellop a new object <DyKeyQueue> to handle map with elements
whose key *can* change. Next step is to normalize the key caching
mechanism and to templatize.
- Change: In LayerAssign, account the number of globals AutoSegments
moved up.
./coriolis/src/crlcore,
./coriolis/src/knik,
./coriolis/src/katabatic,
./coriolis/src/kite,
./coriolis/src/equinox,
./coriolis/src/solstice,
./coriolis/src/ispd:
- SVN MOVE: Source tree simplification & uniformisation. Now all tools
are at the same level, directly under the root of the repository.
No more "coriolis/src".