Commit Graph

6123 Commits

Author SHA1 Message Date
Matthias Koefferlein 1d150441b6 WIP 2026-05-21 23:05:03 +02:00
Matthias Koefferlein 3ef0d593b1 [consider merging] tab order in density map dialog 2026-05-21 19:27:48 +02:00
Matthias Koefferlein ae55361bcc WIP 2026-05-21 00:09:24 +02:00
Matthias Koefferlein 19ded2d784 WIP 2026-05-21 00:05:57 +02:00
Matthias Koefferlein 6e19b34cb3 [consider merging] Fixed a type bug in l2n reader 2026-05-20 22:52:34 +02:00
Matthias Koefferlein 4afe2e5e8a Merge remote-tracking branch 'origin/master' into feature/issue-2337 2026-05-20 19:07:39 +02:00
Matthias Köfferlein 0eed5d6ea5
Merge pull request #2354 from KLayout/wip
Wip
2026-05-20 19:06:25 +02:00
Matthias Köfferlein 10860d5a68
Merge pull request #2352 from KLayout/bugfix/issue-2345
A contribution to issue #2345 mitigation
2026-05-20 19:06:12 +02:00
Matthias Köfferlein 0ca31fb9a6
Merge pull request #2347 from KLayout/bugfix/issue-2344
Fixing issue #2344 (preserving properties on PCell instantiation with…
2026-05-20 19:04:14 +02:00
Matthias Köfferlein 337c910ce0
Merge pull request #2346 from KLayout/bugfix/issue-2343
Fixed issue #2343 (loss of collinear points in copy_tree and other pl…
2026-05-20 19:03:59 +02:00
Matthias Köfferlein 8488c59c15
Merge pull request #2342 from KLayout/feature/issue-2335
Fixing issue #2335
2026-05-20 19:03:40 +02:00
Matthias Köfferlein 41ef531d37
Merge pull request #2341 from KLayout/bugfix/issue-2339
Fixing issue #2339
2026-05-20 19:03:04 +02:00
Matthias Koefferlein f74e71f728 Implementing averaging window for density map 2026-05-19 00:04:06 +02:00
Matthias Koefferlein f2b1e389bd Enhancements to density map feature 2026-05-18 22:25:43 +02:00
Matthias Koefferlein ae46712f45 WIP on density map feature 2026-05-11 23:48:55 +02:00
Matthias Koefferlein 974a300bdc First draft for density map feature. 2026-05-11 22:19:12 +02:00
Matthias Koefferlein 5c9ccf34f7 Fixing a glitch in the data mapping widget (when editing the value, the node got deselected, but the colors boxes were still enabled) 2026-05-09 23:09:11 +02:00
Matthias Koefferlein 485ec8a413 Fixing builds 2026-05-07 00:11:39 +02:00
Matthias Koefferlein 838b2409b0 Maintaining data_id during modification of layer inside device extractor -> this way, the name-to-layer link is maintained inside the DRC engine 2026-05-07 00:10:22 +02:00
Matthias Koefferlein 9630bff240 A contribution to issue #2345 mitigation
With this patch, empty layers can be used to place device
terminals on and these shapes are visible on those layers.
This allows splitting the terminal shapes and used those
shapes to connect down to different substrates.

The patch turns EmptyLayer into a DeepLayer when used
as terminal layer for device extraction.
2026-05-05 23:08:09 +02:00
Matthias Koefferlein c85be6bce5 Adding string serialization "from_s" for objects with properties (CAUTION: side effect!)
Problem was that "to_s" did not deliver a parsable string for the
properties. This is fixed, but the format of the properties part
of the string changes.
2026-05-03 20:27:15 +02:00
Matthias Koefferlein 77fb74e072 Supporting to_bytes and from_bytes also for the ..WithProperties types 2026-05-03 18:10:00 +02:00
Matthias Koefferlein 1de28f2d6b Refactoring, some enhancements to tl::Variant
- Split binary and regular streams
- Binary serialization of tl::Variant
- Fixing tl::Variant parsable string representation for byte arrays and char
  (Format is '...'b for byte arrays and '.'c for chars).
- tl::to_quoted_string now allows 0 characters in the string
  (escapes to '\000')
2026-05-03 16:24:14 +02:00
Matthias Koefferlein 7f6071db31 Some refactoring, bug fixes 2026-05-03 00:15:47 +02:00
Matthias Koefferlein fdaa93d234 First implementation of to_bytes/from_bytes for Vector,Point,Box,Polygon,SimplePolygon,Trans,CplxTrans,Text,Path,Edge,EdgePair and variants 2026-05-02 23:21:35 +02:00
Matthias Koefferlein 1740523092 Introducing a number of convenience methods for Layout
* Layout#delete_cells with a list of cell object
* Layout#delete_cell_rec with a cell object
* Layout#prune_cell with a cell object
* Layout#prune_cells for pruning multiple cells in one call
* Layout#prune_subcells with a cell object
* Layout#prune_subcells with multiple root cells
* Layout#flatten with a cell object
* Layout#flatten_into with cell objects
* Layout#delete_cell with a cell object
* Default value "all" for "levels" argument in "prune_subcells" and "prune_cell"
* Default value "all" for "levels" and "true" for "prune" argument in "flatten"
* Default value "all" for "levels" and "unity" for "trans" argument in "flatten_into"
2026-05-02 15:46:29 +02:00
Matthias Koefferlein d8016a9446 Polishing doc. 2026-05-02 00:29:07 +02:00
Matthias Koefferlein 0728feba33 Bugfix: rbaTests:dbPCellTests were disabled, added tests for new features for cold proxies 2026-05-02 00:20:57 +02:00
Matthias Koefferlein 6782ad54e6 GSI: new functions for cold proxies 2026-05-02 00:00:25 +02:00
Matthias Koefferlein 17f5b4f2da Snapping of rulers: now all points snap when the ruler is moved 2026-05-01 18:57:03 +02:00
Matthias Koefferlein 5596019ece Fixing issue #2344 (preserving properties on PCell instantiation with instances) 2026-05-01 00:03:11 +02:00
Matthias Koefferlein 39c95a11de Fixed issue #2343 (loss of collinear points in copy_tree and other places) 2026-04-30 23:42:40 +02:00
Matthias Koefferlein 5d60cfe27d Persisting settings of search features (see discussion 2868) 2026-04-30 21:35:48 +02:00
Matthias Koefferlein 423df1e7e2 Fixing issue #2335
Now, the editor options are also shown in selection mode.
Also, the logic was enhanced that decides whether to show
the editor options or not.
2026-04-26 22:43:13 +02:00
Matthias Koefferlein 6ffb59200e Fixing issue #2339
Solution is to do proper cell mapping, including the parent
references from source to target RDB.
2026-04-26 17:46:39 +02:00
Matthias Koefferlein 93090948ee Fixed issue #2331 - assertion and crash with fractional scaling and oversampling 2026-04-20 22:55:27 +02:00
Matthias Koefferlein 9ad273d834 Fixing a segfault on 'xkill' - solution was to register an exit handler that cleanly shuts down 2026-04-20 22:19:56 +02:00
Matthias Koefferlein b27527b6b9 Fixing issue #2331 2026-04-15 23:19:30 +02:00
Matthias Koefferlein 555dc1f00d stubs and doc updated 2026-04-14 20:25:33 +02:00
Matthias Koefferlein 9383f0945a Fixed Windows builds 2026-04-14 19:39:28 +02:00
Matthias Koefferlein b51caf5d39 Merge branch 'wip' 2026-04-14 19:21:01 +02:00
Matthias Köfferlein 0fdce69579
Merge pull request #2304 from KLayout/bugfix/issue-2299
Bugfix/issue 2299
2026-04-14 08:59:07 +02:00
Matthias Köfferlein 9d6fa507d1
Merge pull request #2318 from KLayout/bugfix/issue-2311
Fixed issue #2311
2026-04-14 08:58:38 +02:00
Matthias Köfferlein 386e780d85
Merge pull request #2328 from KLayout/feature/issue-2326
Modifying the fit logic for issue #2326
2026-04-14 08:58:18 +02:00
Matthias Köfferlein 09ee4aefff
Merge pull request #2327 from KLayout/feature/issue-2322
Feature/issue 2322
2026-04-14 08:57:52 +02:00
Matthias Köfferlein 72c4af9f94
Merge pull request #2308 from KLayout/bugfix/issue-2305
Bugfix/issue 2305
2026-04-14 08:57:19 +02:00
Matthias Köfferlein 6bff302753
Merge pull request #2329 from KLayout/bugfix/issue-2315
Fixed #2315: Changing dialog title and 'cancel' button to 'close'
2026-04-14 08:56:32 +02:00
Matthias Koefferlein adb81262a4 Experimental feature: Region#peel to reduce hierarchical load 2026-04-12 01:03:37 +02:00
Matthias Koefferlein 072b02c55c Fixed builds without Ruby 2026-04-11 20:40:28 +02:00
Matthias Koefferlein 5e52c78e1d Fixed #2315: Changing dialog title and 'cancel' button to 'close' 2026-04-11 19:54:12 +02:00
Matthias Koefferlein deae8c68b4 Modifying the fit logic for issue #2326
The fit box is computed now the following way
1. Compute the bounding box of "visible" parts
   (i.e. treating empty cells as empty)
2. If that bounding box is empty, compute the
   bounding box using the previous scheme,
   where empty cells are treated as point-like
   with a single point at their origin
2026-04-11 17:34:15 +02:00
Matthias Koefferlein b39556d645 Fixed texts, tab order on config page, compiler warnings 2026-04-11 00:00:44 +02:00
Matthias Koefferlein ade8a54ede WIP 2026-04-10 23:07:23 +02:00
Matthias Köfferlein b6d8ce9f45
Merge pull request #2317 from KLayout/feature/issue-2316
Feature/issue 2316
2026-04-10 17:59:21 +02:00
Matthias Köfferlein 4ab3d957ec
Merge pull request #2324 from KLayout/bugfix/issue-2301
Hopefully fixing issue #2320
2026-04-10 17:58:36 +02:00
Matthias Koefferlein 97aa28d01b Hopefully fixing issue #2320 2026-04-09 22:25:16 +02:00
Matthias Köfferlein 8e64d1eff9
Merge pull request #2321 from KLayout/bugfix/issue-2320
Fixing issue #2320
2026-04-09 20:40:15 +02:00
Matthias Koefferlein 615658cb30 Fixing issue #2320
The fix implements a dynamic buffer for the InflateFilter
which is dynamically enlarged if needed. That fix is universal
and does not only apply to OASIS.

@abdelq Thanks for the test case
2026-04-06 16:48:29 +02:00
Matthias Köfferlein dd1a3ee7d1
Merge pull request #2309 from KLayout/feature/issue-2306
Implemented solution for #2306
2026-04-06 14:37:19 +02:00
Matthias Köfferlein 766380b6ea
Merge pull request #2307 from KLayout/feature/issue-2300
Feature/issue 2300
2026-04-06 14:35:40 +02:00
Abdelhakim Qbaich ec4485a264 try/catch macro in ::action_triggered 2026-04-05 18:57:18 -04:00
Matthias Koefferlein d09734fe0d Small feature: hovering over an image will not just display the image parameters in the status bar, but also the value of the pixel the mouse is over 2026-04-05 22:18:39 +02:00
Matthias Koefferlein b7d18af0e1 Updating doc. 2026-04-04 20:40:44 +02:00
Matthias Koefferlein 13a1bf713d Added DRC integration and tests 2026-04-04 20:05:37 +02:00
Matthias Koefferlein ddc17818b0 Bugfix + tests added 2026-04-04 19:34:54 +02:00
Matthias Koefferlein 60480d35fc Fixed issue #2311
As I see it, only this particular tool top was not
guarded against non-UI mode. All other tooltips
are either guarded or pop up only in a user
interaction context.
2026-04-04 17:08:36 +02:00
Matthias Koefferlein bd9033e20c Wording. 2026-04-04 16:45:44 +02:00
Matthias Koefferlein 222c08a73a Implementing "spaced array" option
The "make array" dialog now has a tab where you can
select "spaced mode". In spaced mode, the bounding box
of the selection is used to compute the array pitch.

You can add a space between the columns and rows and
decide whether to use all layers for the instance
bounding boxes or only the visible ones.
2026-04-04 16:43:59 +02:00
Matthias Koefferlein 60a210c264 Config option: disable generation of new layers
The name of the config option is "auto-create-new-layers".
It is a per-view option and can be edited on the
"Application/Layer Properties" page.

With this option set to true (default), new layers
are automatically added to the layer list on

1. Paste of cells and shapes
2. Placing of instances

Manually adding new layers to the layer list is always possible.
2026-04-04 15:28:05 +02:00
Matthias Koefferlein 65fec36902 Fixed a bug in PCell parameter computation
"coerce_parameters" and "callback" was called with the client layout
instead of definition layout, hence the DBU was incorrect if both layouts have different DBU.

This became visible on the computed character dimensions of the Basic.TEXT
PCell when the client layout had a DBU != 1nm.
2026-04-04 14:40:36 +02:00
Matthias Koefferlein 57eb90df69 Fixed a small glitch (Warning about open transaction at end of partial move) 2026-04-04 14:37:15 +02:00
Matthias Koefferlein a092d7c6ca Enhancement to Library#lib_by_name
* Better description
* Allowing "*" for the technology name to capture all
  libraries with that name
2026-04-04 14:27:01 +02:00
Matthias Koefferlein b866ac63d3 Do not allow converting children of proxy cells to static
Proxies and their tree below should not be manipulated,
hence this operation is not allowed.
2026-04-04 00:20:37 +02:00
Matthias Koefferlein 21ecd80253 Allow to configure auto-sync of library folders. Default is off. 2026-04-03 23:59:43 +02:00
Matthias Koefferlein 9b2d1fe0be Adding the description option to library declaration files 2026-04-03 23:05:07 +02:00
Matthias Koefferlein a39bc587c1 Reusing libraries inside Library#library_from_file and Library#library:from_files for conservative reloading. 2026-04-03 17:49:29 +02:00
Matthias Koefferlein 62e45daaea Updating doc. 2026-04-03 16:23:01 +02:00
Matthias Koefferlein ad850f3d83 Merge branch 'lib-file' into bugfix/issue-2305 2026-04-03 15:42:00 +02:00
Matthias Koefferlein 87415f848c WIP 2026-04-03 11:33:46 +02:00
Matthias Koefferlein 5762bc3ecc Remove debug output 2026-04-03 11:31:53 +02:00
Matthias Koefferlein f33f8ea756 Fixing Layout::cleanup - was missing an update to establish proper cell parent relationships 2026-04-03 11:30:34 +02:00
Matthias Koefferlein 404d6fa20f Fixed BASIC lib tests - cell pointers cannot considered to be stable across lib.refresh calls as this basically would need to create cold proxies 2026-04-03 11:10:34 +02:00
Matthias Koefferlein 1abfd5363e Fixed an infinite loop 2026-04-03 00:30:01 +02:00
Matthias Koefferlein a6dce8c2ad Improving Layout::cleanup to consolidate library and cold proxies and to establish proper cell names if possible 2026-04-02 22:14:11 +02:00
Matthias Koefferlein dcc7f28c77 Updating test data 2026-03-31 22:09:27 +02:00
Matthias Koefferlein 7cec679d39 Taking care of complex library reference scenarios where libraries self-reference and under the presence of stale references. Main issue is order of resolution and indirect references due to replication. Solution is to repeat resolution until saturated. A test is supplied. 2026-03-31 21:35:33 +02:00
Matthias Koefferlein 062567f206 WIP 2026-03-29 19:41:19 +02:00
Matthias Koefferlein ddb261d708 Improving stability of library refresh
1.) Safeguard against missing cells
2.) Use topological order during refresh
    This avoid child-first issues
3.) Use cell names and basic names for mapping
    (cell names may be disambiguated while
    basic names are not)
2026-03-28 22:05:23 +01:00
Matthias Koefferlein 4c47cfb03a WIP: 'sparse_array_limit' on DSS 2026-03-23 22:49:47 +01:00
Matthias Koefferlein c03a617fe2 Added some tests for the netlist browser API 2026-03-23 21:42:49 +01:00
Matthias Koefferlein 1588e74873 Providing a way to generate netlist browser paths
You can generate paths from net, device, circuit or subcircuit
objects. To generate a path for an object from the first netlist
of a pair (layout netlist in LVS case), use

  NetlistObjectsPath#from_first

e.g.

  path = RBA::NetlistObjectsPath::from_first(net)

For an object from the second netlist (schematic in the LVS case)
use "from_second".
2026-03-23 20:36:46 +01:00
Matthias Koefferlein 92143ef543 WIP - experimental feature to resolve sparse cell arrays 2026-03-22 23:49:51 +01:00
Matthias Koefferlein 851919c42b Enabling direct storage of boxes in box scanner for (slightly) better performance 2026-03-22 21:50:26 +01:00
Matthias Koefferlein aa361277a0 Implementing replication in LStream, OASIS and GDS2 2026-03-22 21:21:11 +01:00
Matthias Koefferlein 56e84e7056 Added test for lib file reading 2026-03-22 16:01:39 +01:00
Matthias Koefferlein 4908f51e1c WIP 2026-03-22 00:07:09 +01:00
Matthias Koefferlein c211925d2a Implemented solution for #2306
First of all, NetlistBrowserDialog#current_path now has a setter.
Changing the selection will navigate to the location of the
selected object, but not issue an "on_selection_changed" event.

In addition, the following features have been added:
* NetlistBrowserDialog#db_index
* NetlistBrowserDialog#view
2026-03-21 20:32:32 +01:00
Matthias Koefferlein f501f039c0 Added tests and two convenience methods
The two convenience methods are

Library#library_from_file
Library#library_from_files

Both create and register a Library object tied to a file.
This object supports proper reloading and re-mapping on
"refresh".
2026-03-21 14:59:08 +01:00
Matthias Koefferlein ca3505b872 Part of the bugfix for #2305 - properly mapping cell indexes after library reload 2026-03-21 11:17:39 +01:00
Matthias Koefferlein cb9e25f1b3 Issue #2300: added documentation about KLAYOUT_DEF_FORMAT and KLAYOUT_LEF_FORMAT environment variables. 2026-03-21 09:25:17 +01:00