Commit Graph

49 Commits

Author SHA1 Message Date
Jean-Paul Chaput 9812f2fc3a Corrections to build under MacOS X. 2019-12-11 22:13:47 +01:00
Jean-Paul Chaput 68e45bc5ab Groudwork for routing density driven placement. Compliance with clang 5.0.1.
This commit contains two set of features that should have been commited
separately.
  1. Compliance with clang 5.0.1, tested with the RedHat collection
     llvm-toolset-7. This allow Coriolis to be compiled under Darwin (MacOS)
     with Xcode & macports. The bootstrap install system has been modificated
     accordingly.
  2. The basic support for routing density driven placement. Related
     features are:
     * Bloat property. Each Occurrence of an Instance can be individually
       bloated. This property not attached to any tool to allow the placer and
       router to share it as wanted. Nevertheless, it is defined in Etesian.
     * BloatProfile in Katana, add individual Bloat properties to Instances
       occurrences based on the East & North overflowed edges of each GCell.
     * Support in ToolEngine for a "pass number" of a tool. This pass number
       is mainly used to make "per pass" measurements. The MeasureSet system
       is improved accordingly to support multiple values of a same measure.
     * Embryo of "P&R Conductor" to perform the place & route loop until the
       design is successfully placed. May be the first brick of a Silicon
       Compiler.

* Change: In boostrap/FindBoostrap.cmake, in setup_boost(), added tag to
    the python component for macport (ex: python27).
* Change: In boostrap/build.conf, put etesian before anabatic for
    instance occurrence BloatProperty dependency.
      Added option support for the "llvm-toolset-7" collection to build
    against clang 5.0.1.
* Bug: In Hurricane::getRecord( const pair<T,U>& ), the getSlot<> templates
    for first & second arguments must be called with <const T> and <const U>
    as the pair itself is const (and not simply <T> & <U>).
* Change: In Hurricane::getSlot() temlate, only use "string" arguments and
    not const string&, simpler for template argument deduction.
* Bug: In Hurricane::AnalogCellExtension, the StandardPrivateProperty<>
    template has a static member "_name". Clang did show that the template
    for this static number has to be put inside the namespace where the
    template *is defined* (i.e. Hurricane) instead of the namespace where
    it is instanciated (i.e. Analog).
* Bug: In Isobar, Matrix_FromListOfList(), PyInt_AsPlacementStatus() must
    be put outside the C linkage back in the Isobar C++ namespace (clang).
* Bug: In Hurricane::DBo::~DBo, and derived add a throw() specification
    (clang).
* Bug: In Hurricane::RegularLayer::getEnclosure() & setEnclosure(), change
    signature so it matches the one of the base class (clang).
* Bug: In Hurricane::CellPrinter, use double brackets for initializer list
    (clang).
* Change: In Hurricane::Breakpoint, reverse the meaning of the error level.
    Only error level *lesser or equal* than the stop level will be enabled.
* Bug: In CRL/python/helpers/__init__.loadUserSettings(), must put the
    current working directory in the sys.path as in certain configuration
    it may not be included.
* Bug: In CRL::ApDriver, DumpSegments(), no longer generate segments when
    encountering a RoutingPad on a top-level Pin Occurrence. The segment
    was generated in the wrong direction, creating DRC violations on the
    "mips_core_flat" example.
* Change: In CRL::Measures, partial re-design of the measurements management.
    Now, each kind of measure can accept multiple values put in a vector.
    The index is intented to match a tool run number.
* Change: In CRL::Histogram, add support for multiple sets of datas,
    indexeds with tool run number.
* Change: In CRL::ToolEngine, add support for multiple pass number, add
    addMeasure<> templates for the various data-types.
* Change: In CRL::gdsDriver & CRL::gdsParser(), comment out unused GDS record
    name constants.
* New: Etesian::BloatProperty, property to attach to Instance occurrences
    that contains the extra number of pitch to add to the cell width.
* Bug: In AutoSegment::CompareByDepthLength, the segment length comparison
    was wrong, it was always returning true, which broke the "strick weak
    ordering" of the comparison.
      This was producing a core-dump in GCell::updateDensity() when sorting
    a vector<>. The end() iterator was being dereferenced, leading to the
    problem.
* Bug: In Katana::DataSymmetric::checkPairing(), the test for segments
    whose axis is perpandicular to the symmetry axis was wrong
    ("!=" instead of "-").
* New: In Katana/GlobalRoute, new ::selectSegments(), selectOverloadedgcells()
    and selectBloatedInstances() to automatically select segments from
    overloaded edges, overloaded GCells and bloated cells.
* Change: In KatanaEngine, return a more detailed success state, distinguish
    between global and detailed.
      Add support for multiple routing iterations.
* New: In cumulus/python/plugins/ConductorPlugin.py, embryo of routing
    driven placement.
2019-12-09 01:57:44 +01:00
Jean-Paul Chaput 9bcc81eb7d Tweak FindBoostrap.cmake to detect Qwt under Linux Mint. 2019-05-10 12:12:30 +02:00
Jean-Paul Chaput 05a7af886c Enabling the user to choose the devtoolset it needs.
* Change: In boostrap/ccb.py, change the devtoolset argument from a fixed
    behavior "--devtoolset-2" to a selecting one "--devtoolset=X" where X
    is the requested version of the devtoolset.
      Modify coriolisEnv.py to dynamically detect with which devtoolset
    we have been compiled. Idem for Makefile.package and
    FindBootstrap.cmake.
2019-03-04 14:20:13 +01:00
Jean-Paul Chaput 6fd383ad51 Make FLUTE an independant tool in the Coriolis git repository.
* Change: To allow multiple tools, and not only Knik, to link and use
    FLUTE, remove it from Knik and put it at top level.
      Bootsrap must compile this new tool and the library must be
    included in all CMakeLists.txt depending on Knik (and soon
    Anabatic).
2019-02-12 12:48:52 +01:00
Jean-Paul Chaput 2b9c929f80 Compliance with cmake 3.0 (Debian 9.2). Corrects all warnings. 2017-12-02 14:30:05 +01:00
Jean-Paul Chaput e89eae6272 Bug, in FindLEFDEF.cmake, look for "libdef.so" and not ".a". 2017-11-27 14:16:10 +01:00
Jean-Paul Chaput 0f74ff7029 In FindLEFDEF.cmake, do not look for C libraries. 2017-11-26 20:02:54 +01:00
Jean-Paul Chaput 20eadc85f3 Bug: LEF/DEF includes in the wrong place. 2017-11-17 15:32:30 +01:00
Jean-Paul Chaput c12a50b64b Integrate LEF/DEF 5.8 into the tree (Apache 2.0 licensing)
* New: As, starting from version 5.8, LEF/DEF parser/drivers are
    availables under Apache 2.0 license, integrate them inside the
    project. Rewrite the Makefiles into CMakeLists.txt, build only
    the C++ version. Create an entry for the LEF/DEF doc in the
    documentation.
2017-10-30 15:38:29 +01:00
Jean-Paul Chaput 95d1b53646 Complete hoverhaul of the documentation to Sphinx.
* New: In documentation, reorganise all the various documents into one
    Sphinx coherent one. The index also provide a link toward the
    Doxygen generated doc (C++ APIs) and the venerable LaTeX2HTML ones
    (for Stratus).
      This will make easier all future extensions to the doc corpus.
      The generated documentation is commited into Git so a new user
    can use it directly after cloning the repository.
      The HTML doc is truly generated by Sphinx, but the pdf one is
    created rst2latex. The Sphinx pdf writer is buggy when a "tabular"
    contain a multicol and a multirow in the same area of the table.
    rst2latex handles it correctly.
      We use a theme borrowed for Read The Doc (half of it).
      It seems that some Javascripts are not working correctly,
    namely the folding of the navigation sub-menus and the index
    generation and search mode.
2017-07-15 17:35:02 +02:00
Jean-Paul Chaput 4126a53406 More reliable detection of libbfd. 2017-04-13 17:04:35 +02:00
Jean-Paul Chaput a2f1db27db Search for *both* libfd binutil specific and generic one. 2017-04-13 14:28:14 +02:00
Jean-Paul Chaput a376d34cfe Accurate Qwt detection (Qt4 vs. Qt5). DbU forced to 64 bits.
* Change: In bootstrap/FindBootstrap.cmake, new setup_qwt() macro to
    link with the Qwt library build with Qt 5 *or* Qt 4 and not the
    first found.
* Change: In Hurricane/DbU, uses <int64_t> instead of <long> to always be
    sure that we use 64 bits integers for coordinates.
* Change: In Katana/KatanaEngine::_gutKatana() checks that the
    RoutingPlanes have been allocateds before trying to delete them.
2016-11-23 11:29:28 +01: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 0930660a1f Added detection of Windows 10 / Cygwin64 (N. Shimizu). 2015-10-02 15:59:01 +02:00
Jean-Paul Chaput 5cb6170a53 Nicely print the LEFDEF_SEARCH_PATH. 2015-06-12 16:41:46 +02:00
Jean-Paul Chaput a3bd52c68f LEF/DEF installation on SoC network. 2015-06-12 16:27:29 +02:00
Jean-Paul Chaput 4bf5cf74b4 Policy CMP0022 for CMake. Forgotten library in Unicorn link. 2015-06-11 18:01:39 +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 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 1e73466199 Added new CMake macro add_python_module() and some cleanup. 2015-03-22 19:12:45 +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 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 b081d07bfc More strict detection of the configuration files install directory.
* Change: In Bootstrap, in FindBoostrap.cmake, install in system-wide
    directories /etc or /opt only if the the installation path is
    exactly /usr or /opt and not only beginning with it.
2014-08-03 16:17:13 +02:00
Jean-Paul Chaput 09f515c62a Support for Windows/Cygwin, part 2.
* Change: In bootstrap, in ccb, builder and coriolisEnv.py, correct detection
    of the windows architecture (32 or 64 bits). Under Cygwin, add the
    directory of the dll into the PATH also. Uses "site-package" as the
    location of Python modules (*not* "dist-package").
      Use gnu++0x under Cygwin instead of c++11.
* Change: In Etesian, if Coloquinte is not found, do not stop the compilation,
    just disable the tool altogether.
* Change: In Hurricane, In Backtrace, disable backtrace under Cygwin as it
    uses features specific of the glibc.
* Change: In Knik, use HUGE_VAL instead of HUGE (not present under Cygwin),
    add the <cmath> header.
* Change: In Unicorn, Coloquinte no longer stops the compilation.
2014-07-23 00:55:50 +02:00
Jean-Paul Chaput 520b9ae382 Restore support for both Qt4 & Qt5.
* Change: In bootstrap, in ccb & builder, build by default with Qt4 and
    provide a --qt5 command line switch to enable Qt5.
      FindBootstrap.cmake now provides a qtX_wrap_cpp() macros to be
    independant of the version of Qt being used.
      Add all thoses options to the graphical interface to the builder.
* Change: In all the tools using Qt, switch to the qtX_*() macros from
    FindBootstrap.cmake.
* Change: In Hurricane, in CellViewer, revert to the Qt4 way of connecting
    signal/slots for backward compatibility.
2014-07-22 11:06:26 +02:00
Jean-Paul Chaput 4842f21a2e Update to Qt 5, requires cmake 2.8.9. New placer: Etesian.
Update to Qt 5:
* Change: Now requires at least cmake 2.8.9.
* Change: CMakeLists.txt needs small changes. Qt modules must be found
    one by one (Core, Gui, Widgets). Must add "set(CMAKE_AUTOMOC ON)"
    in the top file and replace "qt4" prefix in macros by "qt5".
    Added simpler macro "setup_qt()" in FindBootstrap.cmake.
* Change: No longer need to include <QGtkStyle> is is choosen by default
    according to the current desktop environment.
* Change: In <hurricane>, In HApplication, launch ExceptionWidget when
    a std::exception is catched instead of silently discarting it.

New placer Tool: Etesian
* New: <etesian> analytical placer. Encapsulate Coloquinte from
   Gabriel Gouvine.
* New: in <documentation>, add stub demonstration ToolEngine <smurf>.
   Needs to be commented.

Miscellaneous:
* New: in <boostrap> and <unicorn>, added support for Etesian, the new
    analytic placer. The tool itself will be added in the next commit.
* Bug: in <CellWidget>, when shifting the display buffer, we no longer
    can copy the buffer on itself (we should never have). Now go through
    a temporary one (PlaneId::AutoCopy) which is added to the
    DrawingPlanes. Affect "goLeft()" and "goUp()".
* Bug: In <CellWidget>, remove the WA_PaintOnScreen flag/attribute.
    When it's on, no PaintEvent is transmitted to the CellWidget
    when it's the central widget of the <CellViewer> (QMainWindow).
    It's something I still don't understand from the doc of Qt.
* Change: In <AreaCommand>, use the PlaneId enumeration instead of a
    anonymous numerical index.
* Change: In <HApplication>, no longer catch and silently discard
    standartd exceptions but launch the ExceptionWidget...
    Suppress the now deprecated constructor with "Type" argument.
* Change: In <SelectionModel>, the "reset()" method is deprecated in
    Qt5, instead enclose the "clear()" by a "beginResetModel()" and
    "endResetModel()" pair.
* New: In <crlcore>, add support for ISPD05 benchmarks (in Bookshelf
    format). Forked from ISPD04 and not finished yet.
* Change: In <Mauka>, distinguish the Action string identifier from
    <Etesian>
* New: In <unicorn>, add entry for ISPD05 loader. Add entry for
    <Etesian> analytic placer.
2014-03-22 11:50:36 +01:00
Jean-Paul Chaput f6ab7b87f0 Compliance with g++ 4.8.1, support for devtoolset-2
Details:
* New: in <bootstrap>: add support for devtoolset-2 in ccb. Run the
    cmake commands through 'scl', set shell environment variables
    BOOST_INCLUDEDIR & BOOST_LIBRARYDIR and disable the default
    system path search.
* Change: In various flex scanners add the %nounput to suppress
    compiler warnings.
* Change: Little cleanup for g++ 4.8.1 as it's more strict.
* Change: In various top CMakeLists.txt, suppress extraneous '/'
    after DESTDIR.
2014-03-15 10:47:37 +01:00
Jean-Paul Chaput c0b999241f Re-added support for Chams & CMake support for Git hash retreival.
Details:
* Change, in build.conf: re-added support for the newly migrated Chams
    project.
* Bug, in bootstrap/../Project.py: the tool by tool compilation was
    not working. Now it does (argument "--tool").
* New, in boostrap/../cmake_modules: support for retreiving the Git
    hash number (SHA1). Borrowed on the net from (kudos):
      Ryan Pavlik <rpavlik@iastate.edu>
2014-03-02 11:45:42 +01:00
Jean-Paul Chaput 34e0edfd61 Cleanup after SVN importation, <ccb> builder script adaptation.
Project hierarchy reorganisation:
* With svn, we were doing a tool by tool checkout, suppressing the
  whole repository hierarchy level.
* The tools were also grouped, inside one repository, into multiple
  projects (<bootstrap>, <vlsisapd>, <coriolis>).
* We do not want to split up each tool into a separate repository,
  given their tight integration (except for vlsisapd).
* We choose to simplify, and consider all tools in a svn repository
  one project. Due to the way Git clone repositories, the directory
  containing the project is now to be seen under "src/".

CMake modifications:
* Now that the <vlsisapd> and <bootstrap> projects are merged into
  coriolis, modificate the top CMakeLists.txt of each tool to uses
  only Coriolis (and bootstrap hard wired).

CCB compile script modifications:
* Uses the new source tree hierarchy, with the project directory
  inserted.
* Remove (comment) all parts relateds to svn managment.
* Git is sufficiently simple so that we do not want to integrate
  command shortcut into the script.

SVN cleanup:
* Remove the obsolete <chamsin> tool, that has become the full fledged
  <chams> project long time ago.
2014-02-26 18:24:41 +01:00
Jean-Paul Chaput 9965b34e9b Remove the transient support for Kite3 & Katabatic3. 2013-12-04 02:11:21 +00:00
Jean-Paul Chaput 3daf4d6ac2 * ./vlsisapd:
- New: Detection support for Qwt.
2012-12-28 13:39:15 +00:00
Jean-Paul Chaput 80a6e55c27 Forgot this one, for FreeBSD. 2012-12-03 08:38:59 +00:00
Jean-Paul Chaput 64e4d7f259 * All Tools:
- New: Added FreeBSD/Ubuntu patches from Otacilio De Araujo
       (<otaciliodearaujo@gmail.com>).
2012-12-03 08:20:18 +00:00
Jean-Paul Chaput 8db2fd8ef6 * ./bootstrap:
- Bug: In ./cmake_modules/FindBootstrap.cmake, fix small message display
        typos. No 'IN LISTS' in forach call. Force variable lookup in
        SEARCH_SETUP_DIR in foreach summarizing the search path.
2012-03-08 10:29:27 +00:00
Damien Dupuis 8bb398b88f Adding definition so compilation always use version 2 of boost/filesystem (and not v3 because our code is not compliant) 2011-08-22 08:40:46 +00:00
The Coriolis Project c2d8a58124 Added support for SL 6. 2011-06-28 10:49:59 +00:00
Damien Dupuis 18aadd65c5 Adding new SETUP_SVNH macro to generate svn.h file for a specific project 2011-05-17 12:29:28 +00:00
Jean-Paul Chaput d13d4832e7 * ./bootstrap:
- New: "debian" directory holding the paraphernalia needed to create a
        Debian/Ubuntu package.
    - New: In buildCoriolis, add a Debian packaging method.
    - Change: In coriolis2.spec, the build/install procedure now makes uses of
        the top-level Makefile.
    - Change: In FindBoostrap, detection of the distribution type. Finally not
        needed but kept here, just in case. Based on "lsb_release".
    - Change: In FindPythonSitePackages, simplificate the detection of the Python
        site-package directory. No longer on-the-fly generate a python script.
2011-02-02 10:40:25 +00:00
Jean-Paul Chaput 048841ef07 * ./vlsisapd/src/bootstrap:
- New: coriolisEnv.py, little helper script to setup the environment.
    - New: Icon & desktop entry for Linux (doesn't work yet).
    - Bug: In FindLEFDEF, uses LIB_SUFFIX to find libraries on 64 bits systems.
2010-08-25 11:57:11 +00:00
Jean-Paul Chaput d3cc60a4ab * ./vlsisapd/src/bootstrap:
- Change: FindLEFDEF moved here from crlcore.
    - Change: In FindLEFDEF, when LEF/DEF is not found sets the include and
        library pathes to the empty chain "" instead of NOTFOUND which prevents
        usage in derived CMakeLists.
2010-08-18 20:34:47 +00:00
Sophie Belloeil f76755d803 No more setup_apple macro 2010-07-21 13:03:36 +00:00
Jean-Paul Chaput 6ca9f496c1 * All Tools:
- Change: Using more Bootstrap macros. Simpler way of setting the
        CMAKE_MODULE_PATH.
2010-07-15 14:09:16 +00:00
Jean-Paul Chaput 42df785cb4 Print boost libraries one per line. 2010-07-15 12:33:45 +00:00
Jean-Paul Chaput 0258a0fd90 * All Tools:
- Change: Switch from "goodies" to "bootstrap".
2010-07-14 19:50:21 +00:00
Jean-Paul Chaput 3f4c4be8de All tools: using the new Goodies macro.
Suppress loops in Hurricane libraries.
2010-07-13 16:25:15 +00:00
Jean-Paul Chaput b3f693c754 UNSTABLE DO NOT UPDATE 2010-07-13 11:02:11 +00:00
Jean-Paul Chaput 48b782d6a8 UNSTABLE VERSION DO NOT UPDATE 2010-07-13 10:43:20 +00:00