* Implementated patch as suggested by issue-1047
* Implementing blend-mode for LEF/DEF for a first solution for issue-1048
* Added testcase, fixed other tests
* Issue-1050 fixed - now REGION, BLOCKAGE and DIEAREA are relevant from mapping file, nothing else
* Bug fixes
* Experimental: DEF multipart paths
* Experimental: ignore LEF wire extension, ignore PATTERNNAME
* Implemented PATTERNNAME in DEF instead of LEF ..
* Implemented nondefaultrule vias
* LEF/DEF: non-defaultrule vias need a name suffix.
* Refined solution for NDR via names, updated test data
* Updated test data
* Multiple map files and 'REGIONS FENCE' + 'REGIONS GUIDE' layer mapping entries.
* Added test data, updated doc.
* Some enhancements and feedback
REGIONS in map files -> REGION
REGION NONE for map files (maps REGIONs which are neither GUIDE or FENCE)
Bugfix: VIA with ORIGIN
No via cell name prefix by default for buddy tools
* Simplified buddy tool options for LEF/DEF property names
Dropped --lefdef-dont-produce-instance-names,
--lefdef-dont-produce-pin-names and --lefdef-dont-produce-net-names
options. Instead, these options have to be enabled by giving
the respective property names.
Writing the property names takes some space and these
options are simply confusing and redundant.
* Issue a warning about missing cut geometry for a DEF via with PATTERNNAME (which is ignored)
* Fixed issue-1065
* Fixed issue #1029
The problem happened because in the described case the
tl::Variant used as a intermediate container holds the
Python QBrush object and when it gets deleted, the
QBrush object is deleted too.
* Added tests
* First step for solution:
Problem was: the ambiguity resolver was making decisions which later resulted in
a name conflict. Later on, another branch of the backtracking algorithm came
across the same situation but decided based on names, creating an conflict.
First part of the solution is to establish the backtracking information
during ambiguity resolution and using that rather than an alternative branch
later on. This avoids this conflict, but does not favor names as mandated
by the "use_names" flag. This will be the second step of the solution.
* Bugfixed solution (partially)
* Introducing third pass in netlist compare
The second pass is "ambiguity resolution by name" and
is skipped if "consider_net_names" is false. The third
pass then is ignoring the names.
* Bugfix
* Comment fixed, test updates
* Added tests
* Added test data variant for CentOS 8
* Fixed issue-1011 by using single-point polygons for texts in deep mode. Tests need fixing.
* Updated tests (text become a single point)
* Added test for issue-1011
* Write polygons as single POLYLINE or LWPOLYLINE to DXF
* DXF writer creates simple polygons from ones with holes in POLYLINE and LWPOLYLINE mode, added tests
The option is -m or --heal.
It is default off as in boundary cases (e.g. full layer vs. empty)
the healing adds a considerable memory and performance penalty.
Healing is only effective with tiling and affects output shapes
as well as shape counts.
* Providing a "refresh" function for triggering a refresh from inside the lib
Some other glitches were fixed too:
* LibraryManager wasn't thread-safe
* Library destructor wasn't unregistering
* Crash when re-registering the same library again
* In LibrariesTest normalization of layouts must not include
re-creation of library references to avoid side effects.
Save without context.
* Added missing files
* Fixed unit tests.
Adds variants to size/sized which take a vector instead
of dx, dy and where the mode parameter is optional. So far
anisotropic sizing had to come with a mode argument.
The bug was that while iterating a Region during the gate traversal,
the "select_interacting" was triggering a sort() which changed the
order.
Solution is to pre-sort when iterators are issued also when the
iterator is non-region selecting. This way, plain and region query
iterators can be used together. In addition, the dirty flag scheme
of Cell+Shapes was cleaned up a little for bboxes.
Needed to represent QIODeviceBase as a second base class for
QIOdevice, QFile etc. Additional base classes are supported but
in a rather limited way. They only contribute constants like enums.
No methods can be provided this way (a limitation of the method
enumeration scheme which only supports one base classe)
Previously: matching of blackbox pins was enforced
by using pin names for passive nets in the compare.
Problem: no match was achieved when pins are not
named or not named consistently.
In this case, it's desirable to treat them as
ambiguous.
The new solution is to let the ambiguity resolver handle
that using an extended definition of the net names:
it will take the pin name into account if an unnamed net
is attached to a pin.
In addition, net ambiguities are projected to pin
equivalence now. This also will propagate symmetry
through nested blocks (dbNetlistCompareTests:20_BusLikeConnections).
* Device#net_for_terminal with terminal name
* Spice writer now dumps all parameters for resistors and caps (also secondary)
* Enabled Spice writer delegate in LVS (spice_format(...))
* Device class factories for built-in device extractors
* same_nets! method for strong matching
* same_nets and same_nets! except glob pattern to circuits and nets
* both observe case sensitivity
* helper functions for case sensitivity Netlist#is_case_sensitive?, Netlist#case_sensitive=
* Netlist#nets_by_name to get nets from pattern
Abstract pins are created when pins are not attached to any or only to passive nets
(passive nets are those without device terminals or subcircuit pins).
1. Such pins were treated swappable. Now named pins will not be treated
swappable but are mapped by name. This enables blackbox models where
the pins are labelled and must correspond to schematic pins.
2. A bug was present which lead to incorrect handling of abstract
nets in net compare.
* Fixed the issue - Byte array variant was not properly converted to Python/Ruby objects.
* Added tests + properly converting byte arrays to byte array variants in Python.