Commit Graph

5 Commits

Author SHA1 Message Date
Jean-Paul Chaput dc46340d6a Redesigning access to analog terminals in devices.
* New: In Anabatic::AutoContact, added forceOnGrid() method to allow
    a AutoContactTerminal to be set (and fixed) outside it's constraint
    Box. Be aware that this may generate gaps in the routing.
      Stored using the UserNativeConstraints mechanism.
* New: In Anabatic::Session() new method getNearestgridpoint() to
    easily compute the nearest grid point from a position.
* Change: In Anabatic::AutoSegment::_revalidate(), use layer mask to
    compute the spin of the segment instead of the layers (more robust
    for analogic).
* New: In ::GCellTopology::doRp_Access() new method to create terminal
    contacts in _doDevice(). Issue more warnings and force the terminal
    to on grid (even if it create gaps). This a temporary hack.
2016-10-05 23:43:07 +02:00
Jean-Paul Chaput 47c9961ef3 First intergration of the Analogic router parts.
* New: In Anabatic::AutoSegment, introduce a the kind (associated to a
    flag) "LongLocal". Analog GCells can be very wide, so at least some
    carefuly choosen long local segments must be took into account as
    attractors in the computation of the optimal axis.
* New: In Anabatic::AutoSegment::computeOptimal(), take LongLocal into
    account as attractors.
* Change: In ::GCellTopology constructors compare the layers of the
    RoutingPads using layer masks instead of Layer pointers. Allows to
    find both "METALx" (symbolic) and "metalX" (real).
* Change: In ::GCellTopology::_doHChannel(), _doChannel(), _doStrut()
    and _doDevice(), tag long locals as "LongLocal". This need to be
    reviewed as it as bind done a bit too quickly.
* Change: In Anabatic::AutoSegment, due too a much bigger span of the
    analogic GCells the _optimalMin & _optimalMax bitfields must use
    16 bits instead of 8 (they where overflowed).
* New: In Katana, reorganisation of the initialization procedure to fit
    both digital and analogic cases. Create an analogInit() method.
* Change: In Katana::RoutingEvent, the _tracksNb and _tracksFree bitfields
    where too short for the Analog GCell size, now uses 16 bits instead of
    6.
* Bug: In Katana::GraphicKatanEngine::drawGCell(), skip drawing of a
    GCell if *both* width and height are under 150 pixels.
* New: In Katana::Session, add a new isOpen() method.
2016-10-04 17:12:58 +02:00
Jean-Paul Chaput 48f3a2bc3c Anabatic transient commit 18. Port of Kite (Katana), Yeah, Baby! Yeah!
* Bug: In Hurricane, in StaticObservable::getObserver(), if the slot
    pointer is NULL, do not try to access the owner. Returns NULL, so
    the caller can be aware of the situation...
* Change: In Hurricane, in BreakpointWidget & ExceptionWidget some
    cosmetic changes (fonts and window sizes).
* Bug: In Anabatic, In AutoHorizontal::getConstraints(), take into account
    the constraints from the source AutoContact, as it holds the constraints
    transmitted by the RoutingPads and sets up by propageConstraintsFromRp().
    It is likely to be a bug affecting the original Katabatic as well.
* Change: In Anabatic, in RawGCellsUnder(), check that the segment is not
    completly oustside the cell abutment box and truncate the coordinates
    to the part that is inside. Use the "shrink" if we reach the east/north
    border.
* Change: In Anabatic, in Configuration, no more decorator because we will
    use a true derived relationship. Katana *derives* from *Anabatic* and do
    not *decorate* it, so the Configuration can do the same. It also implies
    that we directly create a Katana engine, not an Anabatic one.
* Change: In Anabatic, in Session, do not allow the opening of the Session
    in a standalone fashion (with a static method). Instead it must be opened
    using the relevant method of the Anabatic/Katana engine. This ensure we
    are opening the right Session type.
* Change: In Anabatic, in AutoSegment_Aligneds() collection the seed segment
    is not part of the collection by default, but will be included if the
    Flags::WithSelf is set.
* Change: In Configuration, all the flags value are now defined in two steps.
    Declared in the header and initialized in the module. This is to prevent
    the fact that on some cases, in relation with the Python "extern C" part
    modules, we need a true allocated variable. It was causing weird linking
    problems.
      A side effect is that they can no longer be used as entry is switches,
    have to replace them by if/else.
* New: In Anabatic, new GCell::getNeighborAt() utility function.
* Bug: In Anabatic, in GCell::doGrid(), tag all the GCells of the grid with
    the grid type... Back annote all the edges capacity (north & east) with
    the reserved local capacity.
* New: Complete portage of Kite over Anabatic. The new engine is christened
    "Katana" for Kite-Analogic. When it's capabilities and performances
    will be on a part with Kite, it is to completly replace it (and take
    back the "Kite" name). Preliminary tests seems to show that, contrary
    to intuition (because built on a more complex/slower grid), it is even
    slightly faster than Kite 8-).
2016-08-15 16:30:13 +02:00
Jean-Paul Chaput e19893ac32 Fix divide by zero in GCells of null size.
* Bug: In Anabatic::GCell, when width and/or heigh is null, do not try to
    compute densities as it will trigger a divide by zero (and do not make
    much sense anyway).
* Change: In CRL Core, in cmos/alliance.conf, honor the ALLIANCE_TOP variable
    if it is found in the user's environement.
2016-08-06 18:19:22 +02:00
Jean-Paul Chaput 9114766129 Anabatic transient commit 11. Merge Katabatic into Anabatic.
* New: In Anabatic, merge in the Katabatic tool. The merge is not complete
    yet. Only basic capabilities have been moved.
2016-07-18 14:48:37 +02:00