- 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.
- New: A Bookshelf autonomic parser/driver. Made to parse and manipulate
the ISPD04 benchmarks (ibm 01-18 series). Currently parses/drives
.nodes, .nets, .scl, .pl, the .wts is not implemented yet.
- 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.
- 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.
Since in CMakeLists.txt there is already a module target (for c++ library) and some file systems are not case sensitive, the target is still pyMODULE but the OUTPUT_NAME property is set to MODULE
I've updated all the example python scripts.
system component does not exist in boost 1.33
!!!!! Merci de ne commiter AUCUN changement dans vlsisapd tant que Jean-Paul et moi n'avons pas résolu les problèmes de bibliothèques statiques !!!!!!
undefined reference to `boost::system::get_system_category()'
symptoms that boost_system was not used at the linking phase
at least on my system (mac OSX leopard with apple gcc and boost 1.43.0)
solution: add the dependency
when defining rule<minSpacing, nWell, active>
and then rule<minSpacing, nWell>
in technology file
the first rule was ever return even if techno.getRule(minSpacing, nWell) was called.
JP need to check if it the 'static variable bug' still occurs
Note that in openChams I added SimulModel support, it has not yet been tested, and driver does not support it.
- 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.
- 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.
* agds :
- all agds object now belong to AGDS namespace
- 'Gds' has been removed from all filenames
* cif
- all cif objects now belong to CIF namespace
- 'Cif' has been removed from all filenames
* dtr
- minor modifications in CMakeLists.txt since Boost Python is now used by other driver & parser
ADDS
* agds :
- new python module
* cif
- new python module
* doc
- brand new doxygen documentation with
global presentation
cif format (driver)
agds format (driver)
links & contacts
* examples
- examples files in C++ and Python for cif & agds drivers (others will follow)
- access to Sizing object in Circuit object (method getSizing())
- now driver is deterministic since it sorts names in alphabetical order (cannot use name's id since names are destroyed when converted to hurricane and then recreated before drive but with totaly unknow/uncontroled ids)
- Change: adopt a tree layout compliant with the UNIX FHS.
* includes under TOP/include/coriolis2.
* shared datas under TOP/shared/coriolis2.
* docs under TOP/share/doc/coriolis2.
* configuration under TOP/etc/coriolis2
* ./crlcore:
- Change: In Environment, comply to the new tree layout, search configuration
files under TOP/etc/coriolis2/.
* ./knik:
- Change: In flute, comply to the new tree layout, get the "POW*.dat" files
from TOP/share/coriolis2/flute-2.4.
libraries gets installed in "lib64" instead of "lib".
buildCoriolis.py sets automatically LIB_SUFFIX for cmake.
coriolis2.spec modificated to uses lib64 on 64 bits.
- Change: In the CMakeLists.txt, in all the install commands remove all
the leading "/" as they prevents the CMAKE_INSTALL_PREFIX to be took
into account. It was nevertheless working because buildCoriolis.py was
using DESTDIR which is prepended anyway.
* ./goodies:
- Change: In buildCoriolis.py, no longer uses the DESTDIR but instead
CMAKE_INSTALL_PREFIX.
Name, Rule, Arule and Techno objects has been ported, so it is possible to read a dtr xml file from disk to get a techno and then rules' values.
DTRException object still need to be ported.
Since there is a new project that need to parse DTR xml file we've decided to set a standalone parser.
This parser will be extended with a python API (I'm gonna have a look at boost ^^)
- Change: <PROJECT>_SEARCH_PATH are put back into the *first* tool of
a project.
- Bug: In HURRICANE_CHECK_MACRO(), the quiet flag was not correctly
implemented. User ARGV instead of argv (case sensitivity!).
- Change: New structure for the installation & CMake system.
* Tools are now grouped in "projects". There are three projects:
1. - IO: Standalones parsers/drivers (IO_USER_TOP, IO_TOP).
2. - Coriolis: Base & digital tools (CORIOLIS_USER_TOP, CORIOLIS_TOP).
3. - Chams: Analogic tools (CHAMS_USER_TOP, CHAMS_TOP).
Each *project* has a two "TOP" environement variables, for
example: IO_TOP and IO_USER_TOP. Thoses variables are the only
ones useds to locate the tool (CMake modules, headers & libraries).
The local path always takes precedence over the global one.
The localisation process occurs in each tool top CMakeLists.txt
where the macro SETUP_PROJECT_PATH is to be defined. There is no
way to put it in a shared includes file as it's the macro precisely
used to locates the includes... You have to call the macro once for
each project you wants to uses:
SETUP_PROJECT_PATHS(IO)
SETUP_PROJECT_PATHS(CORIOLIS)
* In FindTOOL.cmake, supress the <TOOL>_DIR_SEARCH and uses the
<PROJECT>_DIR_SEARCH instead (example: CORIOLIS_DIR_SEARCH).
* buildCoriolis.py modificated according to the new "TOP" scheme.
- OpenChamsException to cleanly throw errors (and not cerr -_-)
- New Schematic object to parse&drive schematic section in xml file
- Lots of checks on node properties
CHANGES:
- directly returns reference on objects' maps/vectors to skim through them (instead of begin/end iterators)