coriolis/katana/src
Jean-Paul Chaput 08d1db5dd6 Rewrite support for minimum area metal wires (stacked VIAs).
We use the segments extensions (dxTarget & dyTarget) to enlarge if
needed the segments. This new implementation is completely at
Anabatic level and should not be seen (i.e. managed) at Katana level.

* Change: In AutoHorizontal & AutoVertical, change the semantic of
    getSourceU() and getTargetU(). formerly they where the end
    position of the segment (with extension included), now they
    gives the position of the anchor contacts, that is the axis
    of the perpandiculars.
* New: AutoSegment::getLength() is still a proxy toward the
     Segment::getLength() which returns the length of segment with
     dxSource & dxTarget. We introduce a getAnchoredlength()
     which returns the length between the centers of the S/T
     anchors. That is axis to axis.
       This is this length which is now used througout Anabatic.
* New: In AutoSegment::_extentionCaps, add a fourth item to hold
    the segment minimal length (to respect minimal area given
    the wire width).
* New: In AutoSegment::getExtensionCap(), if the segment has
    a non-zero S/T extension, returns it instead of the S/T
    contact extension *if it is greated*. The check of the
    extension can be disabled by the Flag::NoSegExt flag.
* Change: In AutoSegment::isMiddleStack(), security check on
    the presence of source and targets. More accurate detection
    of perpandicular in "same layer" with a non-zero length,
    So the area is OK, even with a short segment.
* New: AutoSegment::expandToMinLength(), check if a segment is
    under the minimal length and expand it if need be by playing
    with the dxTarget & dxSource. Tag minimal segments with the
    AutoSegment::SegAtMinArea flag. Also try to keep the segment
    *inside* it's former (supposedly wider) interval.
* New: AutoSegment::unexpandToMinLength(), to be called on a
    formerly minimal sized segment which as grown up. Reset
    it's S/T extensions to zero and unset the flag SegAtMinArea.
* Change: In AutoHorizontal::updateOrient(), when the extension
    are non-zero, also swap them if needed, to keep the exact
    footprint of the segment.
* New: In AutoSegment::revalidate(), check that the segment
    respect the minimal length (area), and expand it if needed.
      Conversely, if the segment has grown up from a minimal
    length state, reset it's extensions to zero.
* Change: In Anabatic::Session::revalidate(), invalidateds
    segments are now sorted in such a way that the "middle stack"
    ones are revalidateds last. Not recall 100% why...
* New: In Katana::TrackCost, add a computation of the free interval
    length we are into (if any). Not used yet, keep it for future
    use.
* Change: In KatanaEngine::finalizeLayout(), remove the call to
    segments minimum area protection. It is now obsoleted by the
    new implementation in Anabatic.
* Change: In Track::check(), call the minimum size/area checker
    Track::checkMinArea().
2021-04-05 00:01:54 +02:00
..
katana Rewrite support for minimum area metal wires (stacked VIAs). 2021-04-05 00:01:54 +02:00
BloatProfile.cpp Clarify semantic of flatten Collections (walkthrough). 2020-03-10 12:10:53 +01:00
Block.cpp Clarify semantic of flatten Collections (walkthrough). 2020-03-10 12:10:53 +01:00
CMakeLists.txt Groudwork for routing density driven placement. Compliance with clang 5.0.1. 2019-12-09 01:57:44 +01:00
Configuration.cpp New: Parameters hTrackReservedMin in Katana. 2020-08-02 18:16:21 +02:00
Constants.cpp Various fixes for Katana::BloatProfile. 2019-12-11 11:17:32 +01:00
DataNegociate.cpp Upgrade of Katana detailed router to support Arlet 6502. 2019-07-28 23:20:00 +02:00
DataSymmetric.cpp Groudwork for routing density driven placement. Compliance with clang 5.0.1. 2019-12-09 01:57:44 +01:00
GlobalRoute.cpp Take account of Rectilinears in KatanaEngine::setupPowerRails() 2021-02-01 16:48:36 +01:00
GraphicKatanaEngine.cpp Various fixes for Katana::BloatProfile. 2019-12-11 11:17:32 +01:00
HorizontalTrack.cpp Replace "unsigned int" by "Flags" in all AutoSegments collections. 2017-05-16 14:53:33 +02:00
KatanaEngine.cpp Rewrite support for minimum area metal wires (stacked VIAs). 2021-04-05 00:01:54 +02:00
Manipulator.cpp Fix bugs in power supply obstacle management. 2021-03-05 00:43:24 +01:00
NegociateWindow.cpp Partial management of offgrid fixed segments in Katana. 2021-02-17 23:57:45 +01:00
PowerRails.cpp Fix bugs in power supply obstacle management. 2021-03-05 00:43:24 +01:00
PreProcess.cpp Correct managment of macro block regarding to P&R. 2021-03-14 16:16:54 +01:00
PreRouteds.cpp Redesign of I/O pads and Corona support to mix real and symbolic. 2019-05-10 11:58:05 +02:00
ProtectRoutingPads.cpp In Katana::protectRoutingPad(), check that the RP is not still on the Plug. 2021-03-23 17:19:38 +01:00
PyGraphicKatanaEngine.cpp Happy New Year 2018 ! Update license years... 2018-01-06 17:55:44 +01:00
PyKatana.cpp New implementation for the Python hash and compare methods. 2019-11-14 23:56:01 +01:00
PyKatanaEngine.cpp Groudwork for routing density driven placement. Compliance with clang 5.0.1. 2019-12-09 01:57:44 +01:00
PyKatanaFlags.cpp Various fixes for Katana::BloatProfile. 2019-12-11 11:17:32 +01:00
RoutingEvent.cpp Improvements in routing quality for ARMv2a 2019-08-23 15:43:13 +02:00
RoutingEventHistory.cpp Happy New Year 2018 ! Update license years... 2018-01-06 17:55:44 +01:00
RoutingEventLoop.cpp Basic support for FreePDK 45 completed. 2018-02-17 20:27:38 +01:00
RoutingEventQueue.cpp Fix segment AutoSegment::reduce() multiple-call (must run once). 2020-11-17 15:02:50 +01:00
RoutingPlane.cpp Partial management of offgrid fixed segments in Katana. 2021-02-17 23:57:45 +01:00
SegmentFsm.cpp Fix segment AutoSegment::reduce() multiple-call (must run once). 2020-11-17 15:02:50 +01:00
Session.cpp Rewrite support for minimum area metal wires (stacked VIAs). 2021-04-05 00:01:54 +02:00
SymmetricRoute.cpp Pin management implemented for NetBuilderHV. 2019-03-10 13:25:43 +01:00
Track.cpp Rewrite support for minimum area metal wires (stacked VIAs). 2021-04-05 00:01:54 +02:00
TrackCost.cpp Rewrite support for minimum area metal wires (stacked VIAs). 2021-04-05 00:01:54 +02:00
TrackElement.cpp Correcting non-deterministic behavior in Anabatic/Katana (again). 2019-08-20 16:30:03 +02:00
TrackElements.cpp Various typos correction (courtesy of G. Gouvine). 2019-07-30 13:13:57 +02:00
TrackFixedSegment.cpp * Bug: In KatanaEngine::TrackFixedSegment CTOR, for finding the GCells 2021-02-01 16:52:03 +01:00
TrackMarker.cpp Basic support for FreePDK 45 completed. 2018-02-17 20:27:38 +01:00
TrackSegment.cpp Partial management of offgrid fixed segments in Katana. 2021-02-17 23:57:45 +01:00
TrackSegmentCost.cpp Happy New Year 2018 ! Update license years... 2018-01-06 17:55:44 +01:00
TrackSegmentNonPref.cpp Correcting non-deterministic behavior in Anabatic/Katana (again). 2019-08-20 16:30:03 +02:00
TrackSegmentRegular.cpp Upgrade of Katana detailed router to support Arlet 6502. 2019-07-28 23:20:00 +02:00
TrackSegmentWide.cpp Partial management of offgrid fixed segments in Katana. 2021-02-17 23:57:45 +01:00
Tracks.cpp Upgrade of Katana detailed router to support Arlet 6502. 2019-07-28 23:20:00 +02:00
VerticalTrack.cpp Replace "unsigned int" by "Flags" in all AutoSegments collections. 2017-05-16 14:53:33 +02:00
katanaRefactor.conf Anabatic transient commit 18. Port of Kite (Katana), Yeah, Baby! Yeah! 2016-08-15 16:30:13 +02:00