Commit Graph

140 Commits

Author SHA1 Message Date
Jean-Paul Chaput cd9d3fc4b6 ExtensionCap support and source/target terminal flags in Katabatic & Kite.
Placement management:
* Change: In <metis>, always disable the hMetis support regardless of
    it being detected or not as the placer is still unable manage the
    final bin contents.

Routing gauge management:
* Bug: In CRL Core, <vsclib/alliance.conf>, set the correct pitches and
    size for the routing layers and the cell gauge.
* Change: In Katabatic & Kite, extract the correct extension cap for each
    routing layer from the layers characteristics (cache then in
    Katabatic::Configuration).
* Change: In Katabatic, <AutoSegment>, create segment with the wire width
    defined in the gauge. For AutoSegment created on already existing
    Segment from the global routing, adjust the width.
* Change: In Katabatic, <AutoSegment>, more accurate information about how
    a segment is connected to terminal via source and/or target.
    The flag SegStrongTerminal is splitted into SegSourceTerminal and
    SegSourceTarget (but still used as a mask). So now we can know by
    which end an AutoSegment is connected to a terminal.
* Change: In Katabatic, ::doRp_Access(), create constraint freeing segments
    not only when HSmall but also when VSmall (more critical for <vsclib>).
    Otherwise we may see AutoSegments with incompatible source/target
    constraints.
* Change: In Kite, BuildPowerRails, do not create blockage on PinOnly
    layers *but* still create power rails planes. This is a temporary
    workaround for <vsclib> where the METAL1 blockages overlaps the
    terminals (it was fine for Nero, but they shouldn't for Kite).
* Change: In Kite, <RoutingEvent>, if a TrackSegment is overconstrained,
    directly bybass it's slackening state to DataNegociate::Slacken.
    Also rename the flag "_canHandleConstraints" to "_overConstrained",
    seems clearer to me.

Miscellaneous:
* Change: In CRL Core, <Utilities>, add a "pass-though" capability on the
    mstream to temporarily make them print everything.
2014-05-25 15:00:35 +02: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
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 c8bcfdf174 Improved UpdateSession & exception catching. Start of RoutingGauge implem.
Miscellaneous:
* Change: In <crlcore>, in display.conf use the same display threshold
    for both METAL2 & METAL3.
      In alliance.conf, the side of VIAs in the gauge is 2l (not 3l).
      In kite.conf, separate edge densities for H/V.
* Change: In <Cell>, in flattenNets() use flag as argument, not a
    boolean. Do not create rings for clock or supply nets.
* Change: In <DeepNet>, in _createRoutingPads() do not create rings
    for clock or supply net (duplicated policy as in Cell::flattenNets()).
* Bug: In <ControllerWidget>, at last find the bad signal disconnect
    that was causing ungraceful messages.
* Change: In <knik>, in Edge display occupancy/capacity in the string
    name. Improved display progress and debugging capabilities.

Improved exception catch & breakpoint managment:
* Bug: In <PaletteWidget>, in updateExtensions() replace the calls to
    deleteLayer() by delete. This cause the widget to be immediatly
    erased instead of waiting for the event queue to be completly
    processed. This was causing the widget to be left in a incoherent
    state when stoping at a breakpoint.
* Bug: In <BreakpointWidget>, in execNoModal(), flush the main event
    loop (QApplication::flush()) *before* lauching the *local* event
    loop. This is to ensure all widgets are in their final state when
    waiting (especially <PaletteWidget>).
* Change: In <ExceptionWidget>, new method catchAllWrapper() to
    execute any std::function< void() > function/method with a "try"/
    "catch" wraparound and lauch the widget in case something is catch.
* New: In <hurricane>, support for a oberver pattern, backported from
    <katabatic> with an Obervable capable of being linked to any
    number of Obervers.
* New: In <Cell>, made it observable to detect Cell change, currently
    emit two kind of signals:
    - Cell::CellAboutToChange : *before* any change.
    - Cell::CellChanged : *after* the change has been completed.
* New: In <UpdateSession>, in Go::invalidate() add the Cell owning the
    Go to the UPDATOR_STACK (of course the cell is added only once).
    In addition, when the Cell is added, send a notification of
    Cell::CellAboutToChange to all it's observers. The slave instances
    are also invalidated.
      Conversely in UpdateSession::_preDestroy() for each invalidated
    Cell send a Cell::CellChanged notification to all observer.
      The UPDATOR_STACK has been slightly amended to accept Cell which
    are not Gos. Prior to this, the Cell where completly excluded from
    the UpdateSession mechanism, so it's instances where never actualised
    of anything referring to the Cell for that matter.
      Note: we use two different mechanisms to transmit a Cell change,
    observers and the slave instance map. I think at some point it
    should be unificated.
* Change: In <CellViewer>, make it a Cell observer to redraw when the
    cell is modificated (also update the palette).
      Uses the catchAllWrapper() to protect all critical actions.
* Change: In <GraphicTool>, no longer need of cellPreModificated and
    cellPostModificated signals. Now done through the Cell obersvers.
* Change: In <mauka>, <etesian> & <kite> now uses the catchAllWrapper
    method for protection (need to split methods in two, to be able
    to pass it as argument). No longer emit cellPreModificated and
    cellPostModificated.

Support for RoutingGauge in P&R:
* Bug: In <placeandroute.py>, the connection from the internal power
    ring to the connectors was not done correctly. Wrong contact layers
    leading to a gap.
* Change: In <BuildPowerRails>, detection of the corona signals based
    on how the "pck_px" pad is connected. No longer based on name
    matching.
* Change: In <placeandroute.py>, support for 2 routing metal only
    (3 metal in the technology).
* Change: In <katabatic> & <kite> support for a "top layer" limitation
    on the routing gauge, this allows to use only two routing metals
    (METAL2 & METAL3). Work in progress.
2014-04-20 19:30:07 +02:00
Jean-Paul Chaput 14a5f5f7ef Documentation restructuration
Documentation restructuration:
* Bug: in <hurricane>: bad figure for transf-R1.
* Change, in <kite>: Remove deprecated configuration variables.
* New: documentation <tool> to regroup all documentation not directly
  related to one tool.
* Change, in <crlcore>, move the user's guide and the top doc index
  into <documentation>.
* New, in <documenation>: added Python script demo based on AM2901.
2014-03-11 12:21:31 +01:00
Jean-Paul Chaput b4887b1180 * ./hurricane/doc/hurricane:
- Change: In Cell, added doc about PlacementStatus.
    - Change: In Transformation, more detailed explanations about the
        orientations. A little beautifying too...
    - Change: RoutingPad doc update.
    - Change: Entity doc update (for id).
    - Change: In HTML header/footer uses the new SoC.css.

  * ./crlcore/src:
    - Change: In DefDriver, added support for placement exportation.
    - New: In Utility, added a "paranoid" output stream (for my extra
       warnings in the router).
    - Bug: In ApParser, correct parsing of connectors index (recreate
       the vector).
    - Change: In alliance.conf, make "blockageNet" case insensitive.
    - Change: In misc.conf, added support for paranoid stream.
    - Change: In x2y and CyclopMain correct verbose flags positionning.

  * ./crlcore/doc:
    - Change: Updated style and added some documenation.
2013-12-04 01:47:34 +00:00
Roselyne Chotin 7e036ab036 correct the location of stratus2sxlib.xml 2013-04-26 15:32:14 +00:00
Jean-Paul Chaput 64bfedc278 * ./crlcore:
- Bug: In CMakeLists.txt, when our custom macro "setup_boost()" is used,
        do not call find_package() afterward, it corrupt the library pathes
        from '/usr/lib/' to '/usr/lib/lib/'.
2013-03-13 13:38:38 +00:00
Jean-Paul Chaput 8c79521982 * ./crlcore:
- Change: In kite.conf, increase the ripup limit of local segments (too
        low).
2012-12-22 18:21:40 +00:00
Jean-Paul Chaput 08b7e3971f * ./crlcore:
- Bug: In Histogram::addSample(), reject the sample if iset is superior
        OR EQUAL to the sets size...
    - Change: In etc/mauka.conf, sets "mauka.standardAnnealing" to True. Otherwise,
        when hMetis (4-part) is not used, this leads toward very poor placements.
    - New: In UsersGuide, add a third style variant for the soc-extras site.
2012-12-09 11:18:07 +00:00
Jean-Paul Chaput 2012f14acf * All Tools:
- New: Added FreeBSD/Ubuntu patches from Otacilio De Araujo
       (<otaciliodearaujo@gmail.com>).

  * ./crlcore:
    - New: In Utilities, cbug stream to separate all the scary messages
        from Kite/Katabatic and maybe others.
    - New: In stratus1.conf, adds default settings previously in st_config.
    - New: Moves Python configuration helpers from under /etc/coriolis2
        into PYTHON_SITE_PACKAGES/crlcore. Adapt Utilities so coriolisInit.py
        is now searched in that directory. This way only true configuration
        files remains under /etc/coriolis2
    - Change: In helpers/__init__.py, do not try to guess the sysConfDir
        when not run through coriolisInit.py. This is done by exploring the
        call stack with traceback.
    - Change: In ApDriver, when a physical view is driven, update the flag
        in the catalog state telling that this view is present. This is far
        from satisfactory as this flag should be set as soon as any physical
        component is created.
2012-12-03 08:27:41 +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 c4d93e71e8 * ./crlcore:
- Change: In environment.alliance.xml, restore settings compatible with
        Alliance.
2012-01-03 13:35:06 +00:00
Damien Dupuis 1a23d73b22 Adding technology.ams035.s2r.xml file to support ams_035 technology. 2011-07-28 09:08:57 +00:00
Jean-Paul Chaput 0e1a81707f * ./crlcore:
- New: In tools.configuration.xml, add indexes to the layout tabs.
        Adjust defaults parameters for Knik/Kite.
2011-04-12 20:33:49 +00:00
Jean-Paul Chaput beae7fb97e * ./crlcore:
- New: In GraphicsParser, read the new darkening scheme (HSV ratio).
        "display.xml" configuaration file modificated accordingly. May be some
        tuning needed for white background styles.
2010-12-30 18:39:26 +00:00
Jean-Paul Chaput a93e5be3da * ./crlcore:
- New: Histogram object, imported from Kite. Made more generic to be reusable
        by all.
    - Change: In Measures, added Inspector support.
        NOTE: The hidden property holding MeasuresDatas no longer uses a pointer
              a value. This forces us to enable the copy constructor. It is needed
              for some inner STL container manipulation, but should *not* be used
              with non-empty datas. The copy constructor *do not* copy the internal
              datas (reset the object).
    - New: In Measurments, support for complex data sets, saved in separate Gnuplot
        <.dat> files. Used to integrate Histogram.
    - New: In Histogram, now a supported Measure type so it can be integrated along
        all others measurments.
    - Bug: In display.xml, forgotten gcut description in Alliance Classic black
        style.
2010-12-15 15:11:25 +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 d0f15b901f * ./crlcore:
- New: In tools.configuration.xml, add default values for METAL minimum break
        lengths.
    - Change: In AcmSigda, makes the parser an autonomous one, like for ICCAD or
        ISPD.
    - Change: Remove AcmSigda, Bookshelf and LEF/DEF parsers from the Alliance
        builtins. They are now to be used through import/export.
    - Bug: In Utilities, the <misc.logMode> parameter boolean parameter was used
        the wrong way (true/false).
2010-08-22 12:36:23 +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 632fb019e5 * ./crlcore:
- Change: In environment.alliance.xml, configuration by default is setup
        for SoC lab.
2010-07-19 21:04:25 +00:00
Jean-Paul Chaput 6d4e94616d * ./crlcore:
- New: In Utilities, automatic setting of STRATUS_MAPPING_NAME. It's put
        back into the environment from the configuration. This suppress the
        need for the last environment variable under cgt.
2010-07-18 10:00:38 +00:00
Jean-Paul Chaput c50c480263 * ./crlcore:
- New: In tools.configuration.xml, new mauka key.
2010-06-25 08:37:30 +00:00
Jean-Paul Chaput c824b088be * ./crlcore:
- Change: In PaletteWidget, uses "goMatched" to hide DrawingStyle that are
        not associated to a Go to hide/show. That is, are only pure color useds
        by ExtensionGo.
2010-06-22 20:38:00 +00:00
Jean-Paul Chaput fcbd24a9e2 * ./crlcore:
- New: In <tools.configuration.xml>, added parameters for verbosity, info
        and trace level.
    - New: Uniform mecanism to get the "/etc" path. Now System reads the
        environment variables (thanks to boost::program_option).
    - Change: In Utility, correct "when first called" initialisation of the
        System singleton. Access to members only through static members that
        ensure the initialisation of the singleton first.
    - Change: In System, makes uses of the callback feature of Parameter to
        initialize the new configuration parameters (verbosity, coredump, ...).
    - Change: In linefill, build upon mstream instead of ostream. Now dual
        aspect, inherit ostream and have a mstream member.
2010-06-22 13:55:37 +00:00
Jean-Paul Chaput 541a48531e * ./crlcore:
- In /etc, supplies a default XML configuration file for all tools:
        tools.configuration.xml.
2010-06-18 14:01:50 +00:00
Jean-Paul Chaput 85297540fc * ./crlcore:
- Bug: In CMakeLists.txt, local include directories *first*.
    - New: In Utilities, Dots::asBool() & Dots::asLambda().
    - New: In display.xml, new <drawingstyle> for Mauka Containers.
2010-06-08 12:02:31 +00:00
Jean-Paul Chaput 2e6242df73 * ./crlcore:
- Bug: In AllianceFramework, do not try to build SxLib gauge if the layers are
        not presents. Prevent cgt to miserably fails if the environment is not
        found.
    - Change: In src/ccore/CMakeLists.txt, try to guess the CORIOLIS_TOP from the
        compilation environment and pass back to sources.
    - Change: Rename hcmos9 into cmos130 in configuration files.
2010-05-27 16:12:04 +00:00
Jean-Paul Chaput d792e71110 Don't forget / to separate pathes... 2010-05-27 13:34:40 +00:00
Jean-Paul Chaput 2e287fb3b4 Include the Flute license reference. 2010-05-27 11:37:16 +00:00
Damien Dupuis bf1bdca47c Rename technology files to 'standard' names cmosXX 2010-05-27 11:32:16 +00:00
Jean-Paul Chaput 54b3b6fc1f * ./crlcore:
- New: Adds a README.tex describing the essentials features of Coriolis2.
    - New: Support for LaTeX in CMake through the macros supplieds by Sandia.
    - Change: Adds support for installation of config file in system-wide
        /etc.
2010-05-21 16:54:41 +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 c61f191a61 * All tools:
- Change: In the CMakeLists.txt, in all the install commands remove all
        the leading "/" as they prevents the CMAKE_INSTALL_PREFIX to be took
        into account. It was nevertheless working because buildCoriolis.py was
        using DESTDIR which is prepended anyway.
  * ./goodies:
    - Change: In buildCoriolis.py, no longer uses the DESTDIR but instead
        CMAKE_INSTALL_PREFIX.
2010-05-16 16:34:02 +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 fe7acbc389 * ./crlcore:
- Change: In ToolEngine, adds a static method "destroyAll()" that must be
        called *before* the Hurricane database destruction. This is to avoid
        a mis-oredering in destruction.
          ToolEngines are stored in a property, property are part of the DBo
        base object so are destroyed *after* the Cell derived object has been.
        Thus ToolEngine are deleted *after* the Cell components and if they
        still refers to it, we are doomed.
     - Change: In display.xml, color support for displaying references.
2010-04-12 11:21:41 +00:00
Damien Dupuis bc295bda31 Adding new technology support = freePDK45 (this will be used to generate openAccess files since it is the only design kit we've got that is compliant with Cadence 6.x) 2010-04-06 14:32:40 +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