Commit Graph

115 Commits

Author SHA1 Message Date
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 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 a2ba6c2904 Support for Windows/Cygwin, part 3.
* Change: In CRL Core/Cyclop, Hurricane/PyHApplication and vlsisapd/ConfEditorMain,
    disable the use of GtkStyle under Cygwin.
2014-07-23 16:53:43 +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 e364edca52 Take account of fixed placement in Bookshelf & Ispd 05 parser. 2014-05-07 23:12:37 +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 fee45ef117 Qt5 porting, cleanup & Tidy.
Cleanup:
* Cleanup: In <vlsisapd/src/bookshelf>, remove unused file Bookshelf.cpp
    (may have been a parser once upon a time).
* Cleanup: In <hurricane>, in Cell::flattenNets() use flags instead of
    booleans to be more readable. Allow occurrence placement checking.
* New: In <crlcore> add Python wrapper for the Ispd05 loader.
* New: In <unicorn> add option for direct loading of ISPD05 designs.
* Bug: In <hurricane/src/viewer>, RecordModel must emit
    layoutAboutToBeChanged() before changing the record contents (and
    layoutChanged() afterwards).
2014-03-26 14:47:17 +01:00
Jean-Paul Chaput 9501b88110 First barebone implementation of Etesian. Support for ISPD05 benchmark.
Details:
* New: In <vlsispad/utilities>, new objet Dots for displaying a kind
    of progress bar.
* Change: In <vlsisapd/bookshelf>, keywords are now case-insensitive.
    Added a "strict syntax" option (to be disabled for ISPD05).
* New: First working implementation of Etesian, at least for ISPD05
    "bigblue1".
* Change: In <hurricane>, in Cell::flattenNets(), no longer display
    a warning if an instance is unplaced, this does not make sense
    when the circuit is not placed.
* New: In <crlcore>, Added translator for ISPD05 bookshelf, the
    circuit is *not* placed, unlike in ISPD04 and terminal nodes
    *are* true cells.
* New: In <unicorn>, added entry in import cell for ISPD05 benchmarks.
2014-03-25 00:59:12 +01: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 21215595a5 Missing cstdlib include for getenv(). 2013-04-27 17:13:21 +00:00
Jean-Paul Chaput 563816a700 The std::ofstream::open() do not take string as argument but char*
under MacOS at least.
2013-04-22 21:43:06 +00:00
Jean-Paul Chaput 9a12f43e6b * ./vlsisapd/src/utilities:
- New: Path module to provide a ligthweight alternative to boost::filesystem.
        The compatibility change in boost was giving more and more touble and was
        not worth it. Path is aimed to provides the same services, but with a
        better portability.
2013-04-21 15:35:11 +00:00
Jean-Paul Chaput 793a198a55 * ./vlsisapd/src/openChams:
- Change: In Circuit, added some debug information, kept commented for now.
        Uncomment only when accurate tracing information is needed.
2012-12-14 14:39:15 +00:00
Jean-Paul Chaput 7026761a2b * All Tools:
- New: Added FreeBSD/Ubuntu patches from Otacilio De Araujo
       (<otaciliodearaujo@gmail.com>).

  * ./vlsisapd:
    - Change: Cosmetics in headers license.
2012-12-03 08:21:48 +00:00
Jean-Paul Chaput 47dc198d9f * ./vlsisapd/src/openChams:
- Bug: DO NOT USES REFEENCES IN OBJECT ATTRIBUTES STRING:
          const std::string& _name;
        Cannot believe I've done that. Instead:
          std::string  _name;
2012-11-17 15:01:23 +00:00
Jean-Paul Chaput df2eaec70f * All Tools:
- A complete sweep of cleanup to suppress allmost all compiler warnings.

  * ./vlsisapd/openchams:
    - Change: Completly remove Name as std::string are shared. Also impact
        amsCore (OpenChamsParser/OpenChamsDriver).

  * ./vlsisapd/configuration:
    - Bug: Python.h must be included first (see Isobar comment).
    - Change: New "readFromFile()" Configuration method.
2012-11-16 12:47:32 +00:00
Jean-Paul Chaput 5c593f4161 * ./vlsisapd/dtr:
- Change: Completly remove Name as std::string are shared, in library,
        boost::python, doxygen documentation & examples.
2012-03-26 15:39:08 +00:00
Jean-Paul Chaput 4c876122d1 * ./vlsisapd/openChams:
- In Circuit: Forgot to lower in stringAsBool().
2012-03-22 16:16:34 +00:00
Jean-Paul Chaput e7011ad480 * ./vlsisapd/openChams:
- Change: In Parameters, suppress the two separate maps, one for double
        and another for string (equations). We shouldn't suppose what kind
        of data an user can put in the parameter's value. Now that the
        parameters for the HB-Tree are to be integrated, we have not only
        double but boolean, integers and a direction string. The value are
        now stored in a raw fashion as strings. It is up to the parser/drivers
        (i.e OpenChamsParser/OpenChamsDriver) to give meaning to those strings
        and interpret them accordingly.
    - Change: In Circuit, helper templates (and some non-template) functions
        to cast a string into various types. All the POD through stringAs<>
        template, plus stringAsDirection() & stringAsBool(). Reverse functions
        templates asString<> are also avalaible.
        Note: Those helpers are of more general interest, we should displace
              them sooner or later into a common "Utility" sub-tool.
2012-03-22 14:37:22 +00:00
Farakh Javid 64ae150d5e Added classes to handle equations (HighLevelCstr, DDP, DesignerCstrOC, NRCCstr), all child of Equation.
Modified openChams parser and driver to take into account these classes.
2011-11-08 17:59:52 +00:00
The Coriolis Project 29020a93f2 Forgot the std:: 2011-09-29 09:49:18 +00:00
The Coriolis Project 613e1d41a9 Addnig missing <fstream> include 2011-09-29 09:40:50 +00:00
Damien Dupuis c6ab2d5ed8 - New support for <hbtree> section in <layout> section used to describe relative placement with constraints
- Examples (c++/python parse/drive) have been updated

    TODO: test under linux / write corresponding documentation
2011-09-14 08:13:46 +00:00
Damien Dupuis 631d636d2c In OpenChams parser / driver :
- remove callOrder member on Operator
    - add order on Instance (to order Devices and Subcircuits)
    - update python interface
    - update C++/Python parse/drive examples
2011-07-21 09:20:20 +00:00
Damien Dupuis 4120451990 Adding subckt addComment method to describe interface 2011-05-16 12:36:11 +00:00
Damien Dupuis d8e82643e6 Adding Boost::Python wrapping 2011-05-10 14:25:49 +00:00
Damien Dupuis 6476d1492c Several changes to correctly parse & drive current spice example. 2011-05-10 11:09:56 +00:00
Damien Dupuis 2f17ce7b37 Adding spice parser/driver (only database right now, examples code will follow)
Supported grammar is :
    .INCLUDE
    .LIB
    .PARAM
    .OPTION
    .SUBCKT
    Xxxx
    Rxxx
    Cxxx
    Ixxx
    Vxxx

    Mxxx and Dxxx are on the todo list
2011-05-06 09:21:01 +00:00
Damien Dupuis 66d376fecc The correction commited yesterday is not a good solution : we're going to explore why link fails on 64bits
Minor warning correction at compilation (no virtual destructor in DTR::Rule)
2011-04-12 08:33:44 +00:00
The Coriolis Project 9996064f13 In order to compile on sl5 64 bits : we need to suppress libboost_python from Boost_LIBRARIES !
(I don't get why it perfectly works on sl5 32 bits and mac osx)
2011-04-11 14:24:37 +00:00
Damien Dupuis d89ebe3b4e OpenChams:
symmetry becomes orientation and now supports symmetries AND rotations.
  
  There are 8 possible orientations:
    ID  (identity)
    R1 (rotate 90° Counter Clock wise)
    R2 (symX and symY)
    R3 (rotate 90° Clock Wise)
    MX (symX)
    XR (symX then rotate 90° Counter Clock Wise)
    MY (symY)
    YR (symY then rotate 90° Counter Clock Wise)

These orientations exactly copy Hurricane::Transformation::Orientation
2011-03-10 10:42:30 +00:00
Jean-Paul Chaput 9f8de0144d Forgot this one. 2011-02-25 09:14:54 +00:00
Jean-Paul Chaput 86d5f4e94f Bug: Now should read detect correctly needrestart/mustexist. 2011-02-24 15:37:50 +00:00
Jean-Paul Chaput 61328d9c4c * ./vlsisapd:
- New: In TabDescription, add an "id" field, to be used for filtering
        by the file drivers.
    - New: in LayoutDescription::writeToStream(), adds a filtering over
        the tabs id (same fonctionality as for the parameters).
    - New: PyConfiguration extension, build using boost::python.
        Not finished yet.
    - Bug: In LayoutDescription::buildWidget(), when the parameter associated
        to a widget is not found, to not try to adds it. Print a nice error
        message and do not core dump...
2011-02-22 13:31:47 +00:00
Damien Dupuis 360e8d5348 Adding support for Port and Wire objects in openChams paser / driver.
Examples have been (partially) updated.
2011-02-15 13:57:39 +00:00
The Coriolis Project 7abcd87d96 PYTHON libraries missing for linking.
lineno not renamed in scanner.
2011-02-09 16:42:59 +00:00
Jean-Paul Chaput f5cedcdece * <All Tools>/CMakeLists.txt:
- Change: Added versioning to library.
2011-02-02 22:48:30 +00:00
Damien Dupuis ec97d7f369 Thanks to the help of Jean-Paul may python installation is alive !
- Updated Boost.Python port for OpenChams

  - Updated drive & aprse examples in Python
2010-11-22 14:44:17 +00:00
Damien Dupuis 5887a0b59f !! Adding support for subCircuits !!!
* New <subCircuitsPathes> section in <circuit> that lists the pathes that contain subCircuits xml files

    * New Device object that inherits from simplified Instance object.
        - Instance has a name, a model, some connectors and optionnal parameters
        - Device has the same attributes plus mosType, sourceBulkConnected and transistors

    * Updated readFromFile and wrtieToFile methods to support these modifications

    * Updated parse and drive examples to support these modifications
        - Note: only C++ examples has been updated since my boost.python environment is actually totaly broken

    * New buffer.xml example that uses subCircuits.
2010-11-22 10:21:52 +00:00
Damien Dupuis 3c2062bdd0 Version property for tehcnology tag is not mandatory. 2010-11-18 15:13:56 +00:00
Damien Dupuis 48407432c9 New version attribute in Techno object (it is parsed and drived)
Recently adds have been adjusted in PyDtr.py

    Examples have been updated (c++ is tested, python fails on my Mac due to a strange python2.6.6 behavior I have to check this)
2010-11-17 15:09:59 +00:00
Damien Dupuis 9e5b5226d9 Adding setName & setUnit methods on Techno object.
getRule method of Techno does not throw exception anymore if rule is not found : a NULL Rule* is returned instead.

    but getValue methods throw exception if rule is not found
2010-11-16 15:33:42 +00:00
Jean-Paul Chaput a9d0783026 * ./vslsisapd/src/configuration:
- New: In Parameter, adds a priority for all the mutators method calls.
        Allows to sets values according to where they came from instead of
        only taking the last change. This is needed because we cannot ensure
        that the last sets value is the truly wanted one. Four priorities
        are avalaibles (in increasing order):
          1. - ApplicationBuiltin (the default).
          2. - ConfigurationFile  (currently: the XML parser).
          3. - CommandLine        (supplied by the command line, see Unicorn).
          4. - Interactive        (changed through ConfigurationWidget).
    - New: In ConfigurationWidget, hideTabs()/showTabs() to explicitly select
        which tabs are displayeds or hidden. Two modes are avalaibles:
        Incremental and Exact. In Exact mode only hidden tabs are hiddens and
        only shown tabs are shown.
    - Change: In ConfigurationWidget/ConfTabWidget/ParameterWidget, no longer
        relies on the Widget parent/child tree to find the ConfigurationWidget
        from a ParameterWidget (consequence of the hide/show capability which
        is implemented by cutting off hidden tabs). Adds an explicit attribute.
2010-11-16 13:51:14 +00:00
Damien Dupuis 7506bae16e Adding support for unspecified values (saving NaN)
Adding setValue && setRef methods on Rules

    writeToFile method now produce an easy to read file thanks to iomanip.stw() method
2010-11-16 11:24:26 +00:00
Sophie Belloeil 578877d8d7 VlsiSAPD is now G++ version 4.4 compliant ! 2010-11-02 11:02:44 +00:00
Damien Dupuis ab4be8a22b As Farakh asked me : Operator name is now always converted to upper case before save. 2010-10-28 20:56:08 +00:00
Sophie Belloeil 81d4d455bd - Improvment of parsing examples with examples of maps and vectors.
- No more pprint method in Python, now __repr__method encapsuling new c++ method getString.
2010-10-15 11:13:53 +00:00