* New: In CRL Core, etc/cmos/kite.conf new routing gauge "sxlib-2M" for
two metals only technologies.
* New: In CRL Core, python/helpers/kite.py, new parameter to set the
routing gauge to be used: "kite.routingGauge" (default: "sxlib").
* Change: In CRL/AllianceFramework.cpp, forgot to put the Cell gauges
and RoutingGauges in the object Records (Inspector).
* New: In pyCRL/PyAllianceFramework.cpp, export the setRoutingGauge()
function.
* New: In CRL.python.helpers, all methods make use of the quiet mode to
allow completly silent initialisation.
Introduce isderived() function to check the derivation relationship
of two C++ encapsulated classes by Isobar. The Python isinstance do
not work, all C++ wrapped classes are of the base type 'type'.
isderived() uses the MRO mechanism (Method Resolution Order) as a
workaround. I can't find in the documentation if it's the expected
behavior or if i did miss something in when building my classes.
* Bug: In CRL.python.coriolisInit(), when it's not set, the stratus1.mappingName
configuration variable is equal to "" and *not* "not_set".
* Bug: In Etesian::EtesianEngine::toColoquinte(), followup of the previous
bug, bad FIXED/PLACED test when the AB is set.
* Change: In Hurricane, in Flags add operator overload for "int" type
and not only "unsigned int". Otherwise the compiler complaints about
ambiguous overload when using enum values which are considered as
"int".
Simpler code for the BaseFlags::contains() method.
Added implicit conversion from BaseFlags toward bool type.
* Change: In Hurricane, in Commons, complete replacement of the previous
two trace systems (trace & ltrace) by a stream-based one.
As it is a true object it is much less fragile than the one based
on defines (but maybe a little slower).
Define a reservation table for the trace levels for all the
Coriolis & Chams components.
* Change: All tools, use the new trace system.
* Change: In Bootstrap, in coriolisEnv.py no longer sets the environment
variable STRATUS_MAPPING_NAME (guessed by init).
* Change: In CRL Core, in System CTOR sets the default value for
"stratus1.mappingName" to "not_set" so the init can known it is not
set.
In etc/coriolis2/*/stratus1.conf, do not set "stratus1.mappingName".
In coriolisInit.py, now guess the value of "stratus1.mappingName"
if it has not already been set by the user. The complete setting
process is as follow (decreasing priority):
1. Setup by the user in his ".coriolis2/setting.py".
2. A "stratus.xml" file is detected in the current technological
directory (example: etc/coriolis2/65/cmos065/setting.xml).
3. Fallback value to "etc/coriolis2/stratus2sxlib.xml".
* Change: In Hurricane, in PyHurricane.h, in all DirectSet*() macros,
suppress the third parameter giving the function name. It is now
build from stringification of other parameters.
The various macros calls are also modificated all througout
Isobar.
Added PyAny_AsInt() to convert a Python Int or Long into an int.
Maybe we should manage only long, because the type difference seems
ambiguous in Python itself.
* Change: In Hurricane, in PyHurricane.h, in DirectGetBoolAttribute()
deduce the function name to display in messages from the arguments.
Idem for DirectIsAFromCStringAttribute(), DirectGetIntAttribute(),
DirectGetUIntAttribute(), DirectGetDoubleAttribute() and
DirectGetStringAttribute().
* New: In Hurricane, in PyHurricane.h, new macro DirectGetNameAttribute()
to build accessors for method returning a Name.
* New: In Hurricane, in PyHurricane.h, new macro DirectSetIntAttribute()
to build modificators taking int arguments.
* Bug: In Hurricane, in PyHurricane.h, in macro DirectSetBoolAttribute(),
the check for a boolean PyObject was wrong, leading the macro to
systematically emit a Python exception.
* Bug: In Hurricane, in PyInstance method table, PyLibrary_create() was
registered as a NOARGS function, but it *do* have arguments, change
to VARARGS.
* New: In CRL Core, in RoutingLayerGauge, adds a new parameter "obstacleDw".
It represents the distance to add from the *edge* of a blockage segment
to the next *axis* of a routing track. This was previously computed as
the pitch minus the mimimum half wire width. This works if the pitch
is *equal* to the wire width plus the minimal distance (edge to edge).
But if the wire width is less, than it leads to too great a distance
around obstacles, making them bigger than they are. And potentially
blocking everything. To summarize:
before: obstacleDw = pitch - wireWidth/2 (deduced)
after: obstacleDw = explicitly setup, usually:
pitch - max(wireWidth)/2
Modify the Alliance configuration helper and the various kite.conf
file accordingly.
* New: In Kite, in BuildPowerRails, make use of "obstacleDw" to compute
the footprint of a blockage.
* New: In Hurricane, In Net & Cell, support for Net aliases names.
Use a structure based on a simple ring of NetAliasHook. The Net
holds a global map, sorted by names of all the aliases of all Nets.
Elements NetAliasesHook of the map are slaves of ring whose master
is an attribute of the Net (it is *not* in the map, as the primary
name of the Net).
In case of merge, the aliases of both Nets are merged and the
name of the merged one become an alias.
The Cell::getNet() looks in both the Net map and the aliases to
find a Net by name.
* Bug: In CRL Core, in coriolisInit.py, reoder the loading of the
configuration files so the real technology is read as early as
possible to set up the <gridsPerLambda> factor before any lambda
is actually computed...
* Bug: In CRL Core, in AcmSigda, do not try to fed the file when it
has failed to be opened. Throw a clean exception instead.
* New: In CRL Core, in Toolbox, add a NamingScheme object to convert
a design into VHDL compliant names (mainly from Blif/Verilog).
This is extensible in any case.
* New: In CRL Core, in BlifParser, slightly more informative warning
messages. Align the loading progress information on the other
parsers.
Add a capability to select which component of the design will
be returned, if there are more than one. Use the "." as separator.
For exemple you can request "Processor.Alu", which will load
the "Alu" component from the design in "Processor.blif".
To be able to save a Blif loaded design, systematically convert
all the name for VHDL compliance, as it is the format used by
the Coriolis native files (vst).
Export the Blif parser to the Python interface.
* New: In Kite, In NegociateWindow, add a counter of the number of
remaining events. Gives an idea of the ETA...
* New: In Unicorn, in cgt.by, add an option to load a Blif design from
the command line.
* New: In Cumulus, new RSave plugin to save both netlist & layout.
Partly redundant with the previous one. Have to better organize
that later.
* Change: In CRL Core, simplify the loading sequence. The technology,
both symbolic and real is now loaded directly from coriolisInit.py
and not through the Alliance loader. This was a leftover from the
time configuration was in XML. Remove others traces of XML loading.
Remove SYMB_TECHNO_NAME, REAL_TECHNO_NAME & DISPLAY from the Alliance
environement, as they was no longer used.
Note that technology *still* need to be loader *after* Alliance
framework has been initialized.
Gauge information is moved from <alliance.conf> to <kite.conf>.
* Bug: In Coloquinte, in optimization_subproblems.cxx static variables
must not be inlined. Generate a problem when linking in debug mode
(seems the symbol gets optimised out).
* Bug: In Katabatic, in Grid::getGCell(), when the coordinate is *outside*
the area, do not try to find a GCell, directly return NULL.
* New: In Unicorn, create a generic command launcher named "coriolis" which
automatically take cares of all environement setup, then run a command
by default, it's <cgt>, but it can be anything. For example: <zsh>.
* 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.