* Bug: In CRL/etc/NODE/VENDOR/Technology.conf, the database must be configured
as early has possible so the functions ensuring length conversions can
work correctly (l(v), u(v)). So we can no longer rely on a table to be
read after the execution of the file. We perform a direct call to the
helpers.Technology.initTechno() function. And it must be made first
thing.
In all tables taking dimensions, we must use one of the converter
function helpers.l(v), helpers.u(v) or helpers.n(v) so the the value v
get converted in lambda, microns or nanometer (resp.). Make the
modifications in all technology.conf and kite.conf files.
* Change: In CRL/coriolisInit.py, remove the technoConfig variable that has
been replaced by a direct call to helpers.Technology.initTechno().
* Change: In CRL/helpers.Alliance.loadRoutingGaugesTable(), no longer try to
convert coordinates, they must already be in DbU.
* Change: In CRL/helpers.__init__.py, remove lambdaMode() and micronsMode()
they could not be made to work as expected. Create l(), u(), n() as
replacement.
* New: Hurricane::Triange as been renamed into Hurricane::Polygon.
Add support for convex polygons. Polygon are approximateds by
excess by a manhattan rectilinear polygon (with potentially
thousands of vertexes). To reduce the memory footprint,
compaction techniques reducing by at least a factor 4 has been
implemented. We could go further by only storing the non-repetitive
part of the edge (defined by the integral fraction dY/dY).
We will see, if the program slows too much.
The manhattan approximate is always computed but displayed
only if the polygon grid step is greated than 4 pixels.
The level of approximation of the polygons can be controlled
through the "DbU::_polygonStep" parameter.
* Change: In CRL/coriolisInit.py and CRL/helpers/Technology.py, regroup
all DbU related parameters into "technoConfig" (i.e. suppress
"viewerConfig"). Update all the relevant technology.conf configuration
files.
Change the loader behavior so that "technoConfig" is read first
and is now responsible for creating the Technology of the DataBase.
* New: In Hurricane::CellWidget, added support for displaying mahanttanized
polygons.
* Change: In documenation/scripts/expample/polygons.py, perform (I hope)
a comprehensive test of the polygons (check all slopes, clockwise and
conter-clockwise).
* New: In Hurricane::DbU, added template to manage vector<> of DbU.
Support for the "polygonStep" parameter.
* Change: In Hurricane::Technology, in all the layer connexity methods
(getLayers(), getMetalAbove(), getCutAbove(), getViaBetween(), ...)
the "useWorking" parameter is replaced by a more accurate "useSymbolic".
BEHAVIOR CHANGE: formerly, if a symbolic layer was requested, and
none was found, NULL was returned. Now, if the symbolic layer is not
found, we try to return the associated real one (same layer mask,
but not flagged as symbolic, and usually with a lowercase name).
All thoses changes have been propagated to Python bindings.
* Change: In Hurricane::BasicLayer and derived classes, rename the
"isWorking" attribute into "isSymbolic" (to match the technology
renaming).
* Change: In Hurricane::Cell::flattenNets(), ignore power, ground and
blockage nets for the flatten.
* Change: In CRL Core, in coriolisInit.py and Technology.py helpers,
rename the tables describing the technology as follow:
- symbolicLayersTable --> compositeLayersTable
- workingLayersTable --> symbolicLayersTable
- symbolicRulesTable --> layersExtensionsTable
This is to give the table names a more clearer semantic after
merging real technologies configurations (testbench AMS c35b4).
In particular, we need to define a composite layer for the
real VIAs, and not only the symbolic ones. And with correct
enclosures expressed in real dimensions (microns).
* Change: In CRL Core, in coriolis2/etc the file an directory structure
describing the technonolies is modified.
Before, one technology was split in two: the symbolic part that
may be shared across multiple real technology and the real technology
itself. To configure this we needed in ".coriolis2/techno.py" two
variables:
* symbolicTechnology.
* realTechnology.
After, we duplicate the symbolic technology in each real ones, so
to configure we only have to refer to one technology with the
variable:
* technology.
Pure sympolic technologies are still availables, associated with
a dummy real one.
We provides:
* 180/scn6m_deep_09 for MOSIS 180nm
* 45/freepdk_45 for FreePDK 45nm (work in progress).
* symbolic/cmos for classical Alliance symbolic.
* Change: In CRL Core python/helpers, SymbolicTechnology.py and
RealTechnology.py are now grouped under Technology.py.
* Bug: In Anabatic::singleGCell(), in some analogic design, there may be
not a single METAL1 in the GCell. Issue a clean warning instead of
going ashtray.
* Change: In CRL.etc/technology.cong & CRL.etc/display.conf, add a "metbot_r"
as a real layer when "metbot" symbolic layer is distinct from a normal
metal.
* Change: In Hurricane::Observer, simplification of the template so that
we can use it directly instead of creating a derived class with an
implementation of Observer::notify(). Now the implemenation is the
same for all and just calls a notify() method on the owner object.
Create a StaticObservable for fast access of the observers. This
is mainly a fixed size table (array<>) with oberservers at known
indexes. This way we can go from the obervable to the observer
owner in one indirect access (or so I hope).
* Change: In Hurricane::CellViewer, use the new observers.
* Change: In Hurricane::ControllerWidget, use the new observers.
* Change: In Hurricane::CellWidget, set the winidow initial size to a
more sensible 500px.
* Change: In CRL::LibraryManager, use the new observers.
* Change: In CRL::LibraryManager, use the new observers.
* Change: In CRL, in display.conf & technology.conf, modification for
the ST hcmos9gp capacitors.
* 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>.
In CRL Core configuration files, "display.conf", "patterns.conf" and
"technology.conf" share most of their code. So that common part is put
into "common/" and sourced from the final configuration file.
Update the documentation according the the new initialization scheme.