* New: In CRL, implement a true GDSII driver. The driver is directly under
CRL and do not use an intermediate structure in vlsisapd. The ASCII
GDSII is removed.
Huge polygons are not supported yet. Have to be split up in
sub-polygons of less than 4000 vertexes.
Symbolic layout can be exported to give a rough idea of the layout
but RDS expension is not applied. Symbolic composite layers are
expansed into their basic layers so the design *looks* normal.
* Deprecated: In CRL, remove all traces of the old XML configuration
parsers. No one needs them now, including Chams.
* Bug: In CRL::BlifParser, before blindly loading the model of a subckt
from disk with AllianceFramework, checks if it is in the Catalog
first. Load with AllianceFramework only cells that are in the
Catalog.
This prevent a file of the same name than a model to be loaded
shadowing the later defintion of the model in the Blif file.
All this is due to the fact that Blif could be non-ordered for
the models...
* Change: In Hurricane::BasicLayer, the "extract number" is replaced
by a GdsLayer and GdsDatatype to generate accurate GDS files.
Even if datatype is 0 most of the time.
Update all the "technology.conf" files in CRL to provide those
two numbers.
* 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.
* New: Hurricane::DataBase::getCell() method to search a cell through
all the libraries of *all* the frameworks, not just Alliance.
Also exported in Python interface.
* Bug: In Technology::getNthMetal() the function was not returning the
right metal, there was an offset of one. And when the offset was
0, no metal was even returned. Same fix goes for getNthCut().
The fault was in Mask<>::nthbit().
* Change: In Hurricane::CellWidget, the initial window size is too tiny.
Increase the size from 250 to 500 pixels.