Commit Graph

1473 Commits

Author SHA1 Message Date
Jean-Paul Chaput c7e4123662 Merge branch 'github/doc' into devel (G. Gouvine) 2015-04-05 19:31:01 +02:00
Jean-Paul Chaput d7ca2fb299 Correct the garbled screen when shifting right in CellWidget.
* Bug: In Hurricane, In CellViewer, pass by a temporary pixmap when
    shitfing right (and bottom). We were already using the AutoCopy
    buffer for the opposites moves... Seems that the drawPixmap()
    may have changed of implementation.
      Explanation of the diagonal lines, see QTBUG-31579 that affect
    Qt 4.8.5. Temporary work around, force the pen to have a width
    of 2 pixels (for _normalPen & _linePen).
* Change: In Hurricane, in CellViewer remove the redraw by whole
    strip mechanism (offsetVA).
* New: In Hurricane, In CellViewer::DrawingPLanes add a tracking of
    the brush offset to avoid small irregularities at the border of
    two separately drawed areas.
* Bug: In Hurricane, in Graphics, display a warning about the
    diagonal lines when using Qt 4.8.5.
2015-04-05 19:21:20 +02:00
Gabriel Gouvine aa17b90bea Doc for Yosys and Etesian + minor fixes
* Blif import checks if the file exists
* Typo in Knik
2015-04-05 11:35:06 +02:00
Jean-Paul Chaput c63ee783ed Rename BlifDriver.cpp to BlifParser.cpp ;-) 2015-04-04 17:39:15 +02:00
Jean-Paul Chaput 138afff65d Merge remote-tracking branch 'remotes/github/Blif' into devel 2015-04-04 17:29:48 +02:00
Jean-Paul Chaput d34d95fc68 Remove Py_Finalize() call.
* Change: In Hurricane, in Script.cpp, remove the call to Py_Finalize()
    as it do not completly clear the Python interpreter, causing in
    Chams disgraceful warning about a double initialization.
      Not calling this clearing function do not seems to cause problems
    do far (maybe memory leak...).
2015-04-04 17:21:37 +02:00
Gabriel Gouvine e97d4ca06a Updated Flute 2.4 to Flute 3.1
* Theoretically slightly better
* Removed the artifical limitation to 150 terminals
2015-04-03 17:27:30 +02:00
Gabriel Gouvine 3351574077 Fixed typo 2015-04-03 11:29:55 +02:00
Gabriel Gouvine 69b6f5acba Adding VDD/VSS to the current design 2015-03-31 18:31:41 +02:00
Gabriel Gouvine 18958d8f31 Basic BLIF parser for Yosys interface 2015-03-27 15:51:58 +01:00
Jean-Paul Chaput 1aa416e82a Etesian adjustements, patch contributed by G. Gouvine. 2015-03-24 10:40:53 +01:00
Jean-Paul Chaput 1e73466199 Added new CMake macro add_python_module() and some cleanup. 2015-03-22 19:12:45 +01:00
Jean-Paul Chaput 69c75b9ea9 Rewrite the Unicorn ImportCell to allow new formats to be hooked in.
* New: In Hurricane, In CellWidget, add methods to emit CellPreModificated
    and CellPostModificated Qt signals (from non-Qt aware objects).
* New: In Unicorn, In ImportCell, parsers are now dynamically hooked
    in the importer, allowing third party application (i.e. Chams) to
    add their own. See the ImportCell::addImporter() method.
* Bug: In Unicorn, in FindUNICORN.cmake, seems to be unable to detect
    the UnicornGui.h. Not a blocking problem because the include dir
    is shared with other tools correctly detected. But still...
2015-03-21 17:29:04 +01:00
Jean-Paul Chaput f18922a0bb Implementation of placement effort in Etesian (G. Gouvine). 2015-03-18 15:55:08 +01:00
Jean-Paul Chaput 03fa9e8e0f Remove forgotten Mauka related options in cgt.py 2015-03-18 11:31:47 +01:00
Jean-Paul Chaput 393b5a735f Remove simulated annealing placer Nimbus/Metis/Mauka. 2015-03-17 22:50:00 +01:00
Jean-Paul Chaput 5dc60415e7 Happy new year 2015! 2015-03-17 16:56:55 +01:00
Jean-Paul Chaput a7c4e8b02e Python Script launcher extended to accomodate Chams.
* New: In VLSISAPD, in Configuration, add a new priority level UserFile
    to distinguish between the system configuration files and the user's
    configuration files (which take precedence).
* New: In Hurricane, in Script (Python), improve the API to be able
    to support Chams (and remove the duplicate capability from it).
      Add separate functions to perform the initialize/run(s)/finalize
    cycle step by step.
* Change: In CRL Core, rename real technology <hcmos9> to <hcmos9gp>,
    it's offcial name from CMP/ST. This is the 130nm.
      Move the reading of the symbolic & real technologies names from
    coriolisInit.py to helpers.__init__.py, to be shared with
    chamsInit.py.
      To avoid a clash of names inside of helpers, the two variables
    of techno.py are renamed "symbolicTechnology" and "realTechnology".
      Move python init system from crlcore/src/crlcore to crlcore/python.
* New: In CRL Core, In Utilities, add site-packages/pharos to the
    PYTHONPATH.
* Change: In Kite, move python init system from kite/src/init to
    kite/python.
2015-03-17 16:31:24 +01:00
Jean-Paul Chaput c65a79b47c Updated doChip.py script from alliance-check-toolkit. 2015-03-08 16:12:41 +01:00
Jean-Paul Chaput d825a76252 Updated documentation, introduce Etesian & plugins. 2015-03-06 08:58:10 +01:00
Jean-Paul Chaput 2739d32bf8 Fix for Etesian build under Cygwin/W8 (N. Shmizu) 2015-03-04 11:11:12 +01:00
Jean-Paul Chaput f5020120bf Correct clock-tree building when used on a standalone block.
* Change: In Cumulus, in Configuration.py, in the horizontal & vertical
    wire creation adds new flags ExpandWidth to draw wires one lambda
    bigger than the minimal width (see ClockTree.py patch).
* Change: In Cumulus, In ClockTree.py, use non default width to draw
    wires of the H branch of the clock tree. This is to prevent them
    to be recognized as "manual global routing", which they are not
    and not event topologically compatible.
* Bug: In Kite, in BuildPowerRails, change the way clocks are detected
    when working on a single block (not a whole chip). Now look only
    in clock which are external and do not filter out already routed
    ones.
* Change: In KiteEngine, in createGlobalGraph(), systematically call
    flattenNets() so nets that are added after the first flattening
    in the placer are also flattened. The flattenNets() Cell method
    takes care of not flattening twice a net.
2015-03-03 11:11:22 +01:00
Jean-Paul Chaput 4d184c7a75 Added etesian.conf in ispd05 symbolic technology. 2015-03-02 23:44:55 +01:00
Jean-Paul Chaput bddf1ceef5 Ispd05 bookshelf parser bad scaling bug correction.
* Bug: In CRL Core, in Ispd05Bookshelf, as the pitch is already expressed
    in DbU, do not apply DbU::toLambda() in any expression where it is used.
* Change: In Etesian, In AddFeeds, do not try insert feeds if there is no
    cell feed avalaible.
2015-03-02 23:29:08 +01:00
Jean-Paul Chaput 58c78c5d78 Annoying dir_search problem with IMPORTEDS. 2015-02-28 17:07:44 +01:00
Jean-Paul Chaput 225f9093b5 Support Fedora OS in Builder as well as in coriolisEnv. 2015-02-28 10:30:28 +01:00
Jean-Paul Chaput 8566126acc Adding Configuration support to Etesian.
* Change: In Bootstrap & ccb, the coloquinte project is renamed into
    "importeds", it will be the home of all the externally
    devellopped softwares that are needed to build Coriolis.
      Add explicit support for Fedora ("Linux.fc") and uses
    site-packages, as everybody else.
* New: In CRL Core, in etc/, adds the configuration files for Etesian.
* New: In Etesian, activate the Configuration object. Now uses it's
    own configuration variables instead of borrowing those of
    Nimbus & Mauka.
* Change: In Documentation, updated User's Guide to present Etesian
    as the placer, instead of Mauka.
* Change: In Cumulus, slight change in ClokTreePlugin and ChipPlugin
    to match the new Etesian/Python interface.
2015-02-27 18:16:03 +01:00
Jean-Paul Chaput bd3984a313 Correctly manage clock net isolateds from the main clock.
* New: In Bootstrap, in ccb.py, check if cmake is installed and issue
    a warning, if not.
* New: In Hurricane, added Cell::getDeepNet() to search for a deepnet
    given a path and a leaf net. This method is slow and must not be
    used too often. Introduced for Kite::BuildPowerRails().
* Change: In CRL Core, in cmos/alliance.conf, modify the clock name
    pattern to match the sub-clock signals in the datapath operators.
* Bug: In Etesian, do not blindly reset the top cell abutment-box.
    Do it only if it's empty, otherwise keep it.
* Bug: In Kite, in buildPowerRails(), in getRootNet() the management
    of clock nets was incomplete. The case of unrouted clock nets
    that where not connected to the top core clock net, like the
    one in the datapath registers was faulty. They were partly
    recognized as unrouteds and partly as blockage generating a
    routing deadlock: routage impossible due to blockage generated
    from itself...
* New: In Stratus1, add a buildModel() utility function to automate
    the model generation and allow a call by the model name (string).
* Change: In Unicorn, in cgt.py, display the Alliance environement.
2015-02-25 22:22:16 +01:00
Jean-Paul Chaput 64ea693d6d Etesian patch (G. Gouvine) for the latest Coloquinte. 2015-02-24 13:34:52 +01:00
Jean-Paul Chaput 6d366a08bc Etesian integration with Chip & ClockTree plugins.
* New: In Hurricane, in DebugSession, add a new method to activate the
    trace inconditionally with a certain level.
* New: In Hurricane, in HyperNet, allow copy construction as there is
    no reason to disallow it and we need it now.
* New: In Hurricane, in Cell::flattenNets(), add a new option to prevent
    the flattening of the clock net(s). For more safety perform the
    DeepNet creation *outside* the Collection loop.
* Bug: In Hurricane, in Cell_HyperNetRootNetOccurrences, skip the
    DeepNets because they are the result of another flattening operation.
* New: In Isobar, in PyBasicLayer, export C++ method getBlockageLayer().
* New: In Isobar, in PyRoutingGauge, export C++ method getLayerPitch(),
    needed by Cumulus plugins.
* New: In Etesian, EtesianEngine::findYSpin() to look for the Y orientation
    if some cells are already placed. Typically the buffers of a clock
    tree.
      Pass the correct orienation to row_compatible_orientation().
      Do not try to add feeds in the ISPD05 benchmarks. For now the
    benchmarks are detected through their names (unreliable).
* Change: In Knik, in KnikEngine::initGlobalRouting(), allow the clock
    to be routed as an ordinary signal when the clock tree is not
    used.
* New: In Kite, in BuildPowerRails, management & detection for the
    pre-routed clock.
      In KiteEngine constructor, early initialization of the blockage
    net to avoid later troubles in BuildPowerRails.
* New: In Cumulus, in ChipPlugin, add support for Etesian plus new
    configuration parameter 'clockTree.placerEngine' to select between
    Mauka and Etesian.
* New: In Cumulus, in BlockCorona, add blockages in the vertical sides
    in the vertical layer to prevent the router to use the vertical
    tracks in under the prower lines (for example, blockage in M3
    with power line M5).
      In Cumulus, in ChipConf add attribute to access the blockage net.
* New: In Cumulus, when the clock tree is disabled, do not generate
    the last rail around the block (the clock rail).
* Bug: In Cumulus, in ChipConf use the clock pad to guess the clock
    signals and *not* the power pad.
      Add more meaningful error messages if a pad global signal is
    not found (implicit connexion by name).
* Bug: In Cumulus, in ClockTree, compute correctly the cells Y spin,
    that is *from the bottom of the cell AB* (not from 'zero').
2015-02-24 13:13:17 +01:00
Jean-Paul Chaput 3b343f08cf Bug in Python proxy deallocation. Update to latest Coloquinte.
* Bug: In Bootstrap, in coriolisEnv.py, check if devtoolset-2 is already
    active before launching it as a sub-shell.
* Bug: In Isobar, In PyHurricane.h, DBoDestroyAttribute() set the proxy
    pointer toward the C++ object to NULL. So when the Python object is
    deleted no double-deletion occurs on the C++ object.
      Add some more trace information in Python link/dealloc.
* Change: In CRL Core, in cyclop, make CMakeLists.txt automatically
    choose the right rule for linking the binary wether we use Qt 4 or
    Qt 5. Very irksome problem.
* New: In EtesianEngine::addFeed(), do not take into account instances
    that are not placed entirely inside the top cell abutment box (was
    causing a core dump).
* Bug: In Katabatic, in GCellQueue, correct a mismatch between a GCell
    set and the iterators used upon it.
* Bug: In Mauka, in Row & Surface correct a mismatch between a container
    and it's iterator.
* New: In Etesian, updated to work with the latest Coloquinte, patch
    contributed by G. Gouvine.
      Added EtesianEngine::setDefaultAb() to compute an abutment box if
    the Cell is completly unplaced.
* New: In cumulus, in ClockTree, now the placer can be configured to be
    either Mauka (slow simulated annealing) or Etesian (fast analytic).
    New setting 'clockTree.placerEngine' in plugin settings.
2015-02-13 23:38:55 +01:00
Jean-Paul Chaput 05ec238080 coriolisEnv.py must not start devtoolset-2 when already active. 2015-02-03 23:41:55 +01:00
Jean-Paul Chaput 4fd34a85a1 post-receive-email restauration test 2. 2015-02-02 00:39:49 +01:00
Jean-Paul Chaput f4e1dd1fb8 post-receive-email restauration test 1. 2015-02-02 00:35:44 +01: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 56bd484429 In BlockPower, manage correctly a block without clock tree. 2014-12-12 18:40:53 +01:00
Jean-Paul Chaput a09e716ce9 More talkative VST parser.
* Change: In CRL Core, in VstParserGrammar.yy display in which mode a file
    is read. Behavioral, structural or model. Model is the step of reading
    the instance's models before truly reading the file.
      In addition, a small optimization, when in behavioral mode, parse
    the file only once.
2014-12-12 18:40:12 +01:00
Jean-Paul Chaput 6fb56f43e7 Documentation update for MacOS. 2014-12-12 12:05:25 +01:00
Jean-Paul Chaput 8eac4b4b6f More robust VST parser.
* Bug: In CRL Core, in VstParserGrammar.yy & VstParserScanner.ll, accurate
    error message positions (file & line numbers).
      When generating error message, we cannot pass char* on variables that
    will be deallocated by the throw. So generate a string that will be
    copied along with the exception. That problems explain numerous
    core-dump when encountering syntaxes errors in the file.
2014-12-11 23:56:59 +01:00
Jean-Paul Chaput 978315c017 Compliance with Clang 3.4 (RHEL7, MacOS).
* New: In Bootstrap, added support for RHEL7 in ccb.py & coriolisEnv.py.
   In coriolisEnv.py, under RHEL6, directly launch a shell under
   devtoolset-2 (do not put it in .bashrc).
* Change: All tools, compliance with Clang 3.2.
   - Call using namespace std *after* at least one include of std has
     been used.
   - In Utilities.h define both const and non-cont overload for operator<<
     of mstream (this was the true cause of the Banner display problem).
   - No longer use defaults arguments in templates, instead create two
     separated overloads.
   - Put template static attributes allocation outside of namespaces
     (this one I'm not sure how to justify).
   - Protect by NDEBUG variables that are only needed in assert().
   - In PyInterval getUnion() & getIntersection() we where silently
     overwriting the "self" object (interval).
   - In Mauka, *do no* overload _postCreate() and add an argument, breaks
     the virtual function mechanism. Rename it into _maukaPostCreate().
     Idem for SubRow().
   - In Katabatic::GCell(), invalidate() overload a Go funtion but is
     used for different purpose at this level. Rename it invalidateCt()
     (invalidate *ConTents*).
   - Miscellaneous small cleanup.
2014-12-09 23:49:46 +01:00
Jean-Paul Chaput 37c8498962 Support for devtoolset-2, clang and c++11 improvement. 2014-12-05 18:50:15 +01:00
Jean-Paul Chaput b98e6a968a Kite, Pin are not pre-route, do not use _vdde when routing a block.
* Bug: In Kite, in KiteEngine::BuildPreRouteds(), Pin (sub-class of
    Contact) must not be considered as a component triggering the
    *already routed* state.
* Bug: In Kite, in BuildPreRouteds (GlobalNetTable), when de design
    is *not* a full chip, do not try to compare net with _vdde/_vsse.
2014-10-05 12:21:02 +02:00
Jean-Paul Chaput 60b0aa5ca7 Rename user's configuration (again), to use '.py' extentions.
* Change: In CRL Core, in coriolisInit.py user configuration files are
    now suffixed ".py" instead of ".conf" (for settings & techno).
2014-10-03 19:11:06 +02:00
Jean-Paul Chaput fddf11516a More accurate tests in Katabatic to stop whining about bad doglegs.
* Change: In Katabatic, in AutoSegment::canonize() and
    Session::_canonize() no longer tag Global as WeakGlobal also.
    This avoid to try to make dogleg on them when we shouldn't.
    They where staying WeakGlobal even when there were no longer
    connected to a global.
* Change: In Katabatic, in AutoSegment::makeDogleg(), suppress the
    bug for pad message when we are in the global routing stage.
    At that point it is allowed to make doglegs under the pads are
    they are "layer change" ones.
2014-10-03 19:00:02 +02:00
Jean-Paul Chaput dbf87493eb In Kite, Segments where not rescheduled in some cases of moveUp().
* Bug: In Kite, in TrackSegment::_postDogleg() when called through
    TrackSegment::moveUp(), if no dogleg are created, that is the
    segment is "pivoted up" (for example a M3 connected to only
    M4 that is pivoted to M5), the segment was *not* rescheduled as
    it ough to be. The end result was a M5 in a M3 track...
* Change: In Kite, in Track::checkOverlaps() in case of further
    problems, also check that TrackSegments and Track are in the
    same layer.
2014-10-03 16:04:12 +02:00
Jean-Paul Chaput 648b85226e Use rowend instead of tie in ClockTree for removed clock buffers.
* Bug: In Cumulus, in ClockTree.py, do not use "tie_x0" which is 2 pitch
    wide to fill the free space left by clock-tree removed (unused)
    buffers. If the buffer size width is odd (in pitch), it will left
    a gap in the WELL. That was the cause of DRC notch errors.
      Instead use "rowend_x0" which is one pitch wide.
      Should use the same mechanism as in Mauka InsertFeed.
2014-10-02 00:42:59 +02:00
Jean-Paul Chaput c244c9ce70 Group all the user configuration file under a ".coriolis/" directory.
* Change: In CRL Core, in coriolisInit.py now read the configuration
    files from a ".coriolis2/" directory. This is to avoid too many
    dot files in the user's directory. Files have also been renamed:
       .coriolis2.conf         ==>  .coriolis2/settings.conf
       .coriolis2_techno.conf  ==>  .coriolis2/techno.conf
* Change: In Kite, in kiteInit.py follow the same policy as CRL Core
    for configuration file.
       .coriolis2.kite.py      ==>  .coriolis2/kite.py
2014-09-27 17:40:35 +02:00
Jean-Paul Chaput 9c322501fe Version 0.2 of the RDS documentation (Symbolic & BIGVIA). 2014-09-26 22:55:55 +02:00
Jean-Paul Chaput 8e5ec7f8b7 In RoutingPad::setOnBestComponent() improved selection.
* Change: In Hurricane, in RoutingPad::setOnBestComponent(), in case of
    area equality, do not choose on id but the geometrically lowest one.
    Between two runs of the global router, it is not possible to
    maintain identical ids. This may leading to a change to the selected
    component, and a change of the GCell it in, which cause bad
    topologies when read by Katabatic.
2014-09-25 23:57:32 +02:00
Jean-Paul Chaput 1f9ae36554 Bug fixes for MOSIS SCMOS_DEEP support.
* Change: In Hurricane, the NetRoutingProperty is moved into Hurricane
    from Katabatic. Needed for Knik to be able to access thoses
    informations.
* Change: In Hurricane, in RoutingPad::setOnBestComponent(), now in
    case of identical area, select the component of lowest id.
    This should not be needed if the component ordering was fully
    deterministic as it should be (will investigate later).
      This is to ensure that the choosen component is always the
    same, especially between save/load of a global routing.
* Bug: In Katabatic, in AutoContactHTee::updateTopology(), invalidate
    the segments only if the topology is valid (no NULL in the
    cached segments).
* Bug: In Katabatic, in GCellTopology::construct(), throw an error
    if the topology is bad instead of trying to continue (and core
    dump later... ).
* Bug: In Kite, in BuildPowerRails, distinguish the name of the master
    net in the pad (for vddi, vssi, vdde, vsse, ck, cki & cko) and the
    name of the net in the *chip* netlist. Must use the later to make
    comparison as they may differs.
* Change: In Knik, in save/load solution, exclude nets that are not
    globally routed by Knik. That is which NetRoutingProperty is not
    *Automatic*.
* Bug: In Cumulus, in chip.BlockPower take account of the layer
    width extention to sligthy shrink the connector thus avoiding a
    notch with standart cell in some cases.
* Change: In Cumulus, in chip.ClockTree disable the use of fixed Steiner
    trees for the leaf clocks, as it seems overconstrained for the
    router. First move was to lower them in M2/M3 (instead of M3/M4)
    but that was not sufficent.
* New: In Cumulus, RSavePlugin for recursively saving a physical
    hierarchy.
* New: In documentation, first embryo for RDS file. Should have been
    in Alliance git, but I prefer to keep newest doc in Coriolis.
2014-09-21 16:44:37 +02:00