Commit Graph

23 Commits

Author SHA1 Message Date
Jean-Paul Chaput 4a65a8d4e7 Added GDSII driver. Bug in Blif parser.
* New: In CRL, implement a true GDSII driver. The driver is directly under
    CRL and do not use an intermediate structure in vlsisapd. The ASCII
    GDSII is removed.
      Huge polygons are not supported yet. Have to be split up in
    sub-polygons of less than 4000 vertexes.
      Symbolic layout can be exported to give a rough idea of the layout
    but RDS expension is not applied. Symbolic composite layers are
    expansed into their basic layers so the design *looks* normal.
* Deprecated: In CRL, remove all traces of the old XML configuration
    parsers. No one needs them now, including Chams.
* Bug: In CRL::BlifParser, before blindly loading the model of a subckt
    from disk with AllianceFramework, checks if it is in the Catalog
    first. Load with AllianceFramework only cells that are in the
    Catalog.
      This prevent a file of the same name than a model to be loaded
    shadowing the later defintion of the model in the Blif file.
      All this is due to the fact that Blif could be non-ordered for
    the models...
* Change: In Hurricane::BasicLayer, the "extract number" is replaced
    by a GdsLayer and GdsDatatype to generate accurate GDS files.
    Even if datatype is 0 most of the time.
      Update all the "technology.conf" files in CRL to provide those
    two numbers.
2018-05-15 13:12:00 +02:00
Jean-Paul Chaput 95aba574a5 Happy New Year 2018 ! Update license years... 2018-01-06 17:55:44 +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 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 db60fe0aa6 New coriolis launcher. Configuration files cleanup.
* Change: In CRL Core, simplify the loading sequence. The technology,
    both symbolic and real is now loaded directly from coriolisInit.py
    and not through the Alliance loader. This was a leftover from the
    time configuration was in XML. Remove others traces of XML loading.
      Remove SYMB_TECHNO_NAME, REAL_TECHNO_NAME & DISPLAY from the Alliance
    environement, as they was no longer used.
      Note that technology *still* need to be loader *after* Alliance
    framework has been initialized.
      Gauge information is moved from <alliance.conf> to <kite.conf>.
* Bug: In Coloquinte, in optimization_subproblems.cxx static variables
    must not be inlined. Generate a problem when linking in debug mode
    (seems the symbol gets optimised out).
* Bug: In Katabatic, in Grid::getGCell(), when the coordinate is *outside*
    the area, do not try to find a GCell, directly return NULL.
* New: In Unicorn, create a generic command launcher named "coriolis" which
    automatically take cares of all environement setup, then run a command
    by default, it's <cgt>, but it can be anything. For example: <zsh>.
2015-04-13 18:54:09 +02:00
Jean-Paul Chaput 5dc60415e7 Happy new year 2015! 2015-03-17 16:56:55 +01:00
Jean-Paul Chaput 4439d3a142 Added support for multiple symbolic+real technology in configuration.
In CRL Core, the layout of the files under "/coriolis2/etc" changes.
Instead of having them directly under "etc", they are now replicated,
in subdirectories. Each subdirectory having the name of the associated
symbolic or real technology (they are kept separated). We have, for
now:
* etc/cmos/    : symbolic, the Alliance original one.
* etc/vsc200/  : symbolic, for G. Petley vsclib.
* etc/hcmos9/  : real, generic fake (130nm).
To tell which pair (symbolic,real) technologies must be used we create
a *second* (sigh) configuration file "coriolis2_techno.conf", and it's
hidden counterpart in the user's account, to set it up. It needs to be
separate because it is read as early as possible and select which set
of configuration files would be read.

Also add support up to METAL8 and POLY2 in CRL core and it's Alliance
parser/drivers.
2014-05-21 14:50:22 +02:00
Jean-Paul Chaput 766132a2da * ./crlcore/src/crlcore:
- New: In Environment, adds a method getLIBRARYPath() to directly access the
        path of an element in the SearchPath. Also added to the Python interface.
          This is a quick alternative to fully export SearchPath and it's element
        into the Python interface.
2013-09-16 08:28:24 +00:00
Jean-Paul Chaput c87d59256d * All Tools:
- A complete sweep of cleanup to suppress allmost all compiler warnings.

  * ./crlcore:
    - New: Extented Python support for all objects needed to configure Coriolis.
    - New: Configuration files and load helpers completly written in Python.
        An XML emulation mode is still avalaible.
    - New: UsersGuide, as a replacement for README, written in ReST.
    - New: Start of Doxygen documentation (mostly for documenting the initialisation
        objects & methods).
2012-11-16 12:49:47 +00:00
Jean-Paul Chaput 9111c4cce2 Display the names of parsed file only if they are found.
Unstall UseLATEX cmake macro.
2011-01-09 18:57:52 +00:00
Jean-Paul Chaput c86e720066 * ./crlcore:
- Change: Rename "obstacle" to "blockage" in all the places it still appears
        to be completly homogeneous.
    - New: In Catalog, adds a "Pad" attribute to mark cells that are pads.
    - Change: In ApParser, discard "padreal" instances as a cause for a Cell to
        be non-terminal. This is for LeafPlugOccurrences to consider the terminals
        of those cells.
    - Change: In ApParser, makes use of the new Pad flag in Catalog.
2010-12-04 15:23:51 +00:00
Jean-Paul Chaput 7d49e75797 * ./crlcore:
- New: Inspector support enabled for AllianceFramework and most of it's
        sub-objects. Attached as a property on the DataBase to be browsable
        through the Inspector.
    - Change: Now also read a <.coriolis2.configuration.xml> in the user's
        root account (before the directory specific one and after the system-
        wide).
    - Change: In verbose mode, also display what environment files are being
        read.
    - Change: No more reference to CRL_CATA_LIB in error messages.
    - Change: Suppress stratus2sxlib obsolete library.
2010-11-17 15:40:39 +00:00
Jean-Paul Chaput 2c50fae3d3 * ./crlcore/src/ccore:
- New: In Utilities, uses the new Backtrace to print the stack before
        core-dumping.
    - New: In Environment, pattern recognition of Pad model names.
    - New: In AllianceFramework, pattern recognition of Pad model names.
    - Bug: In Measures, add inspector support and uses pointer to prevent using
        copy construction. Makes the inspector to core-dump.
    - New: In RoutingLayerGauge, inspector support for Constant::Direction.
    - Change: In ApDriver, correct managment of BIGVIA sizes. BIGVIA in one
        metal keep their sizes, but BIGVIA whith cut must be expandeds to
        contains their enclosure in metals. In Hurricane VIA size are relatives
        to the cut but in Alliance, to the biggest metal.
          Generate correct direction (always UP or RIGHT) for segments.
    - Change: In ApParser, shrink BIGVIA to the size of their cut from the
        Alliance format. Avoid VIA "bloating".
          More thorough verification of Segment data coherency, mainly with
        direction.  
          Suppress warning of non-existent logical instance in the special
        case of "padreal".
    - Change: In VstParserGrammar, perform an explicit plug connection on globals
        Nets if the names of globals Nets differs.
    - New: In display.xml, add style for printers (B&W).
    - Bug: In technology.symbolic.xml, BLOCKAGE6 was associated to metal6 instead
        of blockage6.
          Correct extensions value for VIA metal layers above cut1.
    - Bug: In Utilities, in System singleton constructor check of duplicated
        type_info/RTTI initialization. Occurs when python modules are useds.
        CRL must always be included first.
2010-11-16 13:57:57 +00:00
Jean-Paul Chaput 4426fc4f0c * ./crlcore:
- New: In AllianceFramework constructor, now look for an XML configuration
        file in the current directory (<cwd>/.environment.alliance.xml).
    - New: DefParser, DefDriver & LefDriver are replaced by DefImport, DefExport
        and LefExport (resp.). LEF/DEF parser/driver are no longer integrated
        in among Alliance ones due to too much difference in data organisation.
        Instead they are build as Import/Export utilities.
    - New: Iccad04Lefdef import the ICCAD'04 benchmarks into the SxLib format
        suitable for Knik/Kite. They are derived from the ISPD'98 (ibm01--ibm18)
        benchmarks. Many corrections are applieds to ensure a more realistic
        representation.
          Generate a new library from the LEF file "on the fly".
    - New: Ispd04Bookshelf import the ISPD'04 benchmarks in SxLib from bookshelf.
        Thoses benchmarks can be placeds whith fastplace. Unfortunatly fastplace
        do not manage blocks and reduce them to standard cell which is not
        usable for detailed placement. Too bad, the parser exists still.
          Make uses of the new vlsisapd/bookshelf parser. A whole library is
        generated "on the fly" on the basis of "one node, one Cell" (so we have
        a bijection between Cell and Instance). The result of this parsing is
        different from the one of the stand-alone ispd04 binary in the sense it
        fits the circuit to the SxLib gauge thus changing the routing capacity:
        from 16 to 20.
    - Change: In ApDriver, the lookup modify the lookup table for matching
        Alliance layers against Hurricane ones, "OBSTACLEx" became "BLOCKAGEx".
    - Change: In default <enviromnent.alliance.xml> adds the name of the
        blockage net: "^obstacleNet$". Some work over the coherency of the
        blockage managment remains to be done.
    - Change: In AllianceFramework, partial rewrite of the get/creation of
        AllianceLibrary to fit the requirements of the "on the fly" generation
        from the benchmarks loaders. And correct some bugs by the way.
    - Change: In Environment, suppress any reference to LEF technology as LEF/
        DEF is now used as import/exports.
    - Bug: In VstDriver, perform only one lookup for global signals among all
        nets and not for each instance master cell. That was making the driver
        quadratic! Now it's linear and reasonably fast.
2010-08-18 20:22:10 +00:00
Jean-Paul Chaput cdbfff194d * ./crlcore:
- New: Added support for ACM/SIGDA ISCAS98 (.bench extension).
    - Bug: In Parsers/Drivers changes the signature of the prototype, passes
        file name string by value instead of by reference. In the cases of
        reentrant P&D calls it may causes havoc.
2010-07-30 16:31:27 +00:00
Jean-Paul Chaput d792e71110 Don't forget / to separate pathes... 2010-05-27 13:34:40 +00:00
Jean-Paul Chaput 08aa1aa1ac Pass the SYS_CONF_DIR to the compiler so that we can set a reasonable
default for CORIOLIS_TOP.
2010-05-27 12:48:11 +00:00
Jean-Paul Chaput 002fa55cdb * All tools:
- Change: adopt a tree layout compliant with the UNIX FHS.
        * includes under      TOP/include/coriolis2.
        * shared datas under  TOP/shared/coriolis2.
        * docs under          TOP/share/doc/coriolis2.
        * configuration under TOP/etc/coriolis2

  * ./crlcore:
    - Change: In Environment, comply to the new tree layout, search configuration
        files under TOP/etc/coriolis2/.

  * ./knik:
    - Change: In flute, comply to the new tree layout, get the "POW*.dat" files
        from TOP/share/coriolis2/flute-2.4.
2010-05-18 12:53:04 +00:00
Jean-Paul Chaput 07cc25dd2e Sets the default CORIOLIS_TOP to /opt/coriolis2, where the
distributed package will be.
2010-05-17 16:38:06 +00:00
Jean-Paul Chaput cd7a294ca9 * ./crlcore:
- Cleanup: No longer import the std namespace in headers.
    - Bug: In Measures.h, incoherent prototyping of getMeasure() template.
    - Change: In Environment, SearchPath & the XML format, slight change to
        allow overwriting of Alliance library pathes. Instead of having an
        attribute on the <system> node that applies to all libraries, we
        have a "mode" attribute in each <library> node.
          "mode" can takes three values:
            1. - "append" : the library path is added in tail of the list.
            2. - "prepend" : the library path is added in head of the list.
            3. - "replace" : if the library already exists in the pathes,
                    this ones replaces it, whitout modifiying the order.
                    If it doesn't exists, it simply appended.
          The "replace" mode is the one to be used if a users wants to shadow
        system libraries by his own versions (sets in ~/.environment.alliance.xml).
2010-05-13 09:45:20 +00:00
Jean-Paul Chaput c5d8077730 * ./hurricane/src/hviewer,
./coriolis/src/crlcore,
     ./coriolis/src/knik,
     ./coriolis/src/katabatic,
     ./coriolis/src/kite,
     ./coriolis/src/equinox,
     ./coriolis/src/solstice,
     ./coriolis/src/ispd:
     - SVN MOVE: Source tree simplification & uniformisation. Now all tools
         are at the same level, directly under the root of the repository.
         No more "coriolis/src".
2010-03-09 15:20:13 +00:00