Commit Graph

2469 Commits

Author SHA1 Message Date
Matthias Koefferlein f289fa9483 A small enhancement (dbu argument in LayoutToNetlist#evaluate_nets), maybe fixing issues on old Ruby versions 2025-08-03 22:11:59 +02:00
Matthias Koefferlein b6fba7bb69 Bug fixes, new test details 2025-08-03 21:31:55 +02:00
Matthias Koefferlein 381baf7453 Merge remote-tracking branch 'origin/master' into feature/measurements 2025-08-03 19:53:06 +02:00
Matthias Koefferlein 8a5e83bf5d Consistently differenting between double and int values as property keys (otherwise there may be a confusing mix present in the property repository) 2025-08-03 19:46:31 +02:00
Matthias Koefferlein 4773bb3227 Added a test for cumulative antenna ratio 2025-08-03 18:00:25 +02:00
Matthias Koefferlein c8568e8aed DRC binding for property computation, filtering 2025-08-03 13:55:14 +02:00
GavinAnderberg 55b58a20cc
Correct typo gsiDeclDbNetlist.cc
Corrected a typo that has the docs say the Netlist.read method 'Writes the netlist to the given file'. It now accurately matches the function behavior.
2025-08-02 19:55:31 -04:00
Matthias Koefferlein 73681755ed Rename some functions, DRC binding for 'evaluate_nets' 2025-08-02 23:06:22 +02:00
Matthias Koefferlein 61aa08cd64 Added tests for more features 2025-08-02 22:23:03 +02:00
Matthias Koefferlein a224c11833 WIP: bugfix 2025-08-02 22:14:53 +02:00
Matthias Koefferlein c3ba0acc02 Added unit test 2025-08-02 21:43:39 +02:00
Matthias Koefferlein 8151feac56 Some debugging, skipping clusters without shapes on primary layer for example 2025-08-02 21:28:48 +02:00
Matthias Koefferlein d001f7fa04 Introducing variables to property filters, computation functions, generalizing net function for net measurement 2025-08-02 19:50:11 +02:00
Matthias Koefferlein e82ebf6733 WIP: measure_net function for LayoutToNetlist 2025-08-02 19:17:23 +02:00
Matthias Koefferlein 8e95f6a8e1 Fixing a few doc issues, updating DRC doc. 2025-08-02 16:19:12 +02:00
Matthias Koefferlein ffafebcaae Adding 'merge_props' and 'merged_props' to DRC 2025-08-02 16:12:49 +02:00
Matthias Koefferlein f9ea9af466 Fixed unit tests 2025-08-02 15:13:23 +02:00
Matthias Koefferlein d1e1f626c7 WIP (join properties on merge for flat regions) 2025-08-02 13:36:17 +02:00
Matthias Koefferlein 4b79c4c362 Fixing backward compatibility issue with pseudo-labels
Problem: pseudo-labels are represented by polygons with
properties. If those get merged onto normal polygons
with "join_properties_on_merge", these are regarded
labels and translated to texts later. We avoid this
by skipping all objects with pseudo-label properties
on region merge in "join_properties_on_merge" mode.
2025-08-01 22:59:38 +02:00
Matthias Koefferlein 786c60a28e Fixing unit tests 2025-07-31 23:54:55 +02:00
Matthias Koefferlein 37f9feaadd WIP: joining of properties in deep region 2025-07-31 22:38:48 +02:00
Matthias Koefferlein 653384fce5 WIP 2025-07-31 21:16:35 +02:00
Matthias Koefferlein b89ff76a84 Fixing issue #2102 (internal error on R extraction)
Problem was a conceptual problem: the triangulation for
Hertel-Mehlhorn decomposition must not contain internal
vertexes. So we need a different solution for including
vertex ports.
2025-07-30 23:24:34 +02:00
Matthias Koefferlein 1ff6f36076 Shapes#insert(region) now supports properties 2025-07-29 23:10:15 +02:00
Matthias Koefferlein c0bdc2874a 'put' function is property computation processors 2025-07-29 21:11:34 +02:00
Matthias Koefferlein 792c06b3a2 WIP: unit tests for new features 2025-07-28 23:40:01 +02:00
Matthias Koefferlein 3a612f9b04 WIP: integration of new features 2025-07-28 23:11:21 +02:00
Matthias Koefferlein 8d7919e054 WIP 2025-07-28 22:38:44 +02:00
Matthias Koefferlein 2a50c87969 WIP 2025-07-27 22:49:21 +02:00
Matthias Koefferlein 5b3ce9ff30 [consider merging] tl::Variant now considers byte arrays and strings equivalent for sloppy compare. This is important for Ruby string property keys as they are often kept as byte arrays when not UTF-8 encoded. 2025-07-27 22:15:52 +02:00
Matthias Koefferlein ede15ffcc0 WIP 2025-07-27 19:48:38 +02:00
Matthias Koefferlein 427ac0ae16 WIP 2025-07-27 17:43:01 +02:00
Matthias Koefferlein 1c1555f31c Fixed unit tests 2025-07-26 18:25:36 +02:00
Matthias Koefferlein 80276f8799 Refactoring: shape processors now allow modifying properties 2025-07-26 18:09:31 +02:00
Matthias Koefferlein 2369c69f69 Implemented feature request: a method to clear properties on shapes, instances, cells and layout 2025-07-26 15:26:47 +02:00
Matthias Koefferlein 1a9c12ce18 Merge branch 'master' into devel 2025-07-19 21:27:52 +02:00
Matthias Koefferlein 9d4a578a5e Merge branch 'bugfix/issue-2088' 2025-07-19 19:00:33 +02:00
Matthias Köfferlein 71202ea9d3
Merge pull request #2098 from KLayout/bugfix/issue-2094
Fixing issue #2094 (slow insert into Shapes)
2025-07-19 18:58:04 +02:00
Matthias Köfferlein ff7d7f20ee
Merge pull request #2089 from KLayout/bugfix/issue-2087
Bugfix/issue 2087
2025-07-19 18:57:25 +02:00
Matthias Köfferlein 131f36a4e0
Merge pull request #2084 from KLayout/feature/issue-2044
Feature/issue 2044
2025-07-19 18:57:10 +02:00
Matthias Koefferlein 4ab64ca5d3 Fixing issue #2094 (slow insert into Shapes)
Solution is to use a temporary container instead
of locking (only if needed).
2025-07-19 15:08:09 +02:00
Matthias Koefferlein d0b935d9e5 Fixed issue #2088 in reader and writer
Reader fix: the reader will not error out duplicate cell
names, but rename the cells.

Writer fix: the writer will uniquify cell names *after*
illegal character substitution.
2025-07-15 22:52:49 +02:00
Matthias Koefferlein 1dc0a56633 Bugfix on layout query
The following query did not render the correct box
for top-level objects:

select path_dtrans*shape.dbbox.center,cell_name from shapes on layer 1/0 from instances of .*..

Reason was that "path_dtrans" returned a ICplxTrans for top
level instead of a DCplxTrans object.
2025-07-13 21:42:35 +02:00
Matthias Koefferlein e7bc997e9f Further compressing fill cell arrays in x direction 2025-07-12 14:28:42 +02:00
Matthias Koefferlein 76f7c620f6 [consider merging] Enabling Shapes-based RecursiveShapeIterators for MT-use
This fixes a crash when using DRC fill in tiled mode with multiple
threads.
2025-07-12 13:59:06 +02:00
Matthias Koefferlein 70a609e995 [consider merging] Bugfix in polygon rasterizer 2025-07-11 23:57:03 +02:00
Matthias Koefferlein 46f9fba0ab Generalizing fill tool code 2025-07-11 23:56:40 +02:00
Matthias Koefferlein 7a06bfd66a Bugfix 2025-07-10 23:32:19 +02:00
Matthias Koefferlein d5f1017f83 More efficient computation of remaining fill area 2025-07-10 00:24:24 +02:00
Matthias Koefferlein 7dafdb2316 Fixing bug in first place. Needs testing. 2025-07-08 23:36:44 +02:00
Matthias Koefferlein d382629e8e Proposal for a fix of issue #2044 and #2066
The solution is to separate the meaning of "," and "+" layout
file combination operators in strm2x tools:

* "+" does "blending"
* "," does merge

"+" has priority over "," ('a+b,c' acts as '(a+b),c').
NOTE: LEF caching only happens across "+".
2025-07-05 22:48:05 +02:00
Matthias Koefferlein 9e9344fdfa Introducing a check whether DBU is compatible with a given one in most readers (except PCB) 2025-07-05 21:13:19 +02:00
Matthias Koefferlein fbca4e6c18 Fixing layout text writer for 'long long' property names on Windows 2025-06-29 22:16:46 +02:00
Matthias Koefferlein 733a0ec4cf Proper solution for bug fix - wasn't done in the right order before. 2025-06-29 20:23:47 +02:00
Matthias Koefferlein abeab280a3 [consider merging] fixed a crash happening while blending two OASIS files with ghost cells 2025-06-28 15:50:27 +02:00
Matthias Koefferlein f2172d8e2a Extension of the L2N/LVSDB format to support deleted terminals and parameters
Previously, when deleting parameters or terminals from device
definitions, these parameters or terminals re-appeared in the
netlist browser, because they were generated from the
template class (e.g. "A" and "B" from "RES").

An additional token is added that indicates whether to
remove all entries before adding new ones.

This feature is backward-compatible and LVSDB/L2N files have to
be generated from new KLayout versions to make use of that
feature.
2025-05-31 17:33:44 +02:00
Matthias Köfferlein 45fdaf0a6d
Merge pull request #2049 from KLayout/devel
Devel
2025-05-29 09:43:23 +02:00
Matthias Köfferlein 3ce50679fa
Merge pull request #2050 from KLayout/dev-polygon-graph
Dev polygon graph
2025-05-29 09:43:06 +02:00
Matthias Köfferlein 6ae3737cd5
Merge pull request #2065 from KLayout/feature/issue-2041
Feature/issue 2041
2025-05-29 09:42:46 +02:00
Matthias Koefferlein 9917978566 Merge branch 'master' into dev-polygon-graph 2025-05-28 19:01:42 +02:00
Matthias Koefferlein 0cb5f35659 Allowing the polygon neighborhood visitor to specify a variant type for deep mode 2025-05-27 21:07:28 +02:00
Matthias Köfferlein dfd7d8ec1f
Merge pull request #2061 from KLayout/bugfix/issue-2060
Bugfix/issue 2060
2025-05-27 19:17:45 +02:00
Matthias Koefferlein 125e06bd49 Added doc, added a warning about no pins found at top level. 2025-05-25 17:53:11 +02:00
Matthias Koefferlein 094e11897a Added the new feature: 'flag_missing_ports' 2025-05-24 22:33:18 +02:00
Matthias Koefferlein aba912107b Refined solution, so it would allow a larger coordinate range. 2025-05-24 00:09:52 +02:00
Matthias Koefferlein 6d28c78eeb Fixed issue #2060 - the precision of the check was too low. 2025-05-22 22:48:48 +02:00
Matthias Koefferlein e96f20a106 Introducing case sensitivity in circuit and netlist queries, makeing 'same_nets' more case sensitivity-aware in case of mixed sensitivity 2025-05-22 22:25:49 +02:00
Matthias Koefferlein 57c2add00a API enhancement for NetlistCrossReference: obtaining information from one object only (net, circuit), does not need a pair anymore 2025-05-22 20:54:21 +02:00
Matthias Koefferlein 90c4f654b6 API for adding log entries to LVS and L2N databases 2025-05-22 19:57:06 +02:00
Matthias Koefferlein 4dd4524da9 Fixed typo 2025-05-22 19:47:39 +02:00
Matthias Koefferlein 6b8c79c488 Fixed a segfault (thanks, Martin\!) 2025-05-22 18:50:25 +02:00
Matthias Koefferlein 5c27fedfe5 Debugging and bug fixes. The 'big example' from issue 2014 now works 2025-05-17 00:44:15 +02:00
Matthias Koefferlein 113c701345 Trying explicit member template instantiation to solve linker issue 2025-05-16 23:23:11 +02:00
Matthias Koefferlein 6cd4b97cd3 Including internal net names in LVS DB
Problem: so far, these names have not been conveyed.
But after the net IDs changed in the LVS DB (renumbering),
the names should be retained. Otherwise it is difficult to
relate log level entries or Spice netlists to them.
2025-05-15 21:17:15 +02:00
Matthias Koefferlein f7c7e8b0be Fixed unit tests 2025-05-04 15:41:26 +02:00
Matthias Koefferlein aca3095efa WIP: allowing multiple vertex ports on the same location 2025-05-04 15:38:45 +02:00
Matthias Koefferlein 80ad38f81b WIP: debugging, tests. Triangulation should be safer now against linear chains of vertexes. 2025-05-04 14:36:34 +02:00
Matthias Koefferlein f83cd61843 WIP: debugging, tests. 2025-05-04 13:11:46 +02:00
Matthias Köfferlein e76e9b7d0b
Merge pull request #2017 from KLayout/bugfix/issue-2014
Fixed issue #2014 (strm2oas lef/def/gds collect drops cells reference…
2025-04-27 20:53:47 +02:00
Matthias Köfferlein c7514ba24d
Merge pull request #2031 from KLayout/bugfix/issue-2011
Bugfix/issue 2011
2025-04-27 14:35:37 +02:00
Matthias Koefferlein 5efcf83640 Bugfix: Deep mode XOR needs to maintain the layout origin of the first argument even if it is empty 2025-04-26 23:24:26 +02:00
Matthias Koefferlein ffa42653fe Addressing issue #2011
- "report" can now be late in DRC without internal error
  Yet, the report will only capture the output layers
  after the report statement has been called.
- Text objects don't create zero-area polygons in deep mode
  XOR now.
2025-04-26 22:04:50 +02:00
Matthias Koefferlein 9bf03390de More robust output for tests, some debugging 2025-04-20 21:23:01 +02:00
Matthias Koefferlein 7f0b2d532d Bugfixes 2025-04-20 20:07:47 +02:00
Matthias Koefferlein f71210c64a WIP, more testcases, debugging 2025-04-20 19:09:24 +02:00
Matthias Koefferlein 88a1ccbcfb TriangulationRExtractor, some debugging, tests 2025-04-20 16:20:35 +02:00
Matthias Koefferlein 1379d30502 Debugging, Tests 2025-04-19 20:55:15 +02:00
Matthias Koefferlein 8a122c8a7d WIP: bug fixes, one more test 2025-04-18 23:29:29 +02:00
Matthias Koefferlein 71620445ee Polygon#triangulate now returns a 'raw' region, same for SimplePolygon#triangulate. Working on hm_decomposition (tests, bug fixes etc.) 2025-04-18 15:13:29 +02:00
Matthias Koefferlein e764716bda Preserving the hull of simple polygons during insert in a Region, hence skipping the compression 2025-04-18 15:12:30 +02:00
Matthias Koefferlein c6a4b6aba0 Added a new utility function 2025-04-18 00:15:43 +02:00
Matthias Koefferlein 3ed39e8a4a Internal vertex ID added, cleanup 2025-04-17 23:40:58 +02:00
Matthias Koefferlein a2ef7a28f8 WIP 2025-04-17 23:20:37 +02:00
Matthias Koefferlein 94396da117 Fixed problem of on-edge internal vertex/precious vertex 2025-04-16 23:43:27 +02:00
Matthias Koefferlein 4f1b03496b Handling of points in Convex decomposition 2025-04-16 01:15:18 +02:00
Matthias Koefferlein 60d1fb0685 Porting HM decomposition to new PLC framework 2025-04-16 00:02:25 +02:00
Matthias Koefferlein 76e039bd2a Removing obsolete dbTriangle/dbTriangles 2025-04-13 23:06:49 +02:00
Matthias Koefferlein 802cf99521 Porting dbTriangleTests 2025-04-13 22:58:37 +02:00
Matthias Koefferlein 627e244443 Refactoring: generalization of Triangles into db::plc::Graph in dbPLC.h 2025-04-13 22:44:14 +02:00
Matthias Koefferlein 291c91fcaa Merge branch 'dev-polygon-graph' into wip 2025-04-13 17:16:16 +02:00
Matthias Koefferlein d7193e972c WIP 2025-04-12 23:59:43 +02:00
Matthias Koefferlein 7b069d17c3 WIP 2025-04-12 22:30:00 +02:00
Matthias Koefferlein 6f9a2da04a WIP 2025-04-10 23:33:50 +02:00
Matthias Koefferlein 910f697d0b WIP 2025-04-10 19:15:12 +02:00
Matthias Koefferlein fa618a5b76 Fixing the strict weak ordering issue inside the edge processor 2025-04-09 23:35:09 +02:00
Matthias Koefferlein 3bd9a96f67 Merge branch 'bugfix/strmxor' into bugfix/issue-2014 2025-04-08 22:55:45 +02:00
Matthias Koefferlein 8150e732af Hopefully fixing strm2xor finally, added a test 2025-04-08 19:14:01 +02:00
Matthias Koefferlein 789e183be9 Shortcutting hierarchy in case of skipped shapes, this restores the original performance 2025-04-08 00:04:21 +02:00
Matthias Koefferlein 41e9cb5893 Maybe fixing basic issues with strmxor
1. Output of shape countsi in deep mode was hierarchical with
   output file, flat without
2. Refactoring of XOR (for_merged optimization) needed to
   create cover cell variants
2025-04-07 00:53:43 +02:00
Matthias Koefferlein bcf14ede3e Fixed issue #2014 (strm2oas lef/def/gds collect drops cells referenced by sky130 spare)
Problem was that there was the implicit assumption that
substitution cells would be top cells (or at least: not
child cells of other substitution cells).
2025-04-05 22:06:29 +02:00
Matthias Koefferlein b0f05b5327 WIP 2025-03-29 23:18:16 +01:00
Matthias Koefferlein 40a0113ce5 Fixing Texts[], EdgePairs[] and Edges[] operators - both in terms of returning xWithProperties and objects with properties at all 2025-03-27 00:27:53 +01:00
Matthias Koefferlein 3aebf90ecd Texts[n] now also provides a TextWithProperties object. Bugfix: this method was not delivering any objects with properties at all. 2025-03-26 01:22:54 +01:00
Matthias Koefferlein a24d5388d7 Region[] now returns a PolygonWithProperties object or nil 2025-03-26 00:56:54 +01:00
Matthias Koefferlein db66a6ee74 Base class of DEdgePairWithProperties was EdgePair, not DEdgePair 2025-03-25 23:43:14 +01:00
Matthias Koefferlein efeb2c061b Layout queries support diff as placeholder for the current cell 2025-03-23 16:51:47 +01:00
Matthias Koefferlein a22f48d87a Texts#polygons now has an argument to specify a property key that receives the text string 2025-03-23 15:54:18 +01:00
Matthias Koefferlein f977973b85 RecursiveShapeIterator#property and RecursiveShapeIterator#properties 2025-03-23 15:23:19 +01:00
Matthias Koefferlein 71644fa56c Implementing additional vertexes for triangulation 2025-03-23 11:34:13 +01:00
Matthias Koefferlein 8727c31d36 Merge branch 'bugfix/issue-1996' into wip 2025-03-23 11:11:20 +01:00
Matthias Koefferlein 16be7bf8c1 Merge branch 'bugfix/issue-2002' into wip 2025-03-23 11:10:54 +01:00
Matthias Koefferlein 593678e228 WIP: Polygon#delaunay and variants 2025-03-23 09:55:08 +01:00
Matthias Koefferlein 986474d465 Added one more testcase 2025-03-23 08:57:06 +01:00
Matthias Koefferlein 73364ee406 Solving issue #2002 by allowing variable widths on the path segments due to 45 degree segment snapping. 2025-03-23 00:57:25 +01:00
Matthias Koefferlein 6228668fa1 Fixing issue #1996: Providing a more robust triangulation 2025-03-22 21:47:22 +01:00
Matthias Koefferlein a727ed0b1d Fixed a compiler warning 2025-03-22 20:47:28 +01:00
Matthias Koefferlein 2668b42d29 Separating tl::hfunc from std namespace. Needed to support int128 in tl::Variant for 64bit coordinate builds. 2025-03-22 20:35:15 +01:00
Matthias Koefferlein 6f69efd427 WIP 2025-03-20 23:30:30 +01:00
Matthias Koefferlein d9343ee530 WIP 2025-03-18 17:28:12 +01:00
Matthias Koefferlein 1f5c2b5132 Marked one test as long runner 2025-03-18 14:44:27 +01:00
Matthias Koefferlein df631aa970 Some minor refactoring 2025-03-18 00:19:15 +01:00
Matthias Koefferlein 6596008826 instrumenting triangles implementation with Quad Tree, but without effect 2025-03-18 00:10:00 +01:00
Matthias Koefferlein cd62f62140 WIP (quad tree) 2025-03-16 23:24:06 +01:00
Matthias Koefferlein 4e65b96cb7 WIP (quad tree) 2025-03-16 21:10:15 +01:00
Matthias Koefferlein f3037d11f3 WIP (quad tree) 2025-03-16 18:16:15 +01:00
Matthias Koefferlein 4aeb94d42e WIP (quad tree) 2025-03-16 17:13:06 +01:00
Matthias Koefferlein 477e2b5a31 WIP (quad tree) 2025-03-16 16:43:56 +01:00
Matthias Koefferlein 4369835e8b WIP (quad tree) 2025-03-16 16:36:49 +01:00
Matthias Koefferlein f1f35ae2a4 WIP (quad tree) 2025-03-16 14:46:03 +01:00
Matthias Koefferlein 5c8e0539ee WIP (quad tree) 2025-03-16 13:56:16 +01:00
Matthias Koefferlein 54b5d9f5d6 WIP (quad tree) 2025-03-16 13:35:51 +01:00
Matthias Koefferlein f136fdcde6 WIP 2025-03-16 00:52:57 +01:00
Matthias Koefferlein d60b296417 Improvement: Device#terminal_ref to get a NetTerminalRef from a Device. 2025-03-14 23:29:09 +01:00
Matthias Koefferlein 930e09809b Added an argument name 2025-03-09 23:20:57 +01:00
Matthias Koefferlein 2baaf322eb Fixed a few doc typos and default values for 'lmap' on build_nets 2025-03-09 23:20:18 +01:00
Matthias Koefferlein da88973df9 A number of new methods and variants in LayoutToNetlist
The goal is to support texts as native objects in
LayoutToNetlist.
Primarily this means, that instead of using a Region
to identify a layer, it is encouraged to use a
layer index instead. Also, Region is not longer the
only way to represent a layer, Texts is available
too.

It is possible now to retrieve the texts of a net
using "texts_of_net".

Also, the "lmap" parameter of "build_nets" became
optional. If "nil", a layer map is created based
on the layer info attribute of the layers.
2025-03-09 23:07:46 +01:00
Matthias Koefferlein 86202fa23c WIP: refactoring of LayoutToNetlist for more consistent support of Texts for layers 2025-03-09 19:22:04 +01:00
Matthias Koefferlein 903bd70223 Fixed merge issues 2025-03-06 22:24:05 +01:00
Matthias Koefferlein 87e7d8e493 Merge branch 'master' into devel 2025-03-06 19:35:32 +01:00
Matthias Koefferlein 605fa44ca6 Another refinement for DSS bug fix. 2025-03-05 10:26:45 +01:00