- 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.
- 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.
- 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.
- remove callOrder member on Operator
- add order on Instance (to order Devices and Subcircuits)
- update python interface
- update C++/Python parse/drive examples
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
- 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...
* 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.
* 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.
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)
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
- 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.
- 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().
- 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".
- 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".
- 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?).
- 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!).
- 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.