Commit Graph

19 Commits

Author SHA1 Message Date
Jean-Paul Chaput 2cfd9a0c51 Increase the display threshold of GCell edges (visible at lower zoom). 2021-10-07 00:41:12 +02:00
Jean-Paul Chaput 9f69230837 Correct CellWidget & CellPrinter to be really WYSIWYG.
* Change: In Hurricane::CellWidget, new "isPrinter" attribute to know if
    the CellWidget is used as a device for printing.
      New function copyExtensionsGos() to duplicate the ExtensionGo drawing
    callbacks. This is a temporary hack until the ExtensionGo are made static
    to be shared by all CellWidgets.
      In _redraw(), the DrawingQuery flags were not correctly reset between
    different stage of the drawing. This was resulting of uneeded walkthough
    of the slicing tree, along with incorrect display of some of the layers
    (i.e. rubbers where diplayeds when ExtensionGos where active).
* Change: In GraphicKatanaEngine, fine tune the display of GCells for printing
    CellWidget.
* Change: In Hurricane::CellPrinter, copy all the settings from the palette
    of the reference (graphic) CellWidget into the printer CellWidget.
    Also copy the ExtensionGos callbacks so we can print them. Use the
    new CellWidget attribute "isPrinter" for the callbacks to be able
    to adapt to Printer settings.
* Change: In Hurricane::Time::getStringTime(), only print two decimals
    for time durations.
2019-02-20 18:24:43 +01:00
Jean-Paul Chaput bc1c7838d1 Reorganisation of technology configuration files.
* Change: In CRL Core, in coriolis2/etc the file an directory structure
    describing the technonolies is modified.
      Before, one technology was split in two: the symbolic part that
    may be shared across multiple real technology and the real technology
    itself. To configure this we needed in ".coriolis2/techno.py" two
    variables:
      * symbolicTechnology.
      * realTechnology.
      After, we duplicate the symbolic technology in each real ones, so
    to configure we only have to refer to one technology with the
    variable:
      * technology.
      Pure sympolic technologies are still availables, associated with
    a dummy real one.
      We provides:
      * 180/scn6m_deep_09  for MOSIS 180nm
      * 45/freepdk_45      for FreePDK 45nm (work in progress).
      * symbolic/cmos      for classical Alliance symbolic.
* Change: In CRL Core python/helpers, SymbolicTechnology.py and
    RealTechnology.py are now grouped under Technology.py.
2017-11-17 11:10:32 +01:00
EricLaoGitHub 06d818695f Dijkstra can handle mixedsignal wires. 2017-06-21 18:02:37 +02:00
Jean-Paul Chaput e12e45e495 Rename SymmetricStage into PairSymmetrics, plus small cleanup. 2017-05-26 13:32:30 +02:00
Jean-Paul Chaput db8e51524f Deterministic destruction of Components.
* Change: In Hurrican::Component::_preDestroy(), the cascaded destruction
    of slaves Components and subsequent ring merge and Rubber creation
    was using set<> sorted on pointer values. This was making the order
    of destruction of the slaves components non-deterministic. Now the
    sets are sorted according to their id (see Entity).
* Change: In Hurricane::SharedProperty, the _ownerSet is now a vector<>
    instead of a set<>. This will slow the search process, but hopefully
    this is needed only during construction/destruction of a Property
    so the slow down shouldn't be too much.
      This has also an impact on Hurricane::Relation.
2017-05-03 18:09:51 +02:00
EricLaoGitHub 8bf1f63557 Pre-commit for updating git depositary. 2017-04-18 11:58:55 +02:00
Jean-Paul Chaput 00ea8f0205 Display selection when drawing on printing devices.
* Bug: In Hurricane::CellWidget, when setting up a state of a CellWidget,
    the selection was not copied. Now copy the SelectorCriterion (clone).
* New: In Hurricane::SelectorCriterion, add a clone() method.
* Change: In CRL Core, in etc/common/display.conf, for the Printer.Coriolis
    style, lower the thresold of display for the substrate layers so they
    are shown even in small zoom mode.
2017-03-15 14:37:32 +01:00
Jean-Paul Chaput 4163fc044a In Anabatic, check if there is at least one METAL1 in singleGCell().
* Bug: In Anabatic::singleGCell(), in some analogic design, there may be
    not a single METAL1 in the GCell. Issue a clean warning instead of
    going ashtray.
* Change: In CRL.etc/technology.cong & CRL.etc/display.conf, add a "metbot_r"
    as a real layer when "metbot" symbolic layer is distinct from a normal
    metal.
2016-12-15 19:25:05 +01:00
Jean-Paul Chaput ce00b37cbf Enable the display of GCells as a density map (and not boundaries).
* Bug: In Anabatic::RawGCellsUnder, *again*, the north and east borders
    of the whole area *are* includeds (shut up disgraceful warning).
* New: In Anabatic::GCell, add a display mode to select between boundary
    display (for analogic) and density display (for numeric).
* Bug: In KatanaEngine::runGlobalRouter(), do not check if an Edge cannot
    be desatured when the vector or overloaded Edges is empty.
    (one less disgraceful warning)
* New: In GraphicKatanaEngine::drawGCell(), support for drawing the GCells
    in density mode. Use the fire scale and the MaxDensity mode.
      Setup the GCell drawing mode in GraphicKatanaEngine::initGCell().
* Change: In GraphicKatanaEngine::drawEdge(), adjust the various thresholds
    for showing the Edge and its label.
* New: In CRL Core, adds "anabatic.gcell.displayMode" to the set of Anabatic
    parameters.
      Adjust the showing threshold for GCells in "display.conf" so when the
    zoom level is low, we still can see the density map.
2016-09-10 18:49:48 +02:00
Jean-Paul Chaput 601e3d3da1 Anabatic transient commit 8. More Dijkstra bugs correcteds.
* Bug: In Anabatic:
    - In _propagate(), on reaching a target, forgot to remove it from
      the queue before pushing it back with the new distance. It also
      simplificate the core algorithm as target as treated normal nodes.
* New: In Anabatic:
    - Update cdebug to use the fastest macro version.
    - More readable drawings of GCells and Edges.
    - Added timer support.
    - The distance is now computed in DbU::Unit (aka long) and not in
      normalized float.
    - The distance function is now a callback (std::function<>) that
      can be changed (a default is provided at initialization).
    - New concept of branch in the agglomerated connex component.
      Each trace back part create a "branch" (tagged with a "branchId").
      When a node is reached with the same distance, but from two
      different branches, choose the the branch that was lastly created.
      This create a slightly different tree which grows outward from
      the newest branches.
    - Makes the horizontal edges *slightly* longer than the vertical ones
      to skew the tree to use vertical edges, as it is usually less
      congested than the horiontal one (due to metal1 cell terminals).
      It is also my understanding that it is useful to reduce the
      number of vias, whithout introducing a via cost.
* New: In Bootstrap:
    - Script sprof.py to perform sprof & demangle libraries execution
      profile.
* ToDo: In Anabatic:
    - Corner optimization. Sometimes when two corners are possible, the
      wrong one is choosen. That is, one of it's edge cannot be used for
      further grow of the tree.
2016-06-17 13:09:34 +02:00
Jean-Paul Chaput 747027f23a Simplification of the Hurricane::Observer mechanism.
* Change: In Hurricane::Observer, simplification of the template so that
    we can use it directly instead of creating a derived class with an
    implementation of Observer::notify(). Now the implemenation is the
    same for all and just calls a notify() method on the owner object.
      Create a StaticObservable for fast access of the observers. This
    is mainly a fixed size table (array<>) with oberservers at known
    indexes. This way we can go from the obervable to the observer
    owner in one indirect access (or so I hope).
* Change: In Hurricane::CellViewer, use the new observers.
* Change: In Hurricane::ControllerWidget, use the new observers.
* Change: In Hurricane::CellWidget, set the winidow initial size to a
   more sensible 500px.
* Change: In CRL::LibraryManager, use the new observers.
* Change: In CRL::LibraryManager, use the new observers.
* Change: In CRL, in display.conf & technology.conf, modification for
    the ST hcmos9gp capacitors.
2016-06-03 17:19:46 +02:00
Jean-Paul Chaput a4655aec8b Anabatic transient commit 2.
* Change: In Hurricane, in CellWidget, enable the drawing of ExtensionGos
    according to the the threshold paramaters (as layers do).
* Change: In CRL Core, provide DrawingStyle for Anabatic::GCell &
    Anabatic::Edge. Use the exact name of the ExtensionGo.
      In kite.conf, add settings for the size of an edge as the optimal
    size may change between analog & digital designs.
* New: In Anabatic:
    - Support for fast position query using a matrix.
    - Computation of the Edge capacity, based on the routing gauge parameters.
    - Graphic display of the edges capacity. Added configuration
      parameters to size the bounding box of an Edge.
* Bug: In Anabatic:
    - GCell::_moveEdges was both too complex (some cases never arise the
      way we divide GCells) and bugged.
2016-05-26 13:56:16 +02:00
Jean-Paul Chaput 82cff69d9f Complete rewrite of the trace system (now a stream).
* Change: In Hurricane, in Flags add operator overload for "int" type
    and not only "unsigned int". Otherwise the compiler complaints about
    ambiguous overload when using enum values which are considered as
    "int".
      Simpler code for the BaseFlags::contains() method.
      Added implicit conversion from BaseFlags toward bool type.
* Change: In Hurricane, in Commons, complete replacement of the previous
    two trace systems (trace & ltrace) by a stream-based one.
    As it is a true object it is much less fragile than the one based
    on defines (but maybe a little slower).
      Define a reservation table for the trace levels for all the
    Coriolis & Chams components.
* Change: All tools, use the new trace system.
2016-05-17 23:00:06 +02:00
Jean-Paul Chaput 4262d396e9 Added METCAP layer, for MIM capacitors. 2016-03-06 12:40:23 +01:00
Jean-Paul Chaput b57c81dda8 Bug in Cell::_preDestroy().
* Bug: In Hurricane, in Cell::_preDestroy(), the classic mistake again:
    do not iterate over a collection while deleting it's elements.
    Now should be safe.
* Change: In CRL Core, set the default display style to "Alliance.Classic [black]"
    (my favorite).
2016-02-23 17:19:42 +01:00
Jean-Paul Chaput ed557d9027 Added support for "same layer" dogleg. Big fix for pad routing.
* Change: In Knik, in Vertex, add a "blocked" flag to signal disabled
    vertexes in the grid (must not be used by the global router).
      Modificate the Graph::getVertex() method so that when a vertex
    is geometrically queried, if is a blocked one, return a non-blocked
    neighbor. This mechanism is introduced to, at last, prevent the
    global router to go *under* the pad in case of a commplete chip.
* New: In Katabatic, in AutoSegment, a new state has been added: "reduced".
    A reduced segment is in the same layer as it's perpandiculars.
    To be reduced, a segments has to be connected on source & target to
    AutoContactTurn, both of the perpandiculars must be of the same layer
    (below or above) and it's length must not exceed one pitch in the
    perpandicular direction.
      To reduce an AutoSegment, call ::reduce() and to revert the state,
    call ::raise(). Two associated predicates are associated:
    ::canReduce() and ::mustRaise().
      Note: No two adjacent segments can be reduced at the same time.
* Bug: In Katabatic, in GCellTopology, add a new method ::doRp_AccessPad()
    to connect to the pads. Create wiring, fixed and non managed by
    Katabatic, to connect the pad connector layer to the lowest routing
    layers (depth 1 & 2). The former implementation was sometimes leading
    to gaps (sheared contact) that *must not* occurs during the building
    stage.
      Remark: This bug did put under the light the fact that the initial
    wiring must be created without gaps. Gaps are closed by making doglegs
    on contacts. But this mechanism could only work when the database if
    fully initialised (the cache is up to date). Otherwise various problems
    arise, in the canonization process for example.
* New: In Katabatic, in AutoContactTerminal::getNativeConstraintBox(),
    when anchored on a RoutingPad, now take account the potential rotation
    of the Path's transformation. Here again, for the chip's pads.
* New: In Kite, support for reduced AutoSegment. TrackSegment associateds
    to reduced AutoSegment are *not* inserted into track to become
    effectively invisibles. When a segment becomes reduced, a TrackEvent
    is generated to remove it. Conversely when it is raised a RoutingEvent
    is created/rescheduled to insert it. All this is mostly managed inside
    the Session::revalidate() method.
* New: In Kite, in KiteEngine::createGlobalGraph(), in case of a chip,
    mark all global routing vertexes (Knik) that are under a pad, as blockeds.
* Bug: In Cumulus, in PadsCorona.Side.getAxis(), inversion between X and
    Y coordinate of the chip size. Did not show until a non-square chip
    was routed (i.e. our MIPS R3000).
* Change: In Stratus1, in st_placement.py add the ClockBuffer class for
    backward compatibility with the MIPS32 bench. Have to review this
    functionnality coming from the deprecated placeAndroute.py.
      In st_instance.py, no longer creates the Plug ring of a Net.
    In my opinion it just clutter the display until the P&R is called.
    Can re-enable later as an option (in Unicorn).
* Change: In Unicorn, in cgt.py, more reliable way of loading then running
    user supplied scripts. Borrowed from alliance-checker-toolkit doChip.py	.
2015-08-16 23:29:28 +02:00
Jean-Paul Chaput b18219d807 Integration of the latest Coloquinte in Etesian & misc modifs.
* New: In Bootstrap, in Builder & coriolisEnv.py support for RHEL7/SL7.
    The sub-directory name is 'el7_64'.
      In qt_setup() add QtSvg to list of Qt5 & Qt4 used libraries.
* New: In Hurricane, In Cell add a placeholder for flags. First use to
    store whether the Nets have been transhierarchically flatteneds.
* New: In Hurricane, In NetRoutingState add an Unconnected flag for
    more accurate diagnosis.
* New: Hurricane, in CellViewer add an entry menu for stress tests.
    The script must be named "stressScript.py" in the cwd.
* Change: In CRL Core, in display.conf add a scaling parameter for the
    display threhold of the layer. This way we can adapt to different
    standard cells height.
* Change: In CRL Core, in ISPD05 bookshelf loader, use the pitch of the
    cell gauge instead of a hard-wired 5.0.
* Change: In Cumulus, in ClockTreePlugin, add support for Etesian placer
    and a new configuration parameter to choose between Mauka/Etesian.
* New: In Etesian, support for the latest Coloquinte.
    Add feed insertion stage.
* Bug: In Kite, In BuildPowerRails, check that _ck is not NULL before
    tring to access it's name...
* Change: In Kite, check if the Cell has it's Nets flattened before
    doing it (or not).
2015-02-01 23:24:13 +01:00
Jean-Paul Chaput 8bc7bd38db Add a common/ to share the trunk of symbolic technologies configurations.
In CRL Core configuration files, "display.conf", "patterns.conf" and
"technology.conf" share most of their code. So that common part is put
into "common/" and sourced from the final configuration file.
Update the documentation according the the new initialization scheme.
2014-05-22 00:13:17 +02:00