Commit Graph

42 Commits

Author SHA1 Message Date
Jean-Paul Chaput 0efe75af00 Implementation of DataBase native save/restore in JSON (step 3).
* Test: post-receive hook on server should send mail [1].
* New: In VLSISAPD, in Parameter, callback have now a tag, which the
    pointer to the caller. This allow for the callback removal when
    the caller is destroyed.
* New: In VLSISAPD, in WidgetDescription, when associated to a parameter,
    the destructor must remove the associated callback function on
    the Parameter.
* New: In Hurricane, added JSON support for Configuration, separated
    from vlsisapd, as the support is not available at this point.
    JSON support for Configuration, Parameter & LayoutDescription.
* Change: In Hurricane, in JsonStack, the stack of JsonObjects has been
    displaced here from HurricaneHandler. This way, all
    JsonObject::toData() can access the JsonOjects in the context
    of the parser.
* New: In Hurricane, in DBo::toJson() added support for Entity by
    reference (ids).
* New: In Hurricane, added JSON support for all Layer sub-class types.
* New: In Hurricane, in Technology, export the Layers, but must be
   sorted by increasing mask value.
* New: In Hurricane, in Entity, added support for Entity by reference (ids).
* New: In Hurricane, in DataBase, added technology full support.
* New: In Hurricane, In JsonNet, move the ring rebuild management from
    JsonStack to JsonNet.
* New: In Hurricane, added JSON support for NetAlias, NetExternalcomponents
    (not cleanly implemented as a Relation).
* New: In Hurricane, new method Cell::fromJson() to load a cell from
    a JSON file.
* New: In Hurricane, In Graphics, make it an observable, for when JSON
    fully reload the graphic state, it must be able to notify other
    objects (namely the Controller).
* New: In Hurricane, in ControllerWidget, observe the Graphics to regenerate
    the palette as needed. New method ControllerTab::graphicsUpdated().
* New: In Hurricane, in RawDrawingStyle added a destructor to release the
    Qt pen/brush. Added JSON support for HSVr, DrawingStyle, DrawingGroup,
    & DisplayStyle.
* New: In Hurricane, in GraphicsWidget, rewrite correctly the readGraphics()
    to erase the previous widgets and re-create the new ones.
* New: In Hurricane, in PaletteWidget, correct re-creation of the layout/widgets
    in case of Graphics change.
* New: In CRL Core, in System, register the parameters callbacks with
    the address of the object, for later deletion.
* New: In CRL Core, in AllianceFramework, make it observable, to notify
    library changes. For the AllianceFramework creation, now allow to
    completly bypass the Python initialization system, when we expect
    to restore it from a full blob. Added methods to sets the default
    RoutingGauge & CellGauge.
* New: In CRL Core, added JSON suppport for CellGauge, RoutingLayerGauge
    & RoutingGauge.
* New: In CRL Core, in LibraryManager, oberver AllianceFramework, to update
    the list of libraries in case of change (for JSON full reload).
2016-02-21 11:02:50 +01:00
Jean-Paul Chaput 1b7bd9de36 Happy new year 2016! 2016-01-21 00:41:19 +01:00
Jean-Paul Chaput a2d4f01ca3 New Library Manager Widget. Access with Tools menu or CTRL+M.
* New: In CRL Core, created a LibraryManager widget. It provides a
    composite information based on what is present, for each
    Alliance library:
    1. - A Cell in memory, without Catalog::State.
    2. - A Catalog::State, with or whithout the Cell in memory.
    3. - The files of the Cell in the librariy's directory.
    4. - A file with a format referenced for one of the importers.
      File type recognition is based *only* on the file extension,
    so it may easily confused. Be careful about what you put in
    the library's directory.
      One of the big limitation is that it will not display Hurricane
    libraries that do not have the AllianceLibrary extension.
      This widget is put in a separate library <libmanager>, included
    in the default CRLCORE_LIBRARIES.
* Change: In CRL Core, in State (through the loader), now sets the
    InMemory flag (event if nobody uses it yet...). Display it in
    the state _getString().
      In AllianceFramework, new getAllianceLibraries() method.
      In CatalogExtension, make the static method "get()" publicly
    accessible, for sometimes we want the whole State.
* Bug: In vlsisapd, in Path, the pathcache was not rebuild when it
    should, leading to incorrect results.
* New: In vlsisapd, in Path, added a listdir() method to access the
    contents of a directory and a stat() method to poll the status
    of a file/directory.
      Rename the ".string()" method in ".toString()" to avoid
    tricky name resolution with std::string, refactor in all the
    other tools.
* Change: In Hurricane, in Controller, no longer oversize the fonts
    of the table's headers.
* New: In Unicorn, in UnicornGui, integrate LibraryManager.
2015-05-09 17:03:17 +02: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 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 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 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 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 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 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 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
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
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
Jean-Paul Chaput f5cedcdece * <All Tools>/CMakeLists.txt:
- Change: Added versioning to library.
2011-02-02 22:48:30 +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 ec979ff2b8 Need to to take into account the new signals confOk() and needRestart() 2010-10-14 09:32:53 +00:00
Jean-Paul Chaput dbb56bbc50 Forgot to comment out debug lines. 2010-10-14 09:23:21 +00:00
Jean-Paul Chaput 0cd5cc498d * ./vslsisapd/src/configuration:
- Change: In ConfigurationWidget, two separate signals for "confOk" and
        "needRestart", rewrite of the "apply clicked" method.
    - Bug: In LogEntry::restore(), uses correct flags on Paramater::setString().
2010-10-14 09:02:24 +00:00
Jean-Paul Chaput 45f9dcc394 * ./vslsisapd/src/configuration:
- Change: Internal rewrite of the check function, now named _doChange()
        and shared by all mutators.
    - Change: Logs now contains entries with the last correct value and are
        able to restore that value.
    - Change: LogWidget simplificated, only one message label. But now two
        buttons (Continue/Cancel).
    - Change: In ConfigurationWidget, two steps validation "mustExist" then
        "needRestart".
2010-10-13 21:44:50 +00:00
Jean-Paul Chaput 446ccd6d58 Discouple "clicked()" signal from apply button to close
of the standalone dialog.
2010-10-08 09:43:26 +00:00
Damien Dupuis 4dddfbba98 Adding statustip on button in configurationWidget and save button also save in memory 2010-10-08 08:37:42 +00:00
Damien Dupuis 4b62ea91d2 Missing Boost_LIBRARIES in target_link_libraries for libconfiguration (do not compile on mac osx if missing) 2010-10-08 08:36:19 +00:00
Jean-Paul Chaput 9f0fb0b467 * ./vslsisapd/src/configuration:
- New: Attributes "needRestart", "mustExist", "isFile" and "isPath".
    - New: Display a warning message when a parameter with mustExist or
        needRestart is modificated.
    - New: In ConfigurationWidget, method selectTab() to select the current
        displayed tab.
    - Change: In Configuration::writeToFile() and writeToStream(), adds a
        third parameter telling which parameter to save. It's a semicolon
        separated list of parameter head id. Example: "kite;mauka".
2010-10-06 22:03:35 +00:00
Damien Dupuis 1155d95365 Bug correction on mac osx :
based on libxml2 documentation : xmlCleanupParser() function must not be called several times
2010-09-21 09:58:53 +00:00
Damien Dupuis 136e5e90c7 Adding new ConfigurationDialog widget (QDialog) and buildDialog method on configuration.
This is very useful when using configuration as a standalone widget
2010-09-20 10:48:13 +00:00
Jean-Paul Chaput 1a33586cf9 * ./vslsisapd/src/configuration:
- Bug: In FilePathEdit, do not sets the file/path if the Dialog has been
        cancelled.
    - Bug: In FilePathEdit, do not uses the native dialog (called by static
        methods) when under Linux/GtkStyle as the native widget seems to be
        badly linked (bug in GtkStyle?).
2010-09-16 20:41:39 +00:00
Jean-Paul Chaput 1c572fe188 * ./vslsisapd/src/configuration:
- Bug: In Configuration parser XML zero status indicate no errors...
2010-09-16 14:43:41 +00:00
Jean-Paul Chaput 7b1fd28df0 * ./vslsisapd/src/configuration:
- New: Integrate the FilePathEdit widget, courtesy of D. Dupuis.
    - Bug: In ConfEditorMain, new boolean switch to allow disable of GtkStyle
        which make FilePathEdit to coredump (Linux feature only!).
2010-09-16 13:26:36 +00:00
Jean-Paul Chaput c5427574a8 * ./vslsisapd/src/configuration:
- New: In Configuration, write methods are ables to completly drive the
        XML file (values & layout), selectable through flags.
    - New: In ConfigurationWidget, the Apply button is now outside the
        tabs. Also adds two modes: Embedded & StandAlone with different sets
        of buttons.
2010-09-15 21:46:42 +00:00
Jean-Paul Chaput 32c864b996 * ./vlsisapd/src/configuration:
- Bug: In Configuration::writeToStream(), percentage parameters values where
        incorrectly written (divideds by 100).
    - Bug: In ConfEditorMain, read the "dot" configuration file *after* the
        system one.
2010-07-30 16:39:57 +00:00
Jean-Paul Chaput 73fa2f5f7c * All Main Python Modules:
- Change: New problem identified with the Python modules: each module seems
        to be built as a complete binary, so all the static C++ initializers are
        allocated in each module. In particular the C++ tree inheritance is built
        for *each* module so we cannot longer uses the typeid() comparisons
        across modules... It was used by boost::program_options to perform is
        casts with boost::any and was starting throwing exceptions because of
        bad casts. program_option was first initialized in "configuration"
        first included by PyViewer then in PyCRL (see Utilities.cpp).
          A first solution is to re-order the import of Python modules in
        stratus1/st_model so that CRL is imported first.
          The second is to not not link "configuration" with boost::program_option
        as only the binary vlsisapd-conf-editor needs it.
          That is a serious problem of which we must be aware and can cause further
        strange behaviors.
          Debug code used to diagnostic has been kept commented in the sources a
        it may be needed again :-(
          This behavior do not affect our singletons because they are part of
        dynamic libraries that seems to be correctly shared between the various
        Python modules.

  * ./vlsisapd:
    - Change: In Configuration CMakeLists.txt, add Boost_LIBRARIES only on the
        target_link_libraries() of the binary, not the libraries, as they are
        not needed there and cause later trouble.
2010-07-17 10:30:35 +00:00
Damien Dupuis 4d9b6b465c Readd the TARGET_LINK_LIBRARIES command in Cmake files (to compile on macosx) 2010-07-07 13:49:20 +00:00
Jean-Paul Chaput ff826d31cf * All tools:
- Library linking: there must not be "target_link_library()" for libraries,
        only when building binaries. Avoid clashes between static module
        or class variables, and strange reinitialisation of those variables.
    - Change: Boost is now always linked staticly.
2010-07-01 11:59:35 +00:00
Jean-Paul Chaput 132ec33599 * ./vlsisapd/configuration:
- Shoot some g++ warnings...
2010-06-25 08:49:05 +00:00
Jean-Paul Chaput 82fe4c2348 * ./vlsisapd/configuration:
- New: More thorough type checking of parameter's type while setting/
        getting.
    - New: In Parameter, callback mechanism (trimmed down Observer pattern)
        to uses whenever Qt signal/slots are not used. This is needed to
        maintain data coherency througout the software.
2010-06-22 14:06:33 +00:00
Jean-Paul Chaput 8d46e014ab * ./vlsisapd:
- New: Generic XML configuration parser "Configuration", comes with a
        little editor "vlsisapd-conf-editor" (temporary name).
2010-06-18 14:12:42 +00:00