* [CONSIDER MERGING] Clarification and typo fixed in DRC doc.
* Implemented #1097 (discourage file compression, use CBLOCK)
* A warning is printed if file compression is enabled on OASIS
* A hint is present in the writer options
* CBLOCK is default (with fresh config) and for buddy tools
(use --cblock=false to disable it)
* Strict mode is default too.
* Updated tests
The application got unstable on exit under various conditions
(e.g. LayoutView created in script). Reason was the ownership
management of LayoutView which interfered with Qt widget
lifetime management.
The solution now is based on a clean widget/view hierarchy
and a consistent plugin parent/child relationship.
In addition, a new class is enabled which allows creating
a true QWidget (rather QFrame) for a LayoutView again.
* Fixed issue-1135 (LVS mismatch on parallel devices)
The fix consists of a more elaborate device identity analysis
following the topological matching. In this step, the devices
are identified according to their connections and parameters.
It is important to properly identify devices taking their
parameters into account as well as their connections.
* Second part of issue fixed (inverter chain ambiguity)
* Added test
* Updated tests
* Updated golden test results
* Updated golden test data for Windows
Co-authored-by: klayoutmatthias <matthias@klayout.org>
* First attempt to fix. Rather experimental.
* Debugging and bug fixing
The basic issue was a missing break
However, correct computation of cache results for instance-to-instance cluster
interaction is implemented
Plus: identical and overlapping instances are no longer ignored except in the
case of exact duplicates. Otherwise these instance generate dead nets which
are not connected elsewhere.
* Added tests, fixed duplicate cells test, added missing files.
* Code simplification (removed invariant from transformation in cluster-to-cluster interaction cache)
* Skipping cell instance duplicates as some real-world testcases mandate so
* Updated test data
* Fixed issue-1131 (do not show files in MRU lists which do no longer exist)
The solution consists of an extension of the Action system allowing to
dynamically hide or disable items. This currently works for menu items only.
This feature is used to dynamically *disable* (as of now, not hiding)
items from the four MRU lists corresponding to non-existing files.
In addition, a "clear list" menu has been added to the MRU lists.
* Small enhancement: file names can be URIs
This was a problem with universal DRC which does not specifically
set the merged status. Furthermore, the default for DeepRegion and
DeepEdges was "false" already and now is aligned.
* WIP: some convenience (self.param=() for Ruby PCell impl), a bug fix (crash on call of pcell_parameter on wrong cell), update of tests
* Implemented solution for #1079 (refresh calls coerce_parameters)
* Basic.CIRCLE modified such that coerce_parameters_impl also catches the case of a programmatic change of actual_radius and this function will update radius and the handle accordingly
* Modified Basic PCells such that they work with coerce_parameters also if generated programmatically
* Added tests
* 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).