coriolis/anabatic/src
Jean-Paul Chaput 29b57e86e5 DRC correct on Arlet6505 / TSMC C180.
Integrate new features and bug fixes so the Arlet 6502 benchs successfully
passes real DRC with reference industrial tools. Short summary:
* Manage minimum area for VIAs in Katana::Tracks.
* Allow different wire width for wires perpandicular to the prefered
  routing direction.
* StackedVIAs used in the clock tree no longer assume an uniform
  routing grid (same offset & pitch all the way up).
* Some hard-coded patches in PowerRails for FlexLib.

* New: In CRL/symbolic/cmos/kite.py & cmos45/kite.py, update the
    RoutingLayerGauges by adding the new PWireWidth parameter.
    Always zero in case of symbolic layout (too fine tuning).
* New: In CRL::RoutingGauge, add accessor to PWireWidth parameter.
    Modify the clone method.
* New: In CRL::RoutingLayerGauge, add new parameter "PWireWidth"
    to give the width of a wire when it not drawn in the prefered
    routing direction. If it is set to zero, the normal width is
    used.
* New: In CRL::PyRoutingGauge, export the updated constructor
    interface. It is *not* backward compatible, one must add the
    PWireWidth parameter in the various kite.py configuration
    files (in etc/).
* Change: In AnabaticEngine::_gutAnabatic(), disable the minimum
    area detection mechanism, replaced by a more complete one in
    Katana::Track. Left commented out for now, but will be removed
    in the future.
* Change: In Anabatic::AutoContact::updateLayer(), now systematically
    calls setLayerAndWidth() to potentially resize the VIAs. This is
    needed in real mode as VIAs are *not* macro-generated but have
    their real final size.
* Change: In Anabatic::AutoContact::setLayerAndWidth(), select the
    width and height of the contact using the gauge wire width *and*
    perpandicular *wire width*.
* Change: In Anabatic::AutoSegment::_initialize(), the "VIA to same cap"
    to PWireWidth/2, this will be the size of the VIA in the
    non-preferred direction at the end cap (non-square in real mode).
* Change: In Anabatic::AutoSegment::getExtensionCap(), makes different
    cases for symbolic and real. Use raw length in real, add half the
    wire width in symbolic.
      Add a flag to get the extension cap *only*, not increased of
    half the minimal spacing.
* Change: In Anabatic::AutoSegment::bloatStackedStrap(), enhanced,
    but finally unused...
* New: In Anabatic::AutoSegment::create(), use the PWireWidth when
    the segment is not in the preferred routing direction (and of
    minimal width).
* New: In Anabatic::Configuration, add new getPWirewidth(),
     DPHorizontalWidth() and DPVerticalWidth() accessors.
* Change: In AnabaticEngine::setupPreRouteds(), skip components in
    in "cut" material. We are only interested in objects containing
    some metal (happens in real mode when VIAs cuts are really there).
* New: In Katana::PowerRailsPlanes::Rail::doLayout(), add an hard-coded
    patch that artificially enlarge the *wide wire* so the spacing for
    wide wire is enforced. For now, two pitches on each side for
    "FlexLib" gauge.
* New: In Katana::Track, add support to find and correct small wire
    chunks so they respect the minimum area rules.
      Two helper functions:
      * ::hasSameLayerTurn(), to find if a a TrackElement as non-zero length
        perpandicular is same layer connected to it.
      * ::toFoundryGrid(), to ensure that all coordinates will be on the
        foundry grid (may move in a more shared location).
      * ::expandToMinArea(), try to expand, *in the routing direction*
        the too small wire so it respect the minimal area. Check for the
	free space in the track.
    Track::minExpandArea() go through all the TrackElements in the track
    to look for too small ones and correct them.
* Change: In Katana::RoutingPlane, add an accessor to get the tracks.
* New: In KatanaEngine::finalizeLayout(), add a post-treatment to find
    for minimal area violations.
* Change: In cumulus/plugins.block.configuration.GaugeConf, add a
    routingBb attribute that will serve as a common reference to all
    the functions calculation track positions. We must not have two
    different reference for the core and the corona. The reference
    is always the corona when we working on a complete chip.
* New: In cumulus/plugins.block.configuration.GaugeConf.getTrack(),
    Simplified and more reliable way of getting tracks positions.
    Use the routingBb.
* New: In cumulus/plugins.block.configuration.GaugeConf.rpAccess(),
    Make use of getTrack() to get every metal strap on the right
    X/Y position.
* New: In cumulus/plugins.block.configuration.GaugeConf.expandMinArea(),
    As those wires are left alone by the router, it is our responsability
    to abide by the minimal area rule here. Hence the code duplication
    from the router (bad).
      Mainly wires made for the clock tree, I mean.
* Bug: In cumulus/plugins.chip.configuration.ChipConf.setupICore(),
    the core instance must be placed on the GCell grid, defined by the
    slice height (X *and* Y).
* Bug: In cumulus/plugins.chip.corona.Builder(), forgot to use bigvia
    for the corners of the inner ring.
* Bug: In cumulus/plugins.chip.pads.corona._createCoreWire(), hard-coded
    patch for LibreSOCIO, the power/ground connectors toward the core
    are too wide and can create DRC errors when put side by side.
    Shrink them by the minimal distance.
2020-11-23 23:07:15 +01:00
..
anabatic DRC correct on Arlet6505 / TSMC C180. 2020-11-23 23:07:15 +01:00
AnabaticEngine.cpp DRC correct on Arlet6505 / TSMC C180. 2020-11-23 23:07:15 +01:00
AutoContact.cpp DRC correct on Arlet6505 / TSMC C180. 2020-11-23 23:07:15 +01:00
AutoContactHTee.cpp Pin management implemented for NetBuilderHV. 2019-03-10 13:25:43 +01:00
AutoContactTerminal.cpp Bug fix: Never slacken a segment from a Pin. 2020-08-02 18:13:47 +02:00
AutoContactTurn.cpp Bug fix, In Katana, do not remove AutoSegment conflicting with blockages. 2020-04-21 15:40:59 +02:00
AutoContactVTee.cpp Pin management implemented for NetBuilderHV. 2019-03-10 13:25:43 +01:00
AutoHorizontal.cpp Added support for loading user defined global routing in Anabatic. 2020-09-30 11:55:39 +02:00
AutoSegment.cpp DRC correct on Arlet6505 / TSMC C180. 2020-11-23 23:07:15 +01:00
AutoSegments.cpp Improved management of AutoContactTerminal for VH gauges (real ones). 2018-01-25 11:58:04 +01:00
AutoVertical.cpp Bug fix: Never slacken a segment from a Pin. 2020-08-02 18:13:47 +02:00
CMakeLists.txt In Anabatic, correctly set the wire width according to the routing gauge. 2019-02-12 12:43:09 +01:00
ChipTools.cpp Happy New Year 2018 ! Update license years... 2018-01-06 17:55:44 +01:00
Configuration.cpp DRC correct on Arlet6505 / TSMC C180. 2020-11-23 23:07:15 +01:00
Constants.cpp DRC correct on Arlet6505 / TSMC C180. 2020-11-23 23:07:15 +01:00
Dijkstra.cpp Added support for loading user defined global routing in Anabatic. 2020-09-30 11:55:39 +02:00
Edge.cpp Added support for loading user defined global routing in Anabatic. 2020-09-30 11:55:39 +02:00
EdgeCapacity.cpp Capacity managment by layer in Edges & GCells (plus fixes). 2018-02-21 00:16:50 +01:00
Edges.cpp Support for density estimation for the global router. 2019-02-26 20:03:53 +01:00
GCell.cpp Solve algorithmic execution time of Anabatic layer assignement. 2020-08-05 01:27:26 +02:00
LayerAssign.cpp Solve algorithmic execution time of Anabatic layer assignement. 2020-08-05 01:27:26 +02:00
Matrix.cpp Improve Edge ripup method. Improve two-metal terminal management. 2018-03-06 01:48:44 +01:00
NetBuilder.cpp * New: In Anabatic::NetBuilder, to tackle once and for all the GCell 2020-06-30 10:00:29 +02:00
NetBuilderHV.cpp Bugs in NetBuilderHV for topologies containing metal3 pins. 2020-09-14 15:12:37 +02:00
NetBuilderM2.cpp Happy New Year 2018 ! Update license years... 2018-01-06 17:55:44 +01:00
NetBuilderVH.cpp Bug fix, restore the FreePDK 45 (real) support. 2020-04-27 10:34:19 +02:00
NetConstraints.cpp Improvements in routing quality for ARMv2a, reached 100% success. 2019-08-23 23:48:09 +02:00
NetOptimals.cpp Pin management implemented for NetBuilderHV. 2019-03-10 13:25:43 +01:00
PreRouteds.cpp DRC correct on Arlet6505 / TSMC C180. 2020-11-23 23:07:15 +01:00
PyAnabatic.cpp Tuning of Anabatic & Katana for AMS 350nm (c35b4). 2018-06-11 16:44:26 +02:00
Session.cpp Bug, In Session::_revalidateTopology(), iterate over an invalid vector! 2020-04-27 11:22:05 +02:00