* 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
* Two patches to enable building on MSYS with gcc 12.1
1. Complete explicit instantiations in dbHierProcessor
2. Strict weak ordering is not present for std::type_info
(using "before" on gcc 12.1). We need to work with plain
pointers and use a translation table to associate pointers
with classes.
* Fixed another place where std::type_info got important
Co-authored-by: Matthias Koefferlein <matthias@klayout.de>
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
* Fixed first issue (UI problem with GDS2Text options)
* Fixed problem with 'save' when the file extension does not indicate one of the known formats
In this case, and when plain 'save' is used, the original format is delivered.
The session files also store the original format now.
The statistics page will now indicate the format of the file that was loaded.
* 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
* Opportunity fix: library selection box listed libraries with technology even though no technology is selected.
* Opportunity: show PCell errors on new error layer. Previously, errors were only shown when the PCell had at least a single layer parameter
The error text is drawn together with guiding shapes. Disabling guiding shapes will
turn off error display.
* Opportunity: fixed an issue when reloading a library immediately after loading a layout: in this case, the library connection got lost and cells were substituted by static ones
* Opportunity: added a layout cleanup for the following case: a layout is loaded without the library present - giving defunct cells. Then the library is registered and defunct cells are reconnected.
* Some doc fixes as preparation for PDF generation
* Some doc bug fixes and enhancements for PDF manual generation
* Fixed a number of invalid references found during PDF generation
* Enable PCellDeclarationHelper doc for help system
* Fixed doc text
* Fixed some doc issues with invalid links etc.
* 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
* PyPI deployment: corrected branch filter
* skip redundant points in partial edit, but not colinear ones
* Polygon transformation now preserves raw points
* 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.
Fixed some more glitches while doing so:
* cell.name (gsi) was giving "basic_name", now it's changed to the
internal name to be consistent with "name=". The "functional name"
is still available as "basic_name".
* The basic name was rendering "<defunct>..." for defunct cells
and has been changed to the functional name. Otherwise this
is not accessible.
* WIP: first attempt to fix issue-983
* WIP: bugfixes
* Fixed a problem with displaying empty cell dimensions, one warning
* Another fix: don't allow proxy cells to be selected in the instance properties dialog. This creates a confusing behaviour
* Fixed a few flaws in the cell selection scheme on the instance properties dialog.
* Early warning when trying to build a recursive hierarchy.
* Another fix: avoid too much undo in case of errors thrown during 'apply' followed by 'cancel'
* Fixed issue-983 solution
* Fixed the modification status of PCell parameters for 'apply to all'
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.
Basic change: DeepShapeStore+CellMapping uses (new) hier_generation_id of Layout to figure out
if the hierarchy has changed and the cache needs update.
1. Be more careful with net names
Net names are used now for sorting the graph nodes, but not for
strict compare. This is useful to derive swappable pins for
blackbox circuits.
2. Be more careful with pins from schematic netlist
Pins from schematic netlist without a corresponding pin on the layer
side are treated as mandatory unless connected to a trivial net.
Pins connecting to non-trivial nets inside the subcircuit are always
considered mandatory.
This way schematic pins enforce corresponding layout pins.
On the other hand, layout pins connecting to trivial nets inside
the subcircuit are considered non-mandatory.
1. removed some duplicate symbol linker error
2. removed many compiler warnings (mainly size_t/int compatibility)
3. consistent definition of db::pcell_id_type
4. removed UTF-8 character codes from string constants
5. float constants for float arguments
6. timeout in tlHttp when no openssl lib is found (instead of stalling
app)
While doing so changed the following things too:
- Instance and Shapes methods raise an exception if not
in editable mode and with undo/redo
- Faster and leaner undo/redo on Shapes#clear
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).