* Change: In cumulus.block.configuration and cumulus.block.htree, two new
configuration parameters allow to specify the offset of the horizontal
branch of the H-Tree manually:
cfg.spares.htreeRootOffset (first level of the tree)
cfg.spares.htreeOffset (subsequent levels)
The offset is given in number of tracks.
* New: In helpers.overlay.CfgDefault, new class that can be used to give
a default value to a cached configuration parameter. The default
value will be used as a last ditch fallback and used *only if* no
default value can be fetched from the C++ database (disk).
* New: In LefImport, add setGdsForeignDirectory() to point out from where
to load the extra GDS file in case a FOREIGN directory is present
in MACRO.
Also add support for merging the supply nets. It may happens that
the supply nets have different names in the GDS ("vdd!") and LEF files
("pvdd"), in that case, the LEF name supersede the GDS one.
The GDS file will be loaded *first* then completed by the LEF contents.
Blockage in the GDS file are *not* loaded.
* Change: In GdsParser, perform an early recognition of supply nets. For now
it's hardwired to names starting by "vdd" and "gnd", but should be
parametrized in the future.
Needed for the LefImport to merge, if needed, the power supplies.
In GdsStream::xyToComponent(), skip the blockage if required.
Formerly we were using Placement::Area::TrackAvoid() to shift cells terminals
out of the way of the reserved vertical track. With double height cells,
this is coming more complex and due to heavy tracks uses in some cells,
the shift required may becomes too great. Instead, we place filler cells
just underneath the reserved track to prevent their usage. This is a
supplemental constraint on the router, but the new version manage it
correctly.
* New: In cumulus/block.spares.Spares.trackAvoid() to place filler cells
under a given vertical area.
* Change: In LefImport::_pinCbk(), if a pin has "USE POWER" or "USE GROUND"
make it a global signal (previously flagged only "!" appended to name).
* Change: In LefImport::_pinStdPostProcess() do not try to find "on grid"
components for supply nets, just make all their components externals.
* Change: RoutingGauge in KatanaEngine::annotateGlobalGraph(), when
accounting for obstacles, skip new types of RoutingGauges that
are not accounted either when computing initial edge capacity in
EdgeCapacity CTOR. Now only take into account the "Default" kind.