Commit Graph

6091 Commits

Author SHA1 Message Date
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
Matthias Koefferlein c311906298 Some refactoring 2026-03-20 16:58:53 +01:00
Matthias Koefferlein 94908162d6 LEF/DEF suffixes can be configured
The way to specify them is through the following
environment variables:

$KLAYOUT_LEF_FORMAT - LEF suffixes (default: "*.lef *.LEF *.lef.gz *.LEF.gz")
$KLAYOUT_DEF_FORMAT - DEF suffixes (default: "*.def *.DEF *.def.gz *.DEF.gz")

The string is a space-separated list of simple
match pattern. Only "*.xyz"-style pattern are allowed
currently.
2026-03-20 16:48:35 +01:00
Matthias Koefferlein 2dfcc9293e Allowing to explicity specify a format
Most tools and functions now allow to explicitly
specify a format for input and output. On input,
the format is usually detected, but for some
cases, this is not possible (e.g. DEF). So you can
specify the format attached to the file name in
square brackets:

e.g. file.defok[def]

"def" is the intended suffix, "defok" is the given one.

On output, the same is possible, specifically in strmxor
and strmclip:

strmxor a.gds b.gds out.xor[oas]
2026-03-20 16:30:28 +01:00
Matthias Koefferlein 00c826688f Added the ability to run DRC and LVS from strmrun 2026-03-20 15:48:58 +01:00
Matthias Koefferlein 42a008efd1 Potential performance improvement for deep-mode DRC
The idea is to use broken regions for certain operations
such as booleans in deep mode (local operations). These polygons are
more efficient. To support this, a "broken polygon" view
is supplied similar for "merged" view. The translation is
handled automatically.

As a side effect, regions may appear to be composed in broken
polygons now when they have been merged before.
2026-03-19 12:53:49 +01:00
Matthias Koefferlein 95f2335fc4 [consider merging] bugfix: DeepRegion::processed with properties did not deliver polygon refs which made them unsuitable for further processing. 2026-03-19 12:53:30 +01:00
Matthias Koefferlein 4af2662a08 Fixing unit tests 2026-03-15 10:03:51 +01:00
Matthias Koefferlein fb2559bf75 Fixing a performance regression in the merged layer computation
Problem was that while properly implementing the reverse
cluster connection during cluster merges, cluster connection
propagation suffered a complexity explosion during generation
of the cluster interactions.

Solution is to postpone the cluster joining step until
a cell is finished connecting the clusters. To mitigate the
performance effect of that, some optimizations are
introduced (e.g. using a more efficient unordered_map).
2026-03-14 18:55:03 +01:00
Matthias Koefferlein 1985f5663c Fixing issue #2293 2026-03-07 13:28:35 +01:00
Matthias Koefferlein f8646851e1 Updating doc and pyi files 2026-03-06 15:46:16 +01:00
Matthias Koefferlein a80d181cf1 Mutex got faster on i386, so threaded worker tests need to be adjusted 2026-03-05 21:16:17 +01:00
Matthias Köfferlein e82d2140b3
Merge pull request #2280 from KLayout/wip
Wip
2026-03-04 18:46:10 +01:00
Matthias Koefferlein 001deab767 Fixing Python module builds 2026-03-03 23:20:43 +01:00
Matthias Köfferlein 9b5c76f993
Merge pull request #2290 from KLayout/feature/issue-2248
Providing a solution for #2248
2026-03-03 22:38:31 +01:00
Matthias Köfferlein 5acb789ecf
Merge pull request #2289 from KLayout/bugfix/issue-2285
issues 2285 and 2286
2026-03-01 23:25:56 +01:00
Matthias Köfferlein abc1ffe9f6
Merge pull request #2276 from KLayout/bugfix/issue-2273
Bugfix/issue 2273
2026-03-01 23:25:22 +01:00
Matthias Köfferlein 0753aa47e4
Merge pull request #2288 from KLayout/bugfix/issue-2284
Implemented backup files for the configuration file
2026-03-01 23:25:08 +01:00
Matthias Koefferlein aaa165df32 Providing a solution for #2248
The solution is to introduce a new object, the layout handle.
A layout handle is a reference counting pointer to a layout.
It can be obtained from a cell view and stored somewhere.
If the cell view is closed, the layout will still exists
as long as a layout handle exists. A layout handle can be
used in LayoutView#show_layout in addition to the Layout
object to re-open a layout that existed in a closed view.
2026-03-01 21:13:40 +01:00
Matthias Koefferlein 992947f748 ReportDatabase#merge - a method to merge two report databases 2026-03-01 17:39:29 +01:00
Matthias Koefferlein 8a594c1626 Doc update 2026-03-01 15:32:21 +01:00
Matthias Koefferlein ca1d648917 Implementing --help as alias for -h and --version as alias for -v 2026-02-28 09:54:41 +01:00
Matthias Koefferlein f3b7146034 Added documentation to clarify constraints on the documentation parameter name 2026-02-28 09:48:54 +01:00
Matthias Koefferlein 25a6db267c Implemented backup files for the configuration file
Currently, up to 10 backups are kept.
"klayoutrc.1" is the most recent backup, "klayoutrc." the
second most recent etc.
2026-02-28 09:39:12 +01:00
Matthias Koefferlein 125f3b459f Added a marker attribute to turn off label frames: Marker#text_frame_enabled. Set it to false to disable the frame 2026-02-24 22:10:05 +01:00
Matthias Koefferlein b657cd9b57 Bugfix: double clicking an edge in partial mode opened the properties dialog, not setting a point 2026-02-24 21:44:33 +01:00
Matthias Koefferlein 3af5568663 [consider merging] Bugfix: Python did not support downcasting of PolygonWithProperties to Polygon on Shapes#polygon for example 2026-02-24 21:00:21 +01:00
Matthias Koefferlein de7ace9295 [consider merging] Bugfix: OASIS reader was not able to read S_GDS_PROPERTY from file level or under forward reference conditions 2026-02-24 19:17:14 +01:00
Matthias Koefferlein 7ae87404a0 [consider merging] Adding an option '-of|--format' to strmxor and strmclip to specify the output format instead of taking it from the suffix 2026-02-24 19:17:11 +01:00
Matthias Koefferlein 9f92c4eaa4 [consider merging] Bugfix: 'oasis_read_all_options' as always on in buddy tools. 2026-02-24 19:17:05 +01:00
Matthias Koefferlein c14d8cc877 [consider merging] proper cleanup of properties repo - this enables using user classes for names or values. Without this pre-finalization cleanup, the user class 'destroy' method may end up calling a method of an already destroyed class object. 2026-02-24 19:17:01 +01:00
Matthias Koefferlein bc49082955 Fixing a small glitch: drawing into a ghost cell is possible, but did not turn off the ghost cell flag. Now the flag is still on, but a non-empty cell is not considered a ghost cell for most purposes. 2026-02-19 23:26:48 +01:00
Matthias Koefferlein 95d6b0aca5 Fixing a potential segfault during drawing
This patch moves a lock inside the thread finishing
code such that a race condition of the finish sequence
and a random restart of the threads becomes impossible.
This problem has been observed while randomly zooming
with multiple drawing threads present. It's hard to
reproduce.
2026-02-19 22:34:10 +01:00