- New: Added FreeBSD/Ubuntu patches from Otacilio De Araujo
(<otaciliodearaujo@gmail.com>).
* ./katabatic:
- New: Makes use of cbug to display the (scary) debug messages.
- New: In LayerAssignement & GCell, perform layer assignment on whole net
trunk, instead on a segment by segment basis.
- New: In GCell, fragmentation analysis. When a layer change is requested,
it allows to check if the additionnal perpandiculars created to
maintain connexity will not over fragment the layer. This is particu-
larly critical for M3->M5 which create M4 in perpandiculars, and M4
may be subject to very dense configuration.
- New: In AutoSegment & LoadGrByNet, adds a flags telling if the net's
degree equal 2. Has not proven to be useful yet.
- New: In AutoSegment, adds a flag telling if the segment is the perpan-
dicular part of a dogleg. Has not proven useful yet.
- New: In GCell, compute a "fragmentation" indice, the average free track
length, the more fragmented, the smaller the indice.
- New: In AutoSegment::canMoveUp(), when requested, not only check for free
(parallel) track in the up layer but also check that the begin/end
local segments created to maintain layer connexity do not creates too
much fragmentation. This fragment could prove critical in higly dense
GCells.
- Change: In LayerAssign, disable the ::rpDesaturate() steps, after optimization
the router can handle 10 terminals per GCells in M2 without problem.
And ::rpDesaturate() must uses GCell::stepNetDesaturate() and *not*
directly ::stepDesaturate().
- New: In AutoSegment, adds a "_parent" attribute to keep track of the fragmentation
processus. Currently used only for strap segments, points to the original
segment in the appropriate direction (before the split).
- New: In GCell & LayerAssign, new method of layer assignment. Move up
the whole net trunk if only one of it's segment is inside an over-saturated
GCell. AutoSegment are moved up only if there is at least 2 free tracks
remaining on the upper level.
- Change: In Session::_canonize(), uses the lowest segment Id as canonical.
More reliable than geometricals criterions in the end. Assuming that the
segments are being created in deterministic order, which *should* be the
case consediring the way we are walking through the global routing.
- Change: In AutoSegment, completly suppress the CompareCanonical(), replace
it by the much simpler CompareId().
- Change: In GCell::rpDesaturate(), stops desaturation when bottom density
is under 0.5, otherwise we are causing a severe imbalance in M2/M4
densities. All wires pushed up to M4...
- Change: In ChipTools, for the Pad's RoutingPad, reslect the best component
using the one in the lowest layer. To avoid problem when splitting
AutoContact as we expect the base Contact to be on the lower layer.
- Bug: In GCellConfiguration::_GCell_xG_xL1_xL3(), add H/V alignement constraints
in fork case. This allow NE/SW contact to be splitted correctly later.
- Bug: In AutoContact::split(), the connexity on the splitted contacts was
not correctly restored, leading to canonization and parentage looping
errors. This was concealed by the Kite Track::_check() bug (incomplete
individual TrackSegment checking).
- Change: In loadGlobalRouting(), more exlicit message as to why a net is
filtered out the routing set (POWER, GROUND, CLOCK or BLOCKAGE).
- New: ChipTool, module with utilities specific to chip routing. Containing
a function to pre-break wires around a block.
- New: In loadGlobalRouting/GCellConfiguration, adds supports for RoutingPad
connected on chip's pad.
- New: In GCellGrid/GCell, can compute the density in three modes: average,
max of H/V and max of layer. Currently implemented in getMaxHVDensity(),
should be unificated with getDensity(). Used for display purposes.
- Bug: In AutoContact, when splitting a contact, add a specific check for
"one layer span".
- Bug: In AutoSegment::canMoveUp(), do not move up fixed segments.
- 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.
- Change: Adaptation to cmake 2.8. No more "add_subdirectory()" when
the sub directory doesn't hold a CMakeList.txt.
For "add_definition()", set policy 00005 to NEW.
- Change: Integrate IO extenal libraries.
- Change: Small compatibilities between "size_t" and "unsigned int"
under 64 bits.
- Change: Temporarily disable Equinox/Solstice in unicorn.
./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".