Commit Graph

12 Commits

Author SHA1 Message Date
Jean-Paul Chaput cbccf9e2a4 * ./katabatic:
- 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.
2011-01-25 17:16:27 +00:00
Jean-Paul Chaput 0df293655a * ./katabatic:
- 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().
2011-01-09 18:08:31 +00:00
Jean-Paul Chaput 8faade8bc6 * ./katabatic:
- 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).
2010-12-30 18:41:19 +00:00
Jean-Paul Chaput 629452dcc6 * ./katabatic:
- 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.
2010-12-12 21:43:25 +00:00
Jean-Paul Chaput 1d525fec35 * ./katabatic:
- 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).
2010-08-22 12:37:48 +00:00
Jean-Paul Chaput 67a5ecae40 * ./katabatic:
- New: Adds support to restrict the number of routing layers.
2010-05-27 16:12:28 +00:00
Jean-Paul Chaput 966de8279c * ./katabatic:
- 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.
2010-05-11 11:04:23 +00:00
Jean-Paul Chaput 234175fa23 * ./katabatic:
- 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".
2010-05-03 09:16:28 +00:00
Jean-Paul Chaput d98b31a856 * ./katabatic:
- 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".
2010-04-17 10:14:22 +00:00
Jean-Paul Chaput 3069af8a63 * ./katabatic:
- 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.
2010-04-12 11:22:11 +00:00
Jean-Paul Chaput 15a61c5f96 * ./katabatic :
- 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.
2010-03-23 09:25:15 +00:00
Jean-Paul Chaput 360ff0424e * ./hurricane/src/hviewer,
./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".
2010-03-09 15:24:29 +00:00