Commit Graph

1392 Commits

Author SHA1 Message Date
Gabriel Gouvine 6f0bc2ecb0 Split the placement routine
* Separate global and detailed placement
* Options provided by the main routine
2015-04-19 09:40:53 +02:00
Jean-Paul Chaput 4023481da3 Add a state to Cell to know if is placed and/or routed.
* New: In Hurricane, In Cell, add Placed and Routed flags to know the
    state of the Cell.
* Change: In CRL Core, In ApDriver, do not save the RoutingPads as
    external connectors if the design is *not* routed (create
    conflics on reload with the newly generated RoutingPads).
* Change: In Etesian, set the Placed flag on the Cell.
* Change: In Kite, set the Routed flag on the Cell.
* Change: In Cumulus, in RSavePluginAll, save the layout only if it
    has a bounding box.
2015-04-16 16:52:33 +02:00
Jean-Paul Chaput ef9936e87c Support for Net alias names. Blif parser enhancements.
* New: In Hurricane, In Net & Cell, support for Net aliases names.
    Use a structure based on a simple ring of NetAliasHook. The Net
    holds a global map, sorted by names of all the aliases of all Nets.
    Elements NetAliasesHook of the map are slaves of ring whose master
    is an attribute of the Net (it is *not* in the map, as the primary
    name of the Net).
      In case of merge, the aliases of both Nets are merged and the
    name of the merged one become an alias.
      The Cell::getNet() looks in both the Net map and the aliases to
    find a Net by name.
* Bug: In CRL Core, in coriolisInit.py, reoder the loading of the
    configuration files so the real technology is read as early as
    possible to set up the <gridsPerLambda> factor before any lambda
    is actually computed...
* Bug: In CRL Core, in AcmSigda, do not try to fed the file when it
    has failed to be opened. Throw a clean exception instead.
* New: In CRL Core, in Toolbox, add a NamingScheme object to convert
    a design into VHDL compliant names (mainly from Blif/Verilog).
    This is extensible in any case.
* New: In CRL Core, in BlifParser, slightly more informative warning
    messages. Align the loading progress information on the other
    parsers.
      Add a capability to select which component of the design will
    be returned, if there are more than one. Use the "." as separator.
    For exemple you can request "Processor.Alu", which will load
    the "Alu" component from the design in "Processor.blif".
      To be able to save a Blif loaded design, systematically convert
    all the name for VHDL compliance, as it is the format used by
    the Coriolis native files (vst).
      Export the Blif parser to the Python interface.
* New: In Kite, In NegociateWindow, add a counter of the number of
    remaining events. Gives an idea of the ETA...
* New: In Unicorn, in cgt.by, add an option to load a Blif design from
    the command line.
* New: In Cumulus, new RSave plugin to save both netlist & layout.
    Partly redundant with the previous one. Have to better organize
    that later.
2015-04-16 15:40:02 +02:00
Jean-Paul Chaput 2cbb072e6c Merge branch 'github/Blif', fast blif parser. 2015-04-13 18:55:06 +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
Gabriel Gouvine 575b6c923a Performance improvements for the BLIF parser
Got rid of streams
2015-04-13 17:38:51 +02:00
Gabriel Gouvine d7f9e5cb87 Handling aliases of non-instantiated nets
For example $true and $false in Yosys
2015-04-13 16:49:06 +02:00
Gabriel Gouvine 7d5338c9be Support for aliases defined with .names construct 2015-04-13 14:13:03 +02:00
Gabriel Gouvine 4035a6cb46 Supports several models in a Blif file 2015-04-12 16:24:29 +02:00
Jean-Paul Chaput bacea5214c Adapt the rpm automated build system of bootstrap (pass 2)
* Change: coriolis2.spec.in, Makefile.package and Builder/ccb now support
    RHEL6, RHEL7 & Fedora.
* Change: In Bootstrap, added a flag to activate compilation with
    openmp.
2015-04-09 22:45:48 +02:00
Jean-Paul Chaput cdfdccb19d Import Coloquinte as a Coriolis tool (merge from github/coloquinte). 2015-04-08 17:13:50 +02:00
Jean-Paul Chaput 1625b16d4c Adapt the rpm automated build system of bootstrap (pass 2) 2015-04-08 17:13:24 +02:00
Gabriel Gouvine 5d2845b80a Removed the dependency on the old module in Etesian 2015-04-08 12:54:46 +02:00
Gabriel Gouvine fe8b3fdbd6 Build system update for the new Coloquinte location 2015-04-08 12:45:56 +02:00
Gabriel Gouvine a0f01a5e00 Fixes from Naohiko Shimizu for compiling under Cygwin 2015-04-08 11:00:19 +02:00
Gabriel Gouvine a1256175cf Coloquinte tool included in Coriolis 2015-04-08 10:45:11 +02:00
Jean-Paul Chaput 9e672ffaa8 Adapt the rpm automated build system of bootstrap (pass 1) 2015-04-08 00:13:27 +02:00
Jean-Paul Chaput 71e1c188ea Remove obsolete XML config files. Add stub technos cmos065 & c35b4.
* New: In CRL Core, remove obsoleted XML files, no longer needed by
    Chams. Add stub for technologies CMOS065 (ST) and C35B4, aka
    AMS 035.
* Bug: In Knik, update the path where to find the FLUTE lookup tables.
    (from 2.4 to 3.1).
2015-04-06 12:49:27 +02:00
Jean-Paul Chaput 014e5eb538 Generate LaTeX documentation using dvipdfmx.
* Change: In documentation UserGuide, under RHEL7 documents generated
    with pdflatex tends to make evince core-dump while trying to print.
    So use latex+dvipdfm instead. Images then needs to be pdf with an
    auxiliary .bb file (the BoundingBox line extracted from the .eps).
2015-04-05 23:43:01 +02:00
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