Commit Graph

272 Commits

Author SHA1 Message Date
Jean-Paul Chaput f7e981a840 Fix bug & compatibility issues with Qt 5.
* Bug: In Hurricane, in NetlistWidget CTOR, the horizontal header was set
    up assuing that there was (at least) three sections (column) in the
    model, which was wrong. Now it is done in the setCell() method which
    know the exact number of sections.
      It was a bug in both Qt 4 & 5, but was showing only under Qt 5.
2016-08-09 17:42:13 +02:00
Jean-Paul Chaput 30b636ffb8 Typo in alliance.conf for scmos_deep_018 techno. 2016-08-07 12:21:18 +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 3835d6f7ad Diplay function, file & line number in the backtrace (like gdb).
* New: In Bootstrap, add cmake detection for libbfd.
* New: In Hurricane, in Backtrace, add BFD support to read debuginfo from
    the shared libraries (aka DSO) when compiled with "-g". This avoid the
    tedious step of running gdb after generating a core dump. It is also
    mandatory in ExceptioWidget to known from where an exception was thrown
    as Qt::notify() block all C++ exceptions.
      Currently works only under Linux (gcc or clang), may be extended in
    the future.
      The BFD reading is based on the small utility from:
          Don Hatch (hatch@plunk.org)
          http://www.plunk.org/~hatch/goodies/backtracefilt.C
      And small trinket: adjust the size of the window for high DPI screens.
* New: In CRL Core & Unicorn add link toward libbfd, if needed.
2016-08-06 18:15:06 +02:00
Jean-Paul Chaput 1e21651e1e In CRL Core, in alliance.conf use ALLIANCE_TOP environement variable if set. 2016-08-01 12:13:44 +02:00
Roselyne Chotin-Avot 276fabf7ff Compatibility with clang 7.3 and MacOSX 10.11 2016-07-20 15:21:50 +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 36a982ce47 Merge branch 'devel' into devel_anabatic
Catch up the Lemon removal and cdebug correction.
2016-06-11 21:58:25 +02:00
Jean-Paul Chaput f68ac4d0e6 Argh. cdebug was slowing down the program too much.
* Change: In Hurricane Commons.h, even when cdebug print nothing, it slow
    down the program (three times for Kite!). Create a macro cdebug_log
    which calls cdebug *only* if the debug level is active.
2016-06-11 21:56:12 +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 1c7cbbe6f7 Typo in error message raising an exception. 2016-05-06 17:42:05 +02:00
Jean-Paul Chaput babf23f303 Let the init system guess "stratus1.mapppingName" value.
* Change: In Bootstrap, in coriolisEnv.py no longer sets the environment
    variable STRATUS_MAPPING_NAME (guessed by init).
* Change: In CRL Core, in System CTOR sets the default value for
    "stratus1.mappingName" to "not_set" so the init can known it is not
    set.
      In etc/coriolis2/*/stratus1.conf, do not set "stratus1.mappingName".
      In coriolisInit.py, now guess the value of "stratus1.mappingName"
    if it has not already been set by the user. The complete setting
    process is as follow (decreasing priority):
      1. Setup by the user in his ".coriolis2/setting.py".
      2. A "stratus.xml" file is detected in the current technological
         directory (example: etc/coriolis2/65/cmos065/setting.xml).
      3. Fallback value to "etc/coriolis2/stratus2sxlib.xml".
2016-05-06 13:15:10 +02:00
Jean-Paul Chaput d2209579ab Modify the init system to manage NDA restriced configuration files. 2016-05-03 13:32:06 +02:00
Jean-Paul Chaput f2c036ac6d Corrections in C-Python interface required by Analagic (CHAMS).
* Change: In Hurricane, in PyHurricane.h, in all DirectSet*() macros,
    suppress the third parameter giving the function name. It is now
    build from stringification of other parameters.
      The various macros calls are also modificated all througout
    Isobar.
      Added PyAny_AsInt() to convert a Python Int or Long into an int.
    Maybe we should manage only long, because the type difference seems
    ambiguous in Python itself.
* Change: In Hurricane, in PyHurricane.h, in DirectGetBoolAttribute()
    deduce the function name to display in messages from the arguments.
      Idem for DirectIsAFromCStringAttribute(), DirectGetIntAttribute(),
    DirectGetUIntAttribute(), DirectGetDoubleAttribute() and
    DirectGetStringAttribute().
* New: In Hurricane, in PyHurricane.h, new macro DirectGetNameAttribute()
    to build accessors for method returning a Name.
* New: In Hurricane, in PyHurricane.h, new macro DirectSetIntAttribute()
    to build modificators taking int arguments.
* Bug: In Hurricane, in PyHurricane.h, in macro DirectSetBoolAttribute(),
    the check for a boolean PyObject was wrong, leading the macro to
    systematically emit a Python exception.
* Bug: In Hurricane, in PyInstance method table, PyLibrary_create() was
    registered as a NOARGS function, but it *do* have arguments, change
    to VARARGS.
2016-05-01 15:50:27 +02:00
Jean-Paul Chaput 09e5784bc4 Bad active width extension on PTRANS/NTRANS in scmos_deep_018.
* Bug: In CRL Core, in scmos_deep_018/technology.conf, the extension
    width in PTRANS/NTRANS active layer was too big. 4.0l instead of
    3.0l. This was preventing seeing gaps in the active layer by cgt.
    They did show up under Graal though...
2016-04-14 21:35:08 +02:00
Jean-Paul Chaput b46c06042b Added Python support for AllianceLibrary in CRL Core.
* New: In CRL Core, added support for AllianceLibrary.
2016-04-13 18:26:08 +02:00
Jean-Paul Chaput 2a40fa7d92 New "obstacleDw" for Kite.
* New: In CRL Core, in RoutingLayerGauge, adds a new parameter "obstacleDw".
    It represents the distance to add from the *edge* of a blockage segment
    to the next *axis* of a routing track. This was previously computed as
    the pitch minus the mimimum half wire width. This works if the pitch
    is *equal* to the wire width plus the minimal distance (edge to edge).
    But if the wire width is less, than it leads to too great a distance
    around obstacles, making them bigger than they are. And potentially
    blocking everything. To summarize:
         before:  obstacleDw = pitch - wireWidth/2  (deduced)
         after:   obstacleDw = explicitly setup, usually:
                               pitch - max(wireWidth)/2
      Modify the Alliance configuration helper and the various kite.conf
    file accordingly.
* New: In Kite, in BuildPowerRails, make use of "obstacleDw" to compute
    the footprint of a blockage.
2016-04-13 18:21:09 +02:00
Jean-Paul Chaput a4e46444e2 Various problems in the BLIF parser.
* In CRL Core, in BlifParser, when an input terminal of an instance is
    either connected to power or ground, insert a zero_x0 or one_x0
    Cell to avoid direct connection to the supply (the router is not
    able to do it). The names and terminals of the intermediate cells
    are hard-wired for now (to SxLib).
      When merging Nets, always merge internal nets into external ones
    as the other way around is not always legal.
2016-04-04 17:54:09 +02:00
Jean-Paul Chaput d641f236a3 Suppress warnings when flatening a Cell twice.
* In Hurricane, in Cell::flattenedNets(), if the cell has already been
    flattened, do not issue warnings about duplictated flattened nets.
* In Hurricane, in Net, allow Net::setName() to switch the main name
    for an alias without complaining about an already used name.
* In Cumulus, in RSavePlugin.py, when "views" is supplied in keywords
    (kw) arguments, override the default instead of merging with it.
    This is to allow scripts to save exactly what views they want.
2016-04-02 14:47:10 +02:00
Jean-Paul Chaput 6ad644fac2 New relation for slaved ABs. Do *not* delete blockage nets.
* Change: In Hurricane, in DataBase::CellDepths() the recursion stop
    criterion must be Cell::isLeaf() and not Cell::isTerminal() as
    the second one can be used to hide some levels of hierarchy,
    and we want all of them in a blob.
* New: In Hurricane, in Cell, create a new Slaveds relation to keep
    track of all the Cells with a slaved abutment box. This work is
    incomplete as we do not manage the behavior in case of merge or
    Cell destruction or slaving Cells with aready slaveds ones.
      Modify Cell::setAbutmentBox() to work in both autonomous and
    slaved mode.
* New: In Hurricane, in Net, add a new type of Net: BLOCKAGE this
    avoid us to be dependant on the framework pattern recognition.
    (change propagated to the Python support)
* New: In CRL Core, in the various drivers, recognize blockage nets
    as such and set their type accordingly.
* Change: In CRL, in Toolbox::deleteEmptyNets(), preserve blockage
    Nets. This was the cause of crashs in Kite::BuildPowerRails() as
    we where trying to use a deleted blockage net...
* Bug: In Hurricane, in NetAlias, do not write NetAlias as a name
    but as a type. They were not read back and moreover staying in
    the JSON parser stack.
2016-03-30 17:47:00 +02:00
Jean-Paul Chaput a78882fd5b Clocks in BLIF parser. In RSavePlugin, flags to select views to save.
* Bug: In CRL Core, in BlifParser, recognize clocks (Alliance patterns).
* Change: In Cumulus, in RSavePlugin, "kw" manage a new "views" to
    specify which views must be saved. Physical by default, but sometimes
    we need logical as well. If the design contains uniquified cells,
    save the logical view.
      In ClockTree, abort the clock tree building if the design has no
    top level clock.
* Change: In Katabatic, in GCellTopology, adds 2G_5M1 configuration.
* Bug: Kite, in BuildPowerRails, if we are not in a chip the nets
   composing the H-Tree must be protecteds be blockages.
2016-03-26 11:59:32 +01:00
Jean-Paul Chaput 1ef4bc122f Forgot to catch Bug exception. GCell manage 5 terminals of a Net.
* Bug: In Hurricane, in HApplication, ExceptionWidget ans PyHurricane.h,
    forgot to catch the Hurricane::Bug exception which was leading to
    terminate() without explanations.
* Change: In Katabatic, In GCellTopology, now support one GCell with
    five metal1 terminal of the same net. This unlikely configuration
    did appear in the SNX for the first time...
2016-03-17 16:54:53 +01:00
Jean-Paul Chaput b9da9531a7 The VHDL driver must not rename Cell/Instance/Net names.
* Change: In CRL Core, the Alliance VHDL (vst) driver was renaming the
    names of Cells, Instances and Nets into their VHDL conterparts.
    But if we still work on the Cell after saving it, the Net renaming
    will cause touble, especially when there are DeepNets. The name
    of the DeepNet is generated from the Occurrence name with the dot
    separator which is *not* a VHDL valid character for name, thus
    after that the DeepNet name has changed it cannot be reassociated
    with the Occurrence path. This was causing double-flattening issues.
2016-03-14 01:01:21 +01:00
Jean-Paul Chaput b2374c73b8 scmos_deep_018 switched to nsxlib. Minor bugs in plugins. 2016-03-10 17:05:36 +01:00
Jean-Paul Chaput 4262d396e9 Added METCAP layer, for MIM capacitors. 2016-03-06 12:40:23 +01:00
Jean-Paul Chaput 12ac23713e Duplicate ScalarSignal creation (signal & global) in VhdlEntity.
* Bug: In CRL Core, in VhdlEntity, when a scalar signal is also global,
    two ScalarSignal where created, but only one can be linked as a
    property on a Net. So when the one *not* linked as a property was
    deleted, an infinite loop started (under Cygwin at least).
      The _globals list now contains pointers to signals that are in
    _signals. The _globals elements no longer needs to be deleted.
2016-03-03 18:14:20 +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 0efe75af00 Implementation of DataBase native save/restore in JSON (step 3).
* Test: post-receive hook on server should send mail [1].
* New: In VLSISAPD, in Parameter, callback have now a tag, which the
    pointer to the caller. This allow for the callback removal when
    the caller is destroyed.
* New: In VLSISAPD, in WidgetDescription, when associated to a parameter,
    the destructor must remove the associated callback function on
    the Parameter.
* New: In Hurricane, added JSON support for Configuration, separated
    from vlsisapd, as the support is not available at this point.
    JSON support for Configuration, Parameter & LayoutDescription.
* Change: In Hurricane, in JsonStack, the stack of JsonObjects has been
    displaced here from HurricaneHandler. This way, all
    JsonObject::toData() can access the JsonOjects in the context
    of the parser.
* New: In Hurricane, in DBo::toJson() added support for Entity by
    reference (ids).
* New: In Hurricane, added JSON support for all Layer sub-class types.
* New: In Hurricane, in Technology, export the Layers, but must be
   sorted by increasing mask value.
* New: In Hurricane, in Entity, added support for Entity by reference (ids).
* New: In Hurricane, in DataBase, added technology full support.
* New: In Hurricane, In JsonNet, move the ring rebuild management from
    JsonStack to JsonNet.
* New: In Hurricane, added JSON support for NetAlias, NetExternalcomponents
    (not cleanly implemented as a Relation).
* New: In Hurricane, new method Cell::fromJson() to load a cell from
    a JSON file.
* New: In Hurricane, In Graphics, make it an observable, for when JSON
    fully reload the graphic state, it must be able to notify other
    objects (namely the Controller).
* New: In Hurricane, in ControllerWidget, observe the Graphics to regenerate
    the palette as needed. New method ControllerTab::graphicsUpdated().
* New: In Hurricane, in RawDrawingStyle added a destructor to release the
    Qt pen/brush. Added JSON support for HSVr, DrawingStyle, DrawingGroup,
    & DisplayStyle.
* New: In Hurricane, in GraphicsWidget, rewrite correctly the readGraphics()
    to erase the previous widgets and re-create the new ones.
* New: In Hurricane, in PaletteWidget, correct re-creation of the layout/widgets
    in case of Graphics change.
* New: In CRL Core, in System, register the parameters callbacks with
    the address of the object, for later deletion.
* New: In CRL Core, in AllianceFramework, make it observable, to notify
    library changes. For the AllianceFramework creation, now allow to
    completly bypass the Python initialization system, when we expect
    to restore it from a full blob. Added methods to sets the default
    RoutingGauge & CellGauge.
* New: In CRL Core, added JSON suppport for CellGauge, RoutingLayerGauge
    & RoutingGauge.
* New: In CRL Core, in LibraryManager, oberver AllianceFramework, to update
    the list of libraries in case of change (for JSON full reload).
2016-02-21 11:02:50 +01:00
Jean-Paul Chaput 1b7bd9de36 Happy new year 2016! 2016-01-21 00:41:19 +01:00
Jean-Paul Chaput 5baddeb558 Implementation of DataBase native save/restore in JSON (step 2).
* New: In boostrap, in ccb.py, added support for the "support" project
    which contains external dependencies. Currently contains only
    RapidJSON. Those dependencies must be cloned here manually.
* New: In Hurricane, Initializer class for an ordered static initialization
    across different compilation modules.
* Change: In Hurricane, at DataBase level, no longer save the Cells in
    the libraries, but create and ordered list of Cell. Deepest cells
    (leaf cells) first. To avoid dependency problems.
* New: In Hurricane, JSON support for Property.
* New; In CRL, added JSON support for AllianceFramework, Environement &
    Catalog and their associated properties. Adjustment of the
    AllianceLibrary creation policy.
2016-01-21 00:25:39 +01:00
Jean-Paul Chaput f537a10d45 Implementation of DataBase native save/restore in JSON (step 1).
* New: In Hurricane, added first support for DataBase native import/export
    using JSON.
      We choose RapidJSON, in SAX mode, to manage the JSON format low level
    Read/Write. Thus, it's Git repository http://github.com/miloyip/rapidjson
    must be added under ~/coriolis-2.x/src and manually build and installed
    in the Coriolis installation tree (to be integrated in ccb later).
      Two mode are being supported:
        1. Cell mode: one Cell only is saved. In that mode, Entities
           referred by Occurrences are "outside" the file. They are coded
           through their "signature" (mostly, all the values of their
           attributes). The ids saved in the file cannot be restored
           identically as we cannot predict when and in which context the
           Cell will be reloaded.
        2. Design Blob mode: the whole design hierarchy, down and including
           the standard cells is saved. This way the design is completly
           self contained and Entities ared referred through their ids.
           A design blob can only be loaded immediatly after starting cgt
           as the DataBase *must* be empty. This way we restore the whole
           design hierarchy with *exactly* the same ids.
      Now, Hurricane object should provide a "toJson()" method for driving
    JSON, and be associated with a JsonObject derived class for parsing.
* New: In Hurricane, ability to force the next id that will be used for a
    DBo (used by Design Blob Mode).
* New: In Hurricane, in DataBase, added getCell() and getLibrary() functions
    to allow the hierarchical access of a Cell/Library in native mode
    (i.e. whithout the requirement of AllianceFramework).
* New: In Hurricane, In CellViewer, added menu entry for Save/Load of
    JSON Design Blobs. Added at this level because we consider it as the
    "native" format of Hurricane.
* New: In Unicorn, added support of import/export of JSON Cell.
* Bug: In Hurricane, in Instance, when cloning an Instance or uniquifying
    it's master Cell, we forgot about the Occurrences (through shared pathes).
    When an instance is cloned the Shared pathes still points toward the
    original Instance. And when it's the master Cell that is uniquifyed
    it's the Entities pointed to that remains in the original Cell.
    This is a software design problem. It is difficult to define what
    policy to adopt when uniquifying: basically that means that one
    Occurence is either moved onto the clone or duplicated. Furthermore,
    it is not trivial to known what Occurrence is pointing on the
    uniquifyed/cloned item. Have to think about it a little more.
* Bug: In Etesian, in EtesianEngine, build the flattened nets and their
    RoutingPads *after* uniquifying (through slaving bounding boxes).
    This way we avoid the Occurrences problem described above.
* Bug: In Etesian, in EtesianEngine, invalidate the RoutingPad after
    processing the placement so they are put into the right quadtree.
    This problem is due to the fact that the RoutingPads do not belong
    to the Instance that they refer. And when this instance is moved
    around, she doesn't inform the RoutingPad that is has moved.
    More software architecture design to review...
2016-01-07 13:15:33 +01:00
Jean-Paul Chaput 1adefabb2f Correctly remove VHDL Entity and Bit properties.
* Bug: In CRL Core, in Vst driver, remove VhdlEntity (from Cell) and
    BitProperty/Bit (from Net) with the property remove and not the
    destroy() method. The BitProperty removal was completly forgotten
    leading to the use of removed Signals when doing multiple saves
    (hence core-dump).
* Change: In CRL Core, in Vst driver, never save as Signals the DeepNets
    as they are created by a virtual flatten and do not connect any
    instances at top level. Note that they will exists in the physical
    file if routing layout has been created.
2015-09-06 17:24:04 +02: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 ff69a2ef74 Added Hierarchy browser to the Controller.
* New: In Hurricane, added hierarchy browser in the controller.
    The hierarchy is presented as a tree. New MVC, HierarchyInformations,
    HierarchyModel and HierarchyBrowser.
      When using a data model which is not directly connect inside the
    model, we must use the internalPointer field of the QModelIndex.
    But this field is also used by the QSortFilterproxymodel, this
    prevent using it with a Tree model.
      The filter is directly implemented and is specific to each
    Instance entry.
* Change: In CellWidget & CellWidget::State, now store the Cell and
    a Path, this way we can keep track of the hierarchy when browsing.
    The Path is in the State and so propagated back to the Controller.
* Change: In HierarchyCommand, use the Path with setCell().
2015-07-23 00:44:56 +02:00
Jean-Paul Chaput ae6eeb8f56 Merged QuadTrees in overlayed Cells (placed together).
* New: In Hurricane, in Cell & Instance, add the ability to merge the
    QuadTree when *second level* instances of a Cell are placed in
    the same space as the top Cell. This is the case of a deeply
    hierarchical design made of only standard cells that are to
    be placed in a "flat" manner.
      The design is uniquified then the intermediate instances models,
    which should be unique at that point have their QuadTree merged
    through a call to Instance::slaveAbutmentBox(). That method will
    make the model of the instance use the QuadTree of the Cell to
    which the instance belong. The instance model no longer posseses
    a dedicated QuadTree. As a corollary the abutment box of both
    Cell are kept identical and the Instance has it's transformation
    set to (0,0,ID).
      Remark: when we talk about "QuadTree", we mean in fact the
    QuadTree for the instances *and* the SliceMap (Layer+QuadTree).
      Consequence in Query: when going through the resulting
    "flattened" QuadTree we will find objects with an incomplete
    Path du to the fact that we didn't have to explore their
    Instance/Cell level to reach them. The shunted part of the
    Path is stored in the Go master Cell in the _shuntedPath
    attribute. This also affect the displayed depth of hierarchy,
    but not too badly.
* New: In Hurricane, in Cell, new methods:
    - Cell::updatePlacedFlag() : set the placement flags.
    - Cell::isUnique() : one or less instance.
    - Cell::isUniquified() : is the result of an uniquification.
    - Cell::isUniquifyMaster() : is the reference cell of the
    uniquification.
* Change: In Hurricane, in Cell::Uniquify(), uniquify a Cell only
    if it is unplaced. We do not need to duplicate placed Cells
    (see datapathes).
2015-06-26 18:35:11 +02:00
Jean-Paul Chaput fcb4acadad Improvements & bugs corrections in the LEF/DEF importer/exporter.
* Bug: In Hurricane, In NetAlias::removeAlias(), perform the isMaster()
    check on the *current* hook, not the *this* one... Was preventing the
    removal of most aliases.
* New: In CRL Core, in DefExport, perform a virtual flatten before exporting
    a design. Replace the hard-wired "sxlib" gauge by the current default
    one. More secure management of flattened instance and net names (removal
    of all potentially special characters). In net names, correct management
    of vectorized names (do not systematically add "_net" at the end).
      In DefImport, manage the BUSBITS property and revectorize accordingly
    the net names. When loading nets, systematically remove the alias of
    the temporary net "__prebuild__" (a bug in NetAlias was preventing it).
      In LefExport, the right value of MANUFACTURINGGRID in pseudo symbolic
    mode is 0.5 (expressed in lamba). That way all length are even multiples
    of it. Note that there is still the order bug of the 5.7 drivers that
    puts that entry *before* UNITS in the LEF file (bad bad Cadence).
2015-06-18 15:12:01 +02:00
Jean-Paul Chaput d769fafe92 Forgotten files for ST CMOS065 techno (real). 2015-06-12 17:58:30 +02:00
Jean-Paul Chaput e2fcfcb699 Rationalization of Cell's flags. Compilation warnings hunt.
* New: In Hurricane, dedicated class BaseFlags to wrap a set of flags.
    Similar to the Mask class, only with a slightly different semantic.
    Encapsulation of <unsigned int>.
      Also provide support for the Inspector, to have a human-readable
    display of the flags.
* Change: In Hurricane, in Cell, regroup all the flags under a Flags
    sub-class of Cell. No more mixing between booleans and bit flags.
    (first use of BaseClass).
* In Hurricane, CRL Core & Knik, many small corrections to suppress
    annoying warning messages at compile time.
      Most noticeably, Bison errors in VstParserGrammar generated by
    rules and token with mismatched return value type. This was not
    problematic because the badly defined return value where not used.
    But still...
2015-06-10 15:49:58 +02:00
Jean-Paul Chaput 701487247d Bug in VHDL portmap. Too strict checking in Kite & Etesian ::setViewer().
* Bug: In CRL Core, in VectorPortMap::VhdlPortMap(), if the connection
    was made to *non-contiguous* bits of an otherwise *contiguous* vector,
    it was using a span instead of the separate bits. Now check that
    bits are contiguous (delta: +1/-1) and the delta do not change of
    sign.
* Change: In Etesian & Kite, the Python interface function ::setViewer()
    was checking that the argument was indeed a CellViewer, but in text
    mode it is None. Now, silently ignore the argument if it cannot be
    converted into CellViewer.
2015-06-08 12:01:32 +02:00
Jean-Paul Chaput 51043df640 Merge "collections" branch from <github> (G. Gouvine).
* New: In Hurricane, in Collection add simple STL iterator support.
    So now the C++11 "for" instruction can be used instead of the
    in-house "forEach".
      Example:
         forEach ( Component*, icomponent, net->getComponents() ) {
           cout << (*icomponent) << endl;
         }
      Become:
         for ( Component icomponent : net->getComponents() ) {
           cout << icomponent << endl;
         }
2015-06-08 11:51:09 +02:00
Jean-Paul Chaput 2906d90b04 Re-activate the LEF/DEF symbolic exporter (for benchmarking).
* Change: In bootstrap, in FindLEFDEF.cmake, adds my personal path where
    the LEF/DEF libraries are to be found (~jpc/oa/lefdef/5.7-s038/).
* Change: In CRL Core, in LEF/DEF exporters, use the default routing
    gauge and cell gauge, instead of systematically requiring "sxlib".
      IMPORTANT: In order to build a *shared* library including the
    *static* LEF/DEF libraries, those libraries, even if static, must
    be build with the "-fPIC" flag (otherwise the compiler complains).
    I have done so on my 64 bit build of LEF/DEF, but it's a completly
    *local* patch. You may have to do it manually on your installations.
2015-06-07 14:12:00 +02:00
Jean-Paul Chaput 9ac199f11b Change in policy for duplicate libraries.
* Change: In CRL Core, replace duplicated libraries, even when performing
    a Append/Prepend operation. Also correct a bug in library name
    uniquification, event if it's no used. The policy in cas of duplicate
    libraries is not completly clear for me, still.
2015-06-07 11:05:01 +02:00
Jean-Paul Chaput 445104eaf7 Start to support high DPI screen (> 192dpi).
* New: In Hurricane, in Graphics, add a new static method ::isHighDpi()
    which returns true if the DPI is greater than 192. A "normal" screen
    is typically 96dpi, we sets the trigger at twice that value.
      Then in all the widgets with size settings, we uses that method to
    select the more appropriate size.
2015-06-06 18:41:28 +02:00
Gabriel Gouvine fd994e51fe Merged bug fixes and improvements
* Steiner tree topology
* Install path detection
* Additional Alliance layer
* Blif parser presented first
2015-06-02 10:36:21 +02:00
Jean-Paul Chaput 20ac9080d6 Do not generate IEEE VHDL when driving vst files (silly me). 2015-05-21 14:55:38 +02:00
Jean-Paul Chaput f8a72288aa Better handling of exceptions between C++ & Python. Misc. checks.
* Bug: In Hurricane, in PyHurricane.h the macro HCATCH was not catching
    standard STL exceptions. This was the source of the cryptic message:
        "Fatal Python error: Py_EndInterpreter: thread still has a frame"
    The Python interpreter was interrupted uncleanly bypassing it's own
    exceptions mechanism.
      In PyViewer, the Viewer *do not* inherit from a base class (in the
    Python export).
* New: In Hurricane, in DbU, compute maximum values (in double) for
    grid, lambda & physical (in meter) so now the DbU::toGrid(),
    DbU::toLambda() & DbU::toPhysical() methods can check for out of
    bound values, and throw an exception.
* Change: In Hurricane, ExceptionWidget::catchAllWrapper() now returns
    a boolean, set to <true> if an exception has been catched. Allow
    callers to interrupt themselves if a problem has occured.
* Bug: In Kite & Etesian, in the Python wrapper, send a Python exception
    if catchAllwrapper() did return true, instead of continuing...
* Change: In Kite & Etesian, adds a setViewer() method (exported in Python)
    to use the graphical ExceptionWidget when in graphic mode.
* Bug: In Cumulus, in PadsCorona.py the check for the core vs. chip size
    was not returning False when invalid.
* New: In CRL Core, in Vst driver, add a support IEEE VHDL. Inactive for
    now as I don't see clearly the policy for selecting it or not.
      Remove the code of the old Vst driver.
      In Blif parser, check for non-existent models (incomplete or
    corrupted Blif file). Found by G. Gouvine.
* New: Added extras file for IDE-like support under Emacs.
2015-05-20 14:03:59 +02:00
Jean-Paul Chaput 909f86b4fc Added support for IEEE VHDL in the Vst parser (std_logic).
* New: In CRL Core, in VstParser, support IEEE VHDL, with tokens
    <library> and <use>. If "use IEEE.std_logic_1164.ALL" is present
    the file will be considered to be IEEE compliant.
      To be precise, the parser now support any mix between Alliance
    and IEEE VHDL. So you can have both <std_logic> and <wor_bit>
    in the same file, but it is unclean to do that.
      The two extensions ".vhd" & ".vhdl" are supported.
      The drivers still always creates Alliance VHDL.
2015-05-10 17:16:00 +02:00
Jean-Paul Chaput a2d4f01ca3 New Library Manager Widget. Access with Tools menu or CTRL+M.
* New: In CRL Core, created a LibraryManager widget. It provides a
    composite information based on what is present, for each
    Alliance library:
    1. - A Cell in memory, without Catalog::State.
    2. - A Catalog::State, with or whithout the Cell in memory.
    3. - The files of the Cell in the librariy's directory.
    4. - A file with a format referenced for one of the importers.
      File type recognition is based *only* on the file extension,
    so it may easily confused. Be careful about what you put in
    the library's directory.
      One of the big limitation is that it will not display Hurricane
    libraries that do not have the AllianceLibrary extension.
      This widget is put in a separate library <libmanager>, included
    in the default CRLCORE_LIBRARIES.
* Change: In CRL Core, in State (through the loader), now sets the
    InMemory flag (event if nobody uses it yet...). Display it in
    the state _getString().
      In AllianceFramework, new getAllianceLibraries() method.
      In CatalogExtension, make the static method "get()" publicly
    accessible, for sometimes we want the whole State.
* Bug: In vlsisapd, in Path, the pathcache was not rebuild when it
    should, leading to incorrect results.
* New: In vlsisapd, in Path, added a listdir() method to access the
    contents of a directory and a stat() method to poll the status
    of a file/directory.
      Rename the ".string()" method in ".toString()" to avoid
    tricky name resolution with std::string, refactor in all the
    other tools.
* Change: In Hurricane, in Controller, no longer oversize the fonts
    of the table's headers.
* New: In Unicorn, in UnicornGui, integrate LibraryManager.
2015-05-09 17:03:17 +02:00