-
Notifications
You must be signed in to change notification settings - Fork 268
Expand file tree
/
Copy pathChangelog
More file actions
3910 lines (3733 loc) · 231 KB
/
Changelog
File metadata and controls
3910 lines (3733 loc) · 231 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
0.30.7 (2026-03-07):
* Enhancement: %GITHUB%/issues/2248 Switch layouts but without losing the handle
* Bugfix: %GITHUB%/issues/2273 Potential use-after-free bug due to Ruby GC
* Bugfix: %GITHUB%/issues/2277 Poor netlister performance in some cases
* Enhancement: %GITHUB%/issues/2278 Option to hide markers frames
* Bugfix: %GITHUB%/issues/2284 klayoutrc parse issue silently replaces config file
* Bugfix: %GITHUB%/issues/2286 CLI arguments, '--help' / '--version' should be implemented
* Bugfix: %GITHUB%/issues/2293 Layers window: changing the layer order with the arrow buttons deselects the layer to be moved
* Enhancement: ReportDatabase#merge - a method to merge two report databases
* Bugfix: double clicking an edge in partial mode opened the properties dialog, not setting a point
* Bugfix: Python did not support downcasting of PolygonWithProperties to Polygon on Shapes#polygon for example
* Bugfix: OASIS reader was not able to read S_GDS_PROPERTY from file level or under forward reference conditions
* Enhancement: Adding an option '-of|--format' to strmxor and strmclip to specify the output format instead of taking it from the suffix
* Bugfix: 'oasis_read_all_options' as always on in buddy tools
* Bugfix: avoid a crash on application exit when using objects for user property values or names
* Bugfix: Fixing a small glitch: drawing into a ghost cell is possible, but did not turn off the ghost cell flag
* Bugfix: Fixing a potential segfault during layout painting due to a race condition (rare but happened)
* Enhancement: Performance improvement for hierarchical processor - better parallelization in some cases
0.30.6 (2026-02-07):
* Bugfix: %GITHUB%/issues/2210 LayoutView::create_measure_ruler() creates incorrect rulers
* Enhancement: %GITHUB%/issues/2214 Take selection modifer into account on release rather than on click
* Bugfix: %GITHUB%/issues/2220 Select fails to select from 2nd layout when two are loaded in same panel
* Bugfix: %GITHUB%/issues/2221 "save all" doesn't use the "generic options" in "save as"
* Enhancement: %GITHUB%/issues/2224 Object Properties should allow layer change
* Bugfix: %GITHUB%/issues/2229 Compilation error when building with the -without-qt and -with-64bit-coord flags together
* Bugfix: %GITHUB%/issues/2234 Trace net / trace path still not working
* Bugfix: %GITHUB%/issues/2252 db::NetlistCompare: internal error when comparing schematic and netlist
* Bugfix: %GITHUB%/issues/2262 strmxor -u -l wrongly reports differences on identical layers
* Bugfix: %GITHUB%/issues/2263 klayout throws an ERROR reading a magic file with "tri ... sw"
* Bugfix: %GITHUB%/issues/2267 LoadLayoutOptions.lefdef_config.map_file fails when path contains '+' character
* Bugfix: Using floats for Polygon::smooth distance checks, so that precise measurements are taken
* Enhancement: Point-like objects use pan-to-selection instead of zoom-to-selection when pasting
* Bugfix: No duplicate warning message box when drawing texts on a hidden layer
* Enhancement: More options on 'evaluate_nets' expressions, i.e. 'copy'. See documentation for details
* Enhancement: L2N format now will always include the expanded net name, so referring to a net in a log entry is possible
* Bugfix: DRC collect* functions did not work on edge pair layers
* Enhancement: Documentation now will also list hidden/internal classes to avoid confusing references to invisible classes
* Enhancement: DRC extend_refs function is now also available for edge and edge pair layers
* Enhancement: Pressing Ctrl key while drawing a box enforces a square, pressing Shift while drawing a box makes it centered at first location
* Enhancement: Pressing Ctrl and Shift keys does the same for box-style rulers (box, ellipse)
* Bugfix: Fixing strange snapping behavior on partial move at 45 degree directions
* Enhancement: Many operations now display edit boxes with current distances or dimensions.
Press "Tab" to navigate to these boxes and specify distances or dimensions numerically.
Press "Enter" to commit these changes and "Escape" to leave the boxes.
For example: move distance, edge length during drawing of polygon or paths, box dimensions,
text strings.
* Enhancement: New ruler mode "diagonal only"
* Bugfix: selecting a recent configuration in the editor options did not select the layer if it was freshly created
* Enhancement: Multi-Rulers can now be configured to display incremental lengths
(use "DD", "LL", "XX" and "YY" variables - see documentation)
* Enhancement: "Move By", "Scale" and "Rotate by Angle" dialogs now have an "Apply" button and values are persisted
* Bugfix: Finding of objects at the mouse location (e.g. for net probing) did not work properly for dense layouts
* Enhancement: The Library view does not list cells starting with an underscore. That is a way to hide cells only used internally.
0.30.5 (2025-11-09):
* Enhancement: %GITHUB%/issues/2147 Feature request: collect multiple files into a single library if the library name is identical
* Bugfix: %GITHUB%/issues/2156 Crash when loading library with mabrains klayout_lib_manager
* Bugfix: %GITHUB%/issues/2160 Compiling with QT6 and -without-qt-network
* Bugfix: %GITHUB%/issues/2162 Select rectangle, query => coredump. asan: heap-use-after-free
* Enhancement: %GITHUB%/issues/2168 Reloading cell libraries does not work
* Bugfix: %GITHUB%/issues/2169 Tech-specific "python" folder not added to path
* Enhancement: %GITHUB%/issues/2170 Ergonomics / Interface / "Select Cell" dialog: position of the "Show all cells" tick box
* Enhancement: %GITHUB%/issues/2172 Finer-grained library API
* Enhancement: %GITHUB%/issues/2174 Publish "on_current_layer_changed_event" of LayoutView
* Enhancement: %GITHUB%/issues/2175 True text bounding box for labels in Python/Ruby
* Enhancement: %GITHUB%/issues/2176 Allow placing vias in all modes
* Enhancement: %GITHUB%/issues/2180 Feature request: View->Show Unresolved References
* Enhancement: %GITHUB%/issues/2183 strmxor --deep, --drop-empty-cells should be the default
* Bugfix: %GITHUB%/issues/2191 LIBNAME is not maintained in GDS in "File/Save"
* Bugfix: %GITHUB%/issues/2194 Forward/backward features can't be bound to a key
* Bugfix: %GITHUB%/issues/2195 Feature request: extend PCell API to provide a suitable cell name including PCell parameters
* Bugfix: %GITHUB%/issues/2201 Net Tracer "Trace path" not working when zooming
* Bugfix: %GITHUB%/issues/2208 DRC Failed to report results correctly
* Bugfix: Fixing problem with HM decomposition with non-trivial triangulation constraints
* Enhancement: Cursor now snaps to center of edges and centers of boxes too
* Enhancement: Experimental integration of the LStream format
Details about the LStream format and the motivation can be found here:
https://codeberg.org/klayoutmatthias/lstream/src/branch/main/doc/doc.md
If you encounter problems building KLayout, you can use the -nolstream option
in the build script to disable this module.
0.30.4 (2025-09-09):
* Bugfix: %GITHUB%/issues/2110 Feature request: make unresolved references visible and editable in the layout view
* Bugfix: %GITHUB%/issues/2111 Internal error on R extraction
* Bugfix: %GITHUB%/issues/2112 Incorrect computation of tile border in tiled fill
* Enhancement: %GITHUB%/issues/2116 Associate each image to a layer
* Bugfix: %GITHUB%/issues/2133 Crash in Macro Development: when using find and replace
* Bugfix: %GITHUB%/issues/2134 DRC: edge layer - merged method gives an error
* Enhancement: %GITHUB%/issues/2141 Allow corner dots to participate in edge DRC functions
* Enhancement: %GITHUB%/issues/2145 "default_text_size" Option for GDS writer
* Bugfix: Undo was not properly handled on "apply technology" - layer properties were cleared
* Enhancement: "Relative" option of properties dialog is persisted now
* Enhancement: "Select highlighted objects" from context menu in properties dialog's object list.
This feature will reduce the selection to the highlighted objects.
* Enhancement: Support for via placement during path drawing
Vias can switch to a new layer and are automatically placed. To configure vias,
PCells have to be supplied which are declared as vias. See PCellDeclaration#via_types.
There is also a new sample (Python or Ruby) that demonstrates a simple via type.
The default key binding to trigger via placement is "O".
* Bugfix: Fixing a crash on 'show parameter names' in PCell dialog
* Bugfix: Bugfix on Plugin registration
One effect was that on dynamic re-registration of a plugin the grid plane disappeared.
* Enhancement: Added a sample for editor hooks (allow painting a DRC halo during editing)
* Enhancement: Adding a number of features to the plugin API, specifically:
- Allowing to register new pages for the editor options and configuration dialog
- Support for snapping and object snap indicators
- "Tab" key is handled to generate an event which can be used to show a modal dialog or
a pre-defined page.
A sample is provided for Python and Ruby which demonstrates these features
* Bugfix: Internal error when trying to replace a shape in a standalone Shapes collection while preserving properties
* Bugfix: Internal error when copying while move/copy operation of images and rulers
* Bugfix: Avoid a warning on writing cells/files in 'under_construction' mode when there is nothing to update
* Enhancement: Rulers now snap to objects while moving
* Enhancement: Added LayoutView#layer_list_name as read access for LayoutView#rename_layer_list
* Enhancement: DRC and Region fill functions now take an exclude area as a separate argument
This will sometimes remove the need for doing expensive "NOT" computations before
passing an "to fill" area to the fill functions. Now, this computation is done internally
and more efficiently in most cases.
* Bugfix: MainWindow now is a managed object. This removes the need to keep an instance
in scripts in most cases - for example when registering event callbacks on MainWindow
* Bugfix: Polygon's "to_itype" and "to_dtype" do not attempt orientation normalization now.
This helps preserving non-orientable polygons, specifically those which are created
by Polygon#sized and related functions.
* Bugfix: LayoutView#clear_layer_list now preserves the layer list name (it was cleared as well)
* Enhancement: While drawing a box, the other corners also snap to objects as second priority now
0.30.3 (2025-08-05):
* Enhancement: %GITHUB%/issues/2044 Different combination modes on strm2xxx tools (+ and ,)
* Bugfix: %GITHUB%/issues/2073 Klayout fails to read CELLNAME S_CELL_OFFSET property on Windows on big files
* Bugfix: %GITHUB%/issues/2075 strm2oas ignores def net routing wire extensions
* Bugfix: %GITHUB%/issues/2081 strm2oas a.oas,c.oas o.oas coredumps
* Bugfix: %GITHUB%/issues/2087 DRC: Poor fill with skew step vectors (see more fill-related topics below)
* Bugfix: %GITHUB%/issues/2088 Fixed a use case that generated duplicate OASIS cell IDs
* Bugfix: %GITHUB%/issues/2094 Performance issue in the python code to insert Regions into Shapes
* Bugfix: %GITHUB%/issues/2100 RNetExtractor extracts wrong RNode locations with tesselation
* Bugfix: %GITHUB%/issues/2102 RNetExtractor internal error
* Bugfix: Fixed automatic execution of scripts after package installation
Now, restarting KLayout after package installation may not be needed
* Bugfix: File watcher dropped file after is was temporarily removed
* Bugfix: After deleting terminals from devices, reading old L2N/LVSDB files
made these terminal re-appear in the netlist browser.
* Enhancement: primary and secondary device parameters are separated in
the LVS netlist view, so it is easier to see which parameters are relevant
* Bugfix: Avoid a crash when reading OASIS files with broken code tables
in OASIS CBLOCKs
* Enhancement: New Ruby/Python functions: Macro#current and Macro attributes
(Macro#get_attribute, Macro#has_attribute, Macro#set_attribute, Macro#delete_attribute)
These features allow passing values in and out from a macro in other ways
than defining global variables and basically allow parameterized macros.
* Enhancement: Convenience function ObjectInstPath#cell
* Bugfix: Some layout queries did not render the correct path_dtrans
* Bugfix: "tap" feature
- was not selecting shapes that fully overlap the view
- texts are not considered as detecting them requires potentially search a large area
* Bugfix: Fixed a TODO from old issue #1470
* Enhancement: DRC function "def_output": A simple yet useful extension to obtain
the output layout and to manipulate it (within limits)
* Bugfixes and enhancements: fill feature (see also issue #2087)
- tiles in tiled mode most not overlap when the origin is not global as tiles may use different origins
- more efficient computation of remaining fill area
- fill pattern "margin" feature simplifies keeping distance to other fill
shapes or original features in multi-fill scenarios
- fixed MT issues when using the fill feature in tiled mode with multiple threads
- better compression of fill cell instances into arrays
* Enhancement: Ruby/Polygon methods set_properties and clear_properties for Cell, Layout, Shape and Instance
* Enhancement: a bunch of features that utilize expressions on polygons and other shapes
to attach properties, filter base on properties or compute values in properties
(aka "measurement features")
- PolygonFilterBase#expression_filter (to be used in Region#filter and Region#filtered)
can be used to filter polygons based on KLayout expressions, including properties
- PolygonPropertiesExpressions object (to be used in Region#process and Region#processed)
can be used to attach properties based on KLayout expressions, including other properties
- Same for Edges, EdgePairs and Texts
* Enhancement: handling of properties in shape merge in Region
- Region#join_properties_on_merge controls how properties and handled during shape merge
- New respective arguments in Region#merge, Region#merged
- New layer methods "merge_props" and "merged_props" in DRC (allows joining properties
from same shapes on different layers)
* Enhancement: net property evaluation using KLayout expressions.
Allows implementing more complex antenna rule checking schemes for example.
- Ruby/Python: LayoutToNetlist#evaluate_nets
- DRC: evaluate_nets
0.30.2 (2025-05-29):
* Enhancement: %GITHUB%/issues/2016 Lazy evaluation of PCell also when changing guiding shape properties
* Enhancement: %GITHUB%/issues/2041 strm2oas should read --lefdef-lefs and --lefdef-lef-layouts only once
* Enhancement: %GITHUB%/issues/2055 Check ports feature for LVS
* Enhancement: %GITHUB%/issues/2057 Feature request: nanometer scalebar
* Bugfix: %GITHUB%/issues/2060 Edges#with_angle fails for long edges
* Enhancement: Support for ARM Python packages (thanks, Troy!)
* Enhancement: PolygonNeighborHood now allows specifying a variant type
for anisotropic applications
* Bugfix: Lower case hex escapes in URI's were not handled correctly
* Bugfix: internally handling "%ld" sprintf as 64bit compatible for
better Linux/Windows compatibility (e.g. file position in error messages
was not printed correctly on Windows at positions >2G)
* Bugfix: LVS DB internal net names now are preserved and not renumbered
This way, log entries are consistent with net names and the generated netlist
names are consistent with LVS reports.
* Bugfix: "same_nets" net names are now case insensitive in both netlists
instead of schematic only. See https://github.com/IHP-GmbH/IHP-Open-PDK/issues/484
* Feature: Ruby/Python API for adding and removing log entries in LVS DBs
LayoutToNetlist#clear_log_entries and LayoutToNetlist#add_log_entry
* Feature: NetlistCrossReference#each_net_pair etc. functions take a single
Circuit or Net object instead of a pair (can be schematic or layout objects)
* Feature: Support functions for parasitic extraction - experimental
Currently, pieces for R extraction are available in the pex Python module space.
These are just first bits - see https://martinjankoehler.github.io/klayout-pex-website/doc/doc.html
for ongoing work.
* Feature: MALY jobdeck format support (reading) - experimental
0.30.1 (2025-04-27):
* Bugfix: %GITHUB%/issues/2011 Some DRC bugs fixed
* Bug: %GITHUB%/issues/2014 Bug fixes in LEF/DEF reader
* Enhancement: %GITHUB%/issues/2019 Support for Qt 6.9
* Bugfix: %GITHUB%/issues/2020 Strict weak ordering issue fixed in edge processor
* Enhancement: %GITHUB%/issues/2024 Option to configure grid density
* Bugfix: %GITHUB%/issues/2025 Brackets get added in List type PCell parameter edit field
* Bugfix: %GITHUB%/issues/2026 Display is dead after opening 2.5d view
* Bugfix: %GITHUB%/issues/2038 DEdgePairWithProperties not working properly in scripts
* Bugfix/Enhancement: some updates of "strmxor" tool
- strmxor was giving wrong results if cell variants are
present where one variant is covered entirely by a large shape
- Parallelization now happens on a per-layer basis (same as for
XOR tool in KLayout)
- Shape count was not consistent in deep mode
- All buddy tools print total runtime with -d11
0.30.0 (2025-03-25):
* Bug: %GITHUB%/issues/1996 More robust triangulation
* Bug: %GITHUB%/issues/2002 Path to polygon conversion issue
* Enhancement: Better support for user properties
The property management has been overhauled. Properties are not globally
scoped. The "Layout" class now provides class methods to convert property IDs
to property hashes and back. It is no longer required to know the origin of
a property ID.
Other changes are:
- New classes "BoxWithProperties", "EdgeWithProperties", "PolygonWithProperties",
"SimplePolygonWithProperties", "PathWithProperties", "EdgePairWithProperties",
"TextWithProperties" and corresponding "D..." classes.
Many functions accept these objects now in addition to the property-less "Box",
"Edge" etc. objects. Many functions now deliver property-annotated objects
instead of the plain ones.
- "EdgePairFilter#property_glob", "EdgePairFilter#property_filter", "EdgePairFilter#property_filter_bounded"
creates filters for edge pair objects, which can be used on "EdgePairs" containers to
filter by properties.
- The same is available for "EdgeFilter" (for filtering edges in "Edges" containers),
"PolygonFilter" (for filtering polygons in "Region" containers), and
"TextFilter" (for filtering texts in "Texts" containers)
- New method "process_with_properties" for "PolygonOperator", "EdgeOperator",
"EdgePairOperator" and "TextOperator"
* Enhancement: New class "PolygonNeighborhood"
This is a visitor to obtain all "neighboring" polygons for each polygon
in a Region. Currently, neighborhood is defined by the bounding box of
the primary polygons.
* Enhancement: Layout queries can use "$_" to refer to the current cell now
* Enhancement: New methods:
- "LayoutToNetlist#build_net", "build_nets" and "build_all_nets" do not
- "LayoutToNetlist#layer_index" from a name
- "LayoutToNetlist#texts_by_index" and "LayoutToNetlist#texts_by_name"
- "LayoutToNetlist#original_layout" and "LayoutToNetlist#original_top_cell"
- "LayoutToNetlist#polygons_of_net" and "LayoutToNetlist#texts_of_net"
- "Device#terminal_ref"
- New "text_prop" argument in Texts#polygons (texts can transfer their
string to the generated polygons as user properties)
- New methods "Polygon#delaunay", "DPolygon#delaunay", "SimplePolygon#delaunay"
and "DSimplePolygon#delaunay"
0.29.12 (2025-03-02):
* Bug: %GITHUB%/issues/1976 Crash on cross mode, lw > 1 and oversampling
* Bug: %GITHUB%/issues/1987 Build failure against Qt6.8
* Enhancement: %GITHUB%/issues/1989 API enhancements: several new split_... methods
on Edges, Region, EdgePairs and Texts, delivering a pair of containers with
selected and unselected objects.
* Bug: %GITHUB%/issues/1993 Tiling processor kept layout locks, causing DRC issues with "with_density"
* Bug: %GITHUB%/issues/1997 Can not find a file in Open Recent menu (a string unescaping bug)
* Bugfix: 'Save All' was not updating the dirty flag in the inactive tabs
* Bugfix: Fixing a crash when editing PCell parameters while the macro editor is open
* Bugfix: Fixed a potential Crash on "save all"
* Bugfix: Fixed a bug when returning a Region into a layout with cells unselected
* Bugfix: Tab title were not updated on cell rename
* Bugfix: Fixed a crash on certain layout queries
- For example "instances of cell .*.* where inst.trans.rot == 2" was crashing
* Bugfix: Fixing two problems with layer mapping
- Mapping "[*/*] 100/0:0/0" (for example) created 0/0 two times when the input contains 100/0 and 0/0. Now
it is a single layer only
- The mapping table generated from strings now uses layer indexes from a range that should not collide
with existing layer indexes.
0.29.11 (2025-01-17):
* Bug: %GITHUB%/issues/1948 Crash by instantiate a Cell in a Library-Cell
* Bug: %GITHUB%/issues/1953 Callback_impl & coerce_parameters_impl parameter display issue
* Bug: %GITHUB%/issues/1955 Locked layout after certain operations
* Bug: %GITHUB%/issues/1959 Color corrections not working properly for images with color mapping / float values
* Enhancement: %GITHUB%/issues/1963 Add lock to Cell
* Bug: %GITHUB%/issues/1967 Possible net tracer bug in point-and-click net trace
* Enhancement: %GITHUB%/issues/1971 Suppress warnings written with tl::warn from Python
0.29.10 (2024-12-03):
* Bug: %GITHUB%/issues/1941 Crash with the navigator open
* Bug: %GITHUB%/issues/1942 Syntax error in pyi stubs
As a bonus, added defaults for Box#enlarge and Box#enlarged (dx, dy)
* Bugfix: Partial mode snapping now is object first, then grid
* Bugfix: Key bindings have not been properly read from the configuration file
The change in the configuration string structure triggered an old bug:
Toolbar buttons had a twofold configuration and only the last one was
considered. Changing the order of the entries could spoil the configuration.
0.29.9 (2024-12-01):
* Bug: %GITHUB%/issues/1907 Locking layouts against modification during recursive iteration of instances and shapes
This prevents crashes in write-white-iterating scenarios
* Enhancement: %GITHUB%/issues/1923 Convenience versions of "move", "moved" on various objects
* Bug: %GITHUB%/issues/1925 Problem with import of MAGIC files
* Enhancement: %GITHUB%/issues/1934 (partial) shapes are instances are not selected when they exceed the viewport
This avoids selecting large background objects my mistake and then
moving them without noticing.
* Bug: %GITHUB%/issues/1930 Selection of structures results in thick black lines
* Enhancement: An experimental feature: EdgeNeighborhoodVisitor
* Enhancement: Edge pairs support transformation with Matrix3d now
* Enhancement: Trying to create a category in a RDB with an existing name will return the present one
* Bugfix: Typos fixed in manual
* Bugfix: Status bar was not cleared when the selecting is empty
* Bugfix: Texts cannot be selected now when they are turned off in the layout view
* Bugfix: Some icons were missing - for example in the netlist browser
* Bugfix: By default, layer properties are not initialized with the default when no .lyp file is specified in a technology
You can turn this feature off by disabling the "Initialize other layers with default properties"
option on the techology's "General" page.
* Bugfix: More consistent handling of special paths (like data: URLs) for technology components
* Bugfix: Improve snapping in partial mode when snapping to objects
* Enhancement: Supporting "Move by" after "Clone interactive"
* Enhancement: Key bindings and menu visibility is now formatted for better readability
Now, there is one line per entry in the configuration file and the
entries are sorted with the important ones first.
* Enhancement: New export option "Copy to clipboard" in the "Search and Replace" result list
* Enhancement: Showing "select" expressions in the header row of the "Search and Replace" result list
* Enhancement: Configuration options for the transient selection markers
Now it is possible to configure transient selection differently from
static selection (line style, fill)
* Bugfix: Fixing a problem with slow transient selection in edit mode
* Enhancement: Layout#read_bytes and Layout#write_bytes
0.29.8 (2024-10-20):
* Enhancement: %GITHUB%/issues/1869 Adding a new option, -to or --top-output to strmxor
* Bug: %GITHUB%/issues/1870 Do not allow editing on invalid layers
* Bug: %GITHUB%/issues/1874 Crash when copying a cell to another layout
* Bug: %GITHUB%/issues/1877 Rounding introduces DRC error in LEF/DEF via
* Bug: %GITHUB%/issues/1880 Enhancing GDS2 writer float conversion such that less rounding occurs
* Bug: %GITHUB%/issues/1885 --subst-char option in strm2oas was not accepting "do not substitute"
* Bug: %GITHUB%/issues/1886 Small documentation fix
* Bug: %GITHUB%/issues/1887 Small documentation fix
* Bug: %GITHUB%/issues/1899 Adding global operators for QPoint on Qt6 and more
* Enhancement: %GITHUB%/issues/1900 Help/about dialog content selectable
* Bug: %GITHUB%/issues/1902 Two potential memory issues fixed
* Bugfix: LEF/DEF reader recognizes existing layers by name now
This happened to be an issue if you were reloading a LEF/DEF layout as
name layers got added as duplicates.
* Bugfix: In DRC, with '@+' as target layout, maintain the original active cell view
This way, DRC can be re-run on the original layout, but each time generating a new output cellview.
0.29.7 (2024-09-22):
* Bug: %GITHUB%/issues/1864 Copy & paste allows creating a recursive hierarchy
* Bug: %GITHUB%/issues/1860 A bug about layer undo
* Bug: %GITHUB%/issues/1857 Crash when closing application with property dialog open
* Bug: %GITHUB%/issues/1853 Cell.write and Layout.write are very slow on Windows if there are gigantic polygons in the cell
* Bug: %GITHUB%/issues/1847 Little problem with File::Setup/Application::Customize Menu
* Bug: %GITHUB%/issues/1840 "start" and "finish" became reserved names in PCells in version 0.29.5
* Enhancement: %GITHUB%/issues/1836 Allow the usage of Cell.shapes(LayerInfo(...))
* Bug: %GITHUB%/issues/1835 Single PCell file cannot be read
* Bug: %GITHUB%/issues/1832 Netlist device combination / simplify requests
* Enhancement: Print file name before warnings and add to errors (good when reading multiple files from command line)
* Bugfix: Disallow empty filenames or writing to directories as this has severe side effects
* Bugfix: Further trying to improve stability when debugging PCells in the IDE (still not perfect)
* Enhancement: More variants of Layout#properties_id, added Layout#properties_hash and Layout#properties_array
* Enhancement: DRC - more variants for Layer#insert, such as Texts and integer-type shapes
* Bugfix: Properties dialog did not apply some changes when switching the object node
* Bugfixes: Mute diagnostic warnings on Python 3.12 debug builds, fixed a potential crash during Python module cleanup
* Bugfix: Fixed a crash in the properties editor happening while selecting object type nodes in certain cases
* Enhancement: Cleaned up and enhanced documentation of LayoutToNetlist class
* Enhancement: Less agressive polygon splitting in deep mode DRC/LVS by default
"max_area_ratio" can be a negative value now, which means that skinny diagonals
are not split into a large number of triangles. This is the default.
0.29.6 (2024-08-15):
* Bug: %GITHUB%/issues/1814 Application freezes on Ctrl+Select
* Bug: %GITHUB%/issues/1816 interacting operation between EdgePairs and Region (or edges)
EdgePair layers in DRC can now tested for interacting with edges and polygons
(includes: inside, outside). New methods for EdgePairs: EdgePairs#inside etc.
* Bug: %GITHUB%/issues/1819 Discrete soft small rendering
* Bug: %GITHUB%/issues/1823 "Select all" was not working as expected for texts, API "select_all" was not working at all.
* Bugfix: Typo: ParameterState#icon was named 'tooltip'
* Enhancement: Allowing RBA::Net objects for DRCLayer#nets as well
* Enhancement: const versions of Layout#cell and Layout#top_cell(s)
* Enhancement: Generic GSI method and #_const_cast to make a const
reference into a non-const one (use with care)
* Bugfix: 'netter' function in DRC wasn't working as described - it raised an error
* Enhancement: Provide a warning message when closing the window while an operation is ongoing
* Bugfix: Avoid a segfault in the property editor due to invalid array access
* Bugfix: Properties dialog: stop handling 'Enter' key - use 'Ok' to close it
* Enhancement: Some improvements on Ascend and Descend:
- Ascend now walks up the unspecific tree too
- Descend enters cell if selected transiently
- New feature "Descend into" which also selects the child cell
as current top
0.29.5 (2024-07-30):
* Bug: %GITHUB%/issues/1784 Spice throws error at midline semicolon comments
* Enhancement: %GITHUB%/issues/1790 Support for recursive PCell instances
* Bug: %GITHUB%/issues/1804 Instantation path highlight mismatch with view window
* Bug: %GITHUB%/issues/1768 Change "angle constraint" of box and ellipse ruler templates to "any angle" by default
* Enhancement: %GITHUB%/issues/1776 Undo/redo from List
* Enhancement: %GITHUB%/issues/1779 Marker Browser: make the state of the "By Cell" or "By Category" tree persistent
* Bug: %GITHUB%/issues/1799 Can't set cell properties by script
* Bug: %GITHUB%/issues/1794 MetaInfo with (gigantic) size makes klayout write a faulty gds
* Bug: %GITHUB%/issues/1793 inconsistent results in width_check when calling by keyword argument
* Bug: %GITHUB%/issues/1782 Internal error on "nan" values in PCells
* Enhancement: GDS2 writer now observes limitations of the file format
and raises more errors on value over- or underflows. This should specifically
avoid issues writing certain large arrays which are legal inside KLayout, but
illegal in GDS2.
* Bugfix: Small bugfix: 'Delete selected stacks' was not working from stack tech component editor's context menu
* Enhancement: Trying to improve "grab" behavior of partial selection.
In certain situations is was difficult to grab the partial selected edges.
Instead other edges would be selected. Now, it is enough to click inside the
bounding box of the partial selection.
* Bugfix: Including more GeneratorExit and StopAsyncIteration in the ignored exceptions for Python.
These exception now do not make the debugger stop any longer.
* Bugfix: Properly transferring ownership for variant to Python/Ruby translation.
This is required for some Python and Ruby bindings, when objects are
transferred through generic arrays.
* Enhancement: Added Region#being_shapes_rec and Region#begin_merged_shapes_rec.
Mainly for being able to retrieve shapes with properties from Region#nets
* Enhancement: Convenience methods Shape#properties, Layout#properties, Cell#properties, Instance#properties.
These method will obtain all properties as a hash.
* Enhancement: Added Netlist#top_circuit and Netlist#top_circuits convenience methods.
These methods will deliver the single top circuit or a list of top circuits.
* Enhancement: "Copy cells" now has an option to mute the dialog (shallow/deep)
and the dialog is only shown if there are subcells
* Enhancement: Added Shapes#break_polygons, Layout#break_polygons, Region#break_polygons.
These methods split large polygons into smaller pieces.
0.29.4 (2024-07-08):
* Bug: %GITHUB%/issues/1780 Crash on deleting multiple selected shapes or items
0.29.3 (2024-07-06):
* Bug: %GITHUB%/issues/1774 ImportError: cannot import name '__version__' from 'klayout'
* Bug: %GITHUB%/issues/1771 Python exception formatting: backtrace missing for Python >=3.11.7
* Bug: %GITHUB%/issues/1757 Fixed memory issue
* Enhancement: %GITHUB%/issues/1756 Configure timeout for HTTP(S) requests
A new environment variable has been introduced to configure the
HTTP(S) timeout: KLAYOUT_HTTP_TIMEOUT (timeout value in seconds,
default is 10s)
* Bug: %GITHUB%/issues/1769 Typo fixed
* Bug: %GITHUB%/issues/1751 Code sanity issue fixed
* Bug: %GITHUB%/issues/1750 Code sanity issue fixed
* Enhancement: %GITHUB%/issues/1747 Transformations on negative floats/ints
* Bug: %GITHUB%/issues/1743 strmxor shows no difference, klayout xor shows 85
* Enhancement: %GITHUB%/issues/1741 Tooltip strings for PCell parameters
* Bug: %GITHUB%/issues/1733 Instance selecion in object properties does not match with view port object highlight
* Enhancement: %GITHUB%/issues/1655 Marker object lifetime management
* Enhancement: DRC - step-wise size with "inside" and "outside" constraint
This feature is handy for implementing latch-up rules more efficiently.
* Bugfix: OASIS reader - avoiding slight rounding of DBU In python read/write cycle (discussion-2526)
* Bugfix: Proper tracking of references of RecursiveShapeIterator.
Related to issue #1742, but not directly.
* Bugfix: Symlinks in the salt paths might have lead to macro duplication
* Bugfix: Ruby binding - "return" inside block was behaving like "break".
Now, "return" will leave the current function.
* Enhancement: LVS layer naming now also accepts an optional layer/datatype information.
* Enhancement: XOR performance enhanced in deep mode for "almost same" inputs.
* Bugfix: Macro debugger now does not prevent paint events and
screen refresh should work while debugging. In addition, the debugger
does not deadlock the desktop when using the help browser's search
function. Side effects are yet unknown - maybe debugging Qt event
handlers now becomes less stable.
Issue #1770 addresses a problem introduced during this effort and also
fixed in this release.
* Bugfix: During modal dialogs, the debugger's run/stop and step buttons were not working.
* Enhancement: DRC size/sized now also accepts sizing mode as string.
For example "layer.sized(1.um, 'square_limit')" will work now.
Previously, this argument has been ignored. This will make the GF180 DRC deck work properly.
0.29.2 (2024-06-06):
* Enhancement: %GITHUB%/issues/1724 Don't read duplicate LEF files
* Bug: %GITHUB%/issues/1722 [macOS] Crash when opening layout having Custom Macro Menus
* Enhancement: %GITHUB%/issues/1721 Feature request: send results from a query to selection
* Enhancement: %GITHUB%/issues/1719 Small LVS issues
* Enhancement: %GITHUB%/issues/1710 Feature request: create separate cell for def FILL
* Bug: %GITHUB%/issues/1709 Problem displaying multiple text labels with same x value
* Bug: %GITHUB%/issues/1706 [macOS] User Properties Dialog Crashes
* Enhancement: %GITHUB%/issues/1701 Feature request: strm2oas should report input unit differences
* Enhancement: Methods to obtain representative shapes of subcircuit pin and terminals, i.e.
LayoutToNetlist#shapes_of_pin, LayoutToNetlist#shapes_of_terminal.
* Enhancement: Some enhancements in the Ruby/Python area like better messages in case
of argument mismatch errors and better handling of default values for enum arguments.
* Enhancement: LayoutToNetlist#layer_indexes, LayoutToNetlist#layer_info (convenience)
* Enhancement: blend-mode 0 (aka AddToCell) now does not generate instance duplicates
* Bugfix: Some bug fixes on macro IDE: deleted macros do not become "zombie tabs" for example
0.29.1 (2024-05-04):
* Enhancement: %GITHUB%/issues/1700 Porting 2.5d view for compatibility with OpenGL 3.0 for better support on other platforms
This however comes with a larger memory footprint during rendering. Something to fix later.
* Bugfix: %GITHUB%/issues/1696 Cannot read LVS or L2N report with generic devices
* Bugfix: %GITHUB%/issues/1691 LVS soft connections: making a soft connection to a device terminal disconnects the device
* Bugfix: %GITHUB%/issues/1683 Spice reader accepts circuits without definition but pins get shorted
* Bugfix: %GITHUB%/issues/1681 Spice reader ".endl" should accept lib name
* Bugfix: %GITHUB%/issues/1679 Update sample macros for migration to Qt6
* Enhancement: %GITHUB%/issues/1678 Qt major version-wise Assistant
* Bugfix: %GITHUB%/issues/1671 Search and replace: Delete instances crashes KLayout
* Enhancement: %GITHUB%/issues/1666 'Visibility Follows Selection' option for the 2.5d view
* Bugfix: HTTPS timeout included time to enter password
So you had 10 seconds max. to enter your password :(
* Bugfix: marker and net browser windows did not get closed when clicking on close icon
* Bugfix: "duplicate interactive" now also working for rulers
* Enhancement: "upcase", "downcase" functions for expressions
* Enhancement: DRC features to reduce coding effort for certain rules
- New options for "corners": 'absolute' and 'negative' options
- New options for with/without_angle: 'absolute' option.
* Bugfixes: SPICE reader
- now detects recursive circuit calls
- skips empty top level circuit now, which did not happen when
control statements were present at top level
* Enhancements: DRC report category formation:
- "output" will add shapes to a category is the category name was
used before
- "output" accepts an array of names for the category name, creating
a sub-category hierarchy
* Enhancement: Enhanced handling of cell variants in DRC reports
Now, cell variants are listed with the original cell name and
a description of the variant formation.
* Enhancement: Marker browser enhancements and RDB API
- items can be added comment strings now.
- "info" and "save" function in marker database browser File menu
- file name shown in RDB selection drop-down
* Enhancement: DRC waiver concept
KLayout now includes a way to store waive flags along with RDB databases.
A waiver DB is nothing else than a report database file annotated with
waive flags and other attributes like comments, images etc.
For details see documentation under "DRC Basics".
New functions in marker browser:
- apply waiver DB
- save as waiver DB
* Enhancement: Editor hooks
This feature allows dynamically annotating shapes while
they are edited. This feature is somewhat experimental as of now.
See "EditorHooks" class for an example.
0.29.0 (2024-04-01):
* Enhancement: %GITHUB%/issues/1662 Strong default grids
* Enhancement: %GITHUB%/issues/1656 Display-->Goto Position dialog should accept + as well as - for number prefixes
* Bugfix: %GITHUB%/issues/1651 Errors when adding polygons with 4 points
* Bugfix: %GITHUB%/issues/1644 DRC: some issues with edge layers
* Bugfix: %GITHUB%/issues/1643 DRC: Feeding the same layer to two-layer operations in deep mode does not render the desired result
* Enhancement: %GITHUB%/issues/1638 let klayout marker browser read strmxor .. xor.gds.gz, xor.oas result files
* Enhancement: %GITHUB%/issues/1637 XOR optimization for prBoundary layer
* Bugfix: %GITHUB%/issues/1632 rdb python/ruby module: modifing items not possible as they are const
* Enhancement: %GITHUB%/issues/1598 LVS - Support for Soft Connections
* Bugfix: %GITHUB%/issues/1586 Refactoring transformation conversion functions for complex transformation
* Enhancement: %GITHUB%/issues/1583 Add possibility to customize main window title
* Enhancement: %GITHUB%/issues/1513 Update Qt version for Qt bindings to 5.12.12 and 6.2.1
* Bugfix: %GITHUB%/issues/1356 Instance Property form: Array Instance col/row would be more intuitive then the current row/col
* Enhancement: New ruler type "auto measure along edge"
* Enhancement: Trigger ruler measurement on mouse hovering transiently
* Enhancement: Min and max value bounds for PCell parameters in editor
The condition is not strictly enforced - for example it is not checked when
changing parameters programmatically. For that, use "coerce_parameters".
Still, this feature is an editing aid.
* Bugfix: Pixel garbage in color selector button with "Auto" color selected
* Bugfix: DRC/LVS - connect_explicit did not accept an array of nets as single argument
* Bugfix: 'edge outside polygon' now consistently ignores the border of the polygon
* Bugfix: Warning level was ignored for some warnings in LEF/DEF reader
* Bugfix: Netlist reader: anonymous circuits are not checked for known parameters
* Enhancement: LVS - Supporting remote must-connect connections
So far, must-connect connections had to be made one level up in the hierarchy
or promoted further using labels and such. Now, must-connect connections
can be made at any point up in the hierarchy.
* Bugfix: LVS - do not waste too much time analyzing failed matches
* Enhancement: LVS - LVS: Consider net names identical that differ
in signal type suffix only - e.g. 'NET:I' is identical to 'NET'
* Enhancement: OASIS reader will produce layers that are listed in layer table
but empty. Previously, empty layers were never created, even if listed in
the layer table.
* Enhancement: Reading from HTTP streams and pipes now supports automatic .gz uncompression
* Enhancement: New DRC Features
- "edges" method allows selecting convext/concave/step edges
- Interaction count for edge/edge edge/polygon "interacting"
- Improved handling of dots (degenerated edges) - these are now
passed through the edge/edge and edge/polygon booleans and
participate in "interact". This enables selecting corners and
using them to select edges.
* Enhancement: New RBA/pya Features
- Main window title: MainWindow#title (property)
- MainWindow#synchronous (getter added)
- LayoutView#is_dirty?
- Triangulation: Region#delaunay
- Quality rasterizer: Region#rasterize
- Generic edge and polygon filters and operators support hierarchical processing
with Python or Ruby callbacks: classes EdgePairFilter, EdgePairOperator,
EdgePairToPolygonOperator, EdgePairToEdgeOperator, EdgeFilter, EdgeOperator,
EdgeToPolygonOperator, EdgeToEdgePairOperator, PolygonFilter, PolygonOperator
PolygonToEdgeOperator, PolygonToEdgePairOperator, TextFilter, TextOperator,
TextToPolygonOperator
Methods: EdgePairs#filter, EdgePairs#filtered, EdgePairs#process, EdgePairs#processed,
same for Edges, Regions and Texts
- Polygon#split, Polygon#break, same for DPolygon, SimplePolygon, DSimplePolygon
- Keyword arguments for Python, Ruby and Expressions
- You can now also use "klayout" package inside the application (same code
for Python module and application) - i.e. "import klayout.db"
- Synonyms: connect/disconnect for events for better compatibility with PyQt5
0.28.17 (2024-02-16):
* Enhancement: %GITHUB%/issues/1626 Technology specific grids
0.28.16 (2024-02-12):
* Bugfix: %GITHUB%/issues/1623 Package installation with "-y" from command line does not work for URL or file
* Bugfix: %GITHUB%/issues/1619 Segfault on Fedora-39 with Python 3.12.1
* Bugfix: %GITHUB%/issues/1618 Leaking Python reference causing trouble with iterators
* Bugfix: %GITHUB%/issues/1616 DRC doc typo
* Bugfix: %GITHUB%/issues/1614 LEF/DEF .map should not map boundaries and fill to ALL purpose
* Bugfix: %GITHUB%/issues/1609 Cell.read doesn't read LayoutMetaInfo
* Bugfix: %GITHUB%/issues/1608 CustomResistorExtraction: show faulty device in GUI
* Bugfix: %GITHUB%/issues/1603 Weird parameter dialog resizing when hiding / showing many parameters at once with callback_impl
* Bugfix: %GITHUB%/issues/1602 [Qt6] Cannot normally quit the main application window
* Bugfix: %GITHUB%/issues/1594 "connect" (in flat mode) + multiple top cells give an error message
* Bugfix: %GITHUB%/issues/1592 DXF file parsing error, about spline curve
* Enhancement: DRC enhancements related to touching edges
- New DRC function switches: "without_touching_corners", "without_touching_edges"
to skip width and space errors at kissing corners and touching-edge configurations
- Kissing corners are now detected also in non-collinear edge configurations
* Bugfix: fixed rendering of color selection buttons on High-DPI screens
* Bugfix: cross-hair cursor should not use selection default line width and styles
* Enhancement: OASIS reader errors out on broken OASIS with duplicate CELLNAMEs
0.28.15 (2024-01-04):
* Bugfix: %GITHUB%/issues/1578 Missing strm2*.exe in the Windows portable binary package (*.zip)
* Enhancement: %GITHUB%/issues/1569 Make "toggle (selected) layer" key-bindable
- Plus feature: "visibility follows selection"
* Bugfix: %GITHUB%/issues/1565 quit() raises an error in KLayout Python Console
* Bugfix: %GITHUB%/issues/1556 Cannot shrink Marker Browser window
* Bugfix: %GITHUB%/issues/1539 Misleading description in 'Flatten Cell'
* Enhancement: Supporting UCRT runtime option in MSYS2 deployment
* Bugfix: DRC, LVS and other higher-level functionality now supported on 64 bit coordinate builds
* Bugfix: initial tip dialogs appear on same screen than application
* New binaries:
- Windows binaries now include UCRT (64 bit) and 64 bit coordinate versions
- RockyLinux 9 RPMs included
0.28.14 (2023-12-08):
* Bugfix: %GITHUB%/issues/1563 Duplicated Tabs in the Macro Development Tool
* Bugfix: %GITHUB%/issues/1560 git+https package installation on windows fails
* Bugfix: %GITHUB%/issues/1559 (partial) Move function not respecting some diagonals
* Bugfix: %GITHUB%/issues/1549 Layout.error_layer now available in recursive shape search
* Bugfix: %GITHUB%/issues/1542 KLayout crashes on exit
* Enhancement: %GITHUB%/issues/1535 Support pathlib.Path in Python API
Implicitly converts objects to strings using "str(object)" (Python) or "object.to_s" (Ruby).
* Bugfix: %GITHUB%/issues/1533 KLayout crashing with two consecutive calls of the same LayoutView::show_layout command
* Bugfix: %GITHUB%/issues/1531 When symlinking a .def to a target without .def suffix, file can't be loaded
* Enhancement: %GITHUB%/issues/1530 polygon from 2 size tuple points
The effect of this feature is pretty basic: tuples or lists are used as constructor
arguments for implicitly creating an object in place of them. Hence, "(x,y)" can be
used instead of a vector or a point. In some cases, this leads to ambiguities and
the implicit resolution will fail however.
Specifically a list of size-2 tuples can be passed to the "points" arguments of
Polygon and Path.
* Enhancement: %GITHUB%/issues/1528 LEF: Implement LEF58_WIDTHTABLE
* Enhancement: new methods (D)Edge#euclidian_distance and (D)EdgePair#distance
* Bugfix: package download dialog: mute an assertion, less questions for re-running macros
* Enhancement: reading $KLAYOUT_GIT_PROXY_HTTP for proxy URL in Git downloads
* Bugfix: cheats were not enabled for edges and (implicit) polygon merges such as for "sized"
* Bugfix: more consistent behavior for Marker Browser / Scan Shapes
- Scan Shapes Hierarchical will scan from current cell, not all cells
- Marker browser shows markers propertly also in descended mode
- Marker database description of shown in selection box
* Bugfix: Search feature in macro editor does not jump back to first position
* Bugfix: "Trace All Nets"
- Asks for stack now in case of multiple stacks (previously: took that from "Trace Nets" dialog)
- Skips symbols which are not used (previously: extracted them as disconnected layers)
0.28.13 (2023-11-20):
* Bugfix: %GITHUB%/issues/1534 Layout::dup does not copy properties
* Bugfix: %GITHUB%/issues/1533 KLayout crashing with two consecutive calls of the same LayoutView::show_layout command
* Bugfix: %GITHUB%/issues/1532 DRC checks give incorrect results in deep mode with magnified instances
* Enhancement: %GITHUB%/issues/1527 Marker Database Browser: add context menu to Info widget
* Bugfix: %GITHUB%/issues/1522 Changing ruler/annotation from script weirdly interferes with pya.Application.commit_config
* Enhancement: %GITHUB%/issues/1514 Package manager: Support for Git-hosted packages
* Bugfix: %GITHUB%/issues/1512 "get_image" of LayoutView should also work on inactive views
* Bugfix: %GITHUB%/issues/1511 Typo
* Enhancement: %GITHUB%/issues/1510 Cross hair cursor
* Bugfix: %GITHUB%/issues/1503 Import LEF/DEF - LEF files given in list are ignored for DEF import
* Bugfix: %GITHUB%/issues/1499 strm2oas: support LAYER <layername> TYPE OVERLAP ; for L-shaped abstracts
* Bugfix: %GITHUB%/issues/1486 Invalid error "Some macros are configured to run automatically" when changing reader options
* Bugfix: %GITHUB%/issues/1485 Incorrectly set output cell name if using DRC::cell
* Bugfix: %GITHUB%/issues/1482 Strict mode oasis should write the S_CELL_OFFSET into the CELLNAME table
* Bugfix: %GITHUB%/issues/885 Must-connect checks in LVS
* Bugfix: -without-qt builds did not include DRC or LVS
* Enhancement: Added Layout#error_layer
* Enhancement: Option -k for copying log to a file
* Enhancement: Editor option to control snapping to grid while moving
This controls whether objects are snapped to grid (on) or moved in grid
increments (off)
0.28.12 (2023-09-12):
* Bugfix: %GITHUB%/issues/1477 Macro IDE: changing the colors does not have an effect
* Bugfix: %GITHUB%/issues/1474 Throw a FATAL ERROR when multiple cellname have the same refnum
* Bugfix: %GITHUB%/issues/1473 Ignore 'Summarize missing layers' when sending XOR result to other layout)
* Bugfix: %GITHUB%/issues/1472 DEF path with first/last segment length < halfwidth are read wrong
* Bugfix: %GITHUB%/issues/1471 Make warning about 'FOREIGN differs from MACRO name' more informative
* Bugfix: %GITHUB%/issues/1470 DEF pinname VDD.extra1 should be written as VDD TEXT in gds/oasis
* Bugfix: %GITHUB%/issues/1465 (maybe fixed) DRC crash at end of script
* Bugfix: %GITHUB%/issues/1464 Layout#get_info and Layout#set_info not longer segfault on wrong layer index
* Bugfix: %GITHUB%/issues/1460 CellRename dialog is larger now initially
* Enhancement: %GITHUB%/issues/1307 (partial) Produce UNPLACED macros if location is provided
* Enhancement: New aliases for inline operators (e.g. "+=") in RBA::Region and similar classes
Reasoning is that "+=" in Ruby is resolved into "+" and "=" which does not make
use of the inline optimization. Using "join_with" instead will avoid this. Other alias:
"join" for "+", "and" for "&", "and_with" for "&=", "not" for "-", "not_with" for "-=",
"or" for "|", "or_with" for "|=", "xor" for "^" and "xor_with" for "^=".
* Bugfix: Deep region 'transform' with plain shift was not working properly with scaled instances
* Bugfix: Re-run of include-expanded DRC/LVS wasn't working
* Bugfix: Proper Python stack trace in debugger for Python 3.10
* Enhancement: Allowing to select cells by error markers too (so that PCells with errors can be selected)
* Bugfix: Avoid a segfault in the properties dialog
* Enhancement: Crash log now is shown in a more reliable way - but less fancy.
In addition, a crash log is written 'klayout_crash.log' in the home path
and the crash message is printed to error.
* Bugfix: Don't clear search when switching macro editor pages
* Enhancement: Macro editor file change notification now also is no longer a modal window
* Enhancement: Macro editor does not list __pycache__ directories
* Enhancement: Pick a tab in Macro editor from the context menu of tab bar
* Bugfix: Moving a text with a non-centered vertical alignment now uses the right location
* Enhancement: 'Copy interactive' will maintain selection
* Enhancement: Better integration of partial mode - for example 'interactive move' now also acts on partial selection
* Bugfix: Cleanup after deleting cells in partial mode - no new top cells appear
* Enhancement: Package manager
- Do not update macros while installing: avoids transient error messages
- Offer to autorun macros also after package update (so far only on package new installation
* Bugfix: Fixed a issue with the search box on the macro editor
when switching to the replace text box, focus was passed to the text editor instead
* Enhancement: CIF reader progress now functional
* Enhancement: Some speedup while sorting instances
* Bugfix: LayoutView does no longer need processEvents when saving an image to PNG
0.28.11 (2023-08-09):
* Bugfix: %GITHUB%/issues/1307 (partial) LEF/DEF PIN labels are taken from NET, not PIN name
* Bugfix: %GITHUB%/issues/1415 GDS2 files with meta info are not read by old versions of KLayout
* Bugfix: %GITHUB%/issues/1422 DXF file parsing error, about spline curve
* Bugfix: %GITHUB%/issues/1425 Python Binding / Layout / find_layer broken for layer "name"
* Bugfix: %GITHUB%/issues/1428 Feature request: "%include" in macros should allow including XML files too
* Bugfix: %GITHUB%/issues/1430 Add option to filter out geometric primitives from Marker Database Browser Info widget
* Bugfix: %GITHUB%/issues/1432 strm2oas def ignores path segment after + VIRTUAL + RECT
* Bugfix: %GITHUB%/issues/1433 Fix def syntax error in testdata/lefdef/viasize2/test.def
* Bugfix: %GITHUB%/issues/1453 Zoom (in) function with selected layers significantly slower in newer releases
* Enhancement: %GITHUB%/issues/1438 Provide a configuration option to switch back to old-style text selection (at origin only)
* Enhancement: %GITHUB%/issues/1440 Relative margin for Marker Database Browser
* Enhancement: %GITHUB%/issues/1441 Support for label position in Marker Database Browser
* Enhancements:
- Add a default extension to file names unless one is given
- Selection on partial mode enhanced: allow selection of edge
ends if edges overlap, graphical indicator for selected partial
- Wheel events do no longer change Combo Box selections
- DRC/LVS: log output overhead reduced for faster execution in
small layout cases
- Added RBA::Image/pya.Image constructor taking QImage and PixelBuffer
- Point objects are native citizens now of the database and act as
representatives for handles, better editing and visualization of
the latter
- Macro editor has "find previous" button now
- Mitigate the effect of overriding a globally-defined technology
with -nn on the command line by creating tech variants
- LEF/DEF map files now allow LEFPINNAME and PINNAME purpose to
map pin labels in a more consistent way
* Bugfix:
- Tilde expansion wasn't working for layout write
- Python specific API documentation did not mention disambiguation
for property/method ambiguity
- Python error messages are more readable and contain the exception
class
- PCell layer-type parameters did not work without a default value
- Point-like PCell handles now cannot be spoiled any longer in partial
mode
- "Duplicate" was also duplicating cells or layers depending on the
scope which was irritating. Now it's confined to geometry
- DRC/LVS logs list the correct line also with include files
- "report" wasn't working in DRC/LVS scripts for scripts only using
external sources
- Fixed a potential segfault on application exit
- Enhancements to the macro editor's search & replace function -
"replace and search next" wasn't working properly and other flaws
0.28.10 (2023-07-05):
* Bugfix: %GITHUB%/issues/1397 LayoutMetaInfo serialization/deserialization problem
* Bugfix: %GITHUB%/issues/1404 Better support for editing mode in Qt-less LayoutView
* Bugfix: %GITHUB%/issues/1407 Clip functions do not support polygons with holes
* Bugfix: %GITHUB%/issues/1409 Text edit issue (internal error)
* Enhancements:
- Made 'time' parameter optional for MainWindow#message
- strmxor performance with --deep enhanced
0.28.9 (2023-06-10):
* Enhancement: %GITHUB%/issues/1281 Layout diff can ignore shape or instance duplicates
* Bugfix: %GITHUB%/issues/1393 GDS2Text format not supported in Python module
* Bugfix: "add meta info" did not take "persisted" flag
* Enhancement: "profile" feature for DRC and LVS
* Enhancement: DRC can write to multiple targets now
- new functions "new_report", "new_target": create output channel objects
that can be used to redirect "output" to specific other channels
* Bugfix: GDS2 reader should not segfault on certain broken files
* Enhancement: performance improvement of hierarchical XOR in certain cases
* Enhancement: New methods
- Layout#copy_layer, Layout#move_layer and Layout#clear_layer with shape type selector
- Shapes#clear with shape type selector
0.28.8 (2023-05-23):
* Enhancement: %GITHUB%/issues/1314 Storing (arbitrary) data in metadata
- Meta information can be attached to layout and cells
- Meta information has a string key and arbitrary value (hash, list supported)
- Optionally, meta information can be made persistent and
is stored in the (KLayout specific) context section of GDS2 and OASIS
- Meta information is shown in the user properties dialog, but is not editable
- Meta information is similar, but not the same than user properties
* Enhancement: %GITHUB%/issues/1324 Feature request: hide empty groups
* Enhancement: %GITHUB%/issues/1345 feature request: create a def single/mulitpart path import option
* Enhancement: %GITHUB%/issues/1348 "Reload Files" popup prevents closing KLayout
* Enhancement: %GITHUB%/issues/1349 Add application events for indicating start/finish of restoring session
* Bugfix: %GITHUB%/issues/1353 Bug in RecursiveInstanceIterator
* Enhancement: %GITHUB%/issues/1357 Add binding for QObject::findChildren
* Bugfix: %GITHUB%/issues/1360 LayoutView not promoted to correct class after Plugin initialization
* Bugfix: %GITHUB%/issues/1366 Slow merging of polygons from width check edge pairs
* Bugfix: %GITHUB%/issues/1373 Region "+" skips shapes with user properties on second input
* Enhancement: Ruby debugger performance improvement - with debugger enabled, Ruby script execution was very slow
* Enhancement: Polygon "decompose_convex" tries harder to avoid generating thin slivers
* (Significant) Enhancement: Selection of labels now considers label area, not just label origin point
* Bugfix: Making 'R', 'L' and 'C' parameters for the respective Spice elements beside "value"
* Enhancement: Zoom In/Out menu functions now use the current mouse position for the zoom fixpoint (important when binding them to a key)
* Bugfix: More consistent behavior of RBA/pya: enum classes are properly made available (was for example RBA::Qt::Qt_Keys instead of RBA::Qt_Keys and pya.Qt.Keys was no fully initialized type object)
* Bugfix: Netlist reader: anonymous circuits (without definition) will not fail because of unknown parameters
* Bugfix: Closed paths lost last point after editing in partial edit mode
* Enhancement: Somewhat better grid snapping in partial edit mode
* Bugfixes/enhancements: Macro editor
- fixed missing icons for "back" and "forward"
- enhancements for "search & replace"
- Ctrl+R and Ctrl+Shift+R for replace and "replace all"
- Fixed tool tips for buttons
0.28.7 (2023-04-22):
* Enhancement: %GITHUB%/issues/1320 Support for .lib statement in Spice
* Bugfix: %GITHUB%/issues/1321 Tilde expansion in paths (e.g. "~/test.gds") on Linux
* Enhancement: %GITHUB%/issues/1322 RBA/pya: Manipulation of NetTracerTechnologComponent
* Bugfix: %GITHUB%/issues/1327 Python module: segfault on exit when hierarchy iterators are alive
* Bugfix: %GITHUB%/issues/1328 Width of layer selection boxes fixed and too small for long layer names
* Enhancement: %GITHUB%/issues/1339 RBA/pya: A method to get the QWidget for a LayoutView
* Enhancement: Better compatibility of Spice reader with ngspice
0.28.6 (2023-03-16):
* Enhancement: %GITHUB%/issues/1249 Include expanded/collapsed state of layer properties into session
* Bugfix: %GITHUB%/issues/1265 Issues installing klayout with pip on macOS related to libpng
* Enhancement: %GITHUB%/issues/1271 __version__ attribute in Python modules available now
* Bugfix: %GITHUB%/issues/1287 Goto Position (CRTL+G) is not showing the origin (0,0)
* Bugfix: %GITHUB%/issues/1291 Better compatibility of PyQt5 and KLayout (i.e. debugger does not crash)
* Enhancement: %GITHUB%/issues/1294 Persisting layer properties in sessions
* Bugfix: %GITHUB%/issues/1302 Select filter is not applied in partial mode
* Bugfix: %GITHUB%/issues/1304 Spice netlist reader: should read "M" terminals in DGS order
* Bugfix: %GITHUB%/issues/1309 Incomplete fill (polygon rasterizer issue)
* Bugfix: %GITHUB%/issues/1315 Cannot export layers from Marker Browser in viewer mode
* Bugfix/enhancement: some LEF/DEF parser issues solved with the help of a new complete sample case
* Bugfix: Avoid a segfault while editing a ruler. This happens is both a selection and a transient selection is active.
* Enhancement: Some enhancements for image editing (e.g. selection remains after moving handles)
* Enhancement: klayout.db Python module is auto-loaded for providing stream readers
* Enhancement: Spice reader now supports parametric subcircuits
* Enhancement: Build issue fixed for Qt 5.15.2 bindings
* Enhancement: Including Python's matplotlib into Windows binaries
* Bugfix: Reading fillcell-generated inputs again into DRC deck now also works for deep mode
0.28.5 (2023-02-05):
* Bugfix: %GITHUB%/issues/1275 Region.sized after .smooth returns empty region
0.28.4 (2023-02-02):
* Bugfix: %GITHUB%/issues/1267 Editor options not visible initially on layout view
* Bugfix: %GITHUB%/issues/1260 Internal error on package install
* Bugfix: %GITHUB%/issues/1259 Qt-less LayoutView creates non-editable Layout initially even if editing is requested?
* Bugfix: %GITHUB%/issues/1253 Library browser does not always display all libraries
* Bugfix: %GITHUB%/issues/1237 Python error messages should include more information
* Bugfix: Technology indicator is cleared after last view is closed
* Bugfix: Partial mode did not support Ctrl/Shift to confine movement direction
* Bugfix: Avoid very long error messages in DRC/LVS scripts (listing all details of the engine)
* Bugfix: "clone panel" did not copy custom layer stipples
* Bugfix: Generic "drc" sizing has to use twice the size range to catch all possible interactions
* Bugfix: DRC check (e.g. "sep") against second layer of "raw" type did not work in deep mode
* Bugfix: DRC grid check markers are now exactly aligned with vertexes they are supposed to mark
* Bugfix: DRC interact of polygons with texts was not working properly
* Bugfix: LVS: same_nets with two arguments was not working as described
* Bugfix: py.typed included in Python wheel now.
* Enhancement: New feature: "Screenshot to clipboard"
* Enhancement: Introducing properties in DRC and net tagging by properties
- This enables implementation of "connected" or "unconnected" mode checks
- This is the first release, so the feature is somewhat experimental
- For details check the documentation: look for "DRC Runsets" and browse to "DRC and user properties"
0.28.3 (2023-01-12):
* Bugfix: %GITHUB%/issues/1247 Layer stipples not updated after editing custom stipples with high-DPI displays
* Bugfix: %GITHUB%/issues/1245 Connectivity not preserved when loading/saving technology
* Bugfix: %GITHUB%/issues/1242 KLayout 0.28.2 crashes when registering a plugin if a layout exists
* Bugfix: %GITHUB%/issues/1240 Layer is not activated from layer properties file on first creation
* Bugfix: %GITHUB%/issues/1238 Macro IDE: breakpoints not effective on Windows
* Bugfix: %GITHUB%/issues/1234 "Clone view": layer list is empty
* Enhancement: %GITHUB%/issues/1228 Add option to have Show parameter names on by default
* Enhancement: Improved performance of layer list with many layers
* Bugfix: Restored ability to build with Python 2.7
* Enhancement: Compatibility with Qt 6.4.1
0.28.2 (2022-12-22):
* Bugfix: %GITHUB%/issues/1230 LVS browser crashes
0.28.1 (2022-12-21):
* Bugfix: %GITHUB%/issues/1225 XML error prevents generation of help index
* Bugfix: Python module now has py.typed
* Bugfix: Some segfaults fixed on MacOS, other Linux systems
* Bugfix: dropped Python modules from RPM and DEB packages as this creates conflicts with pip-installed modules
* Bugfix: OASIS reader error with CBLOCK byte counts larger than 4G
0.28 (2022-12-09):
Changes (list may not be complete):
* Bugfix: %GITHUB%/issues/989 "Layout#convert_pcell_to_static" does not handle"defunct" cells
* Bugfix: %GITHUB%/issues/991 Basic library not available in Python module
* Bugfix: %GITHUB%/issues/1059 Cleanup of PCell orphans after re-evaluation on load
* Bugfix: %GITHUB%/issues/1081 Using a layer properties file from recent list without layout loaded crashes KLayout
* Bugfix: %GITHUB%/issues/1138 Provide a way to suppress or redirect log output or disable warnings, specifically from file readers, in Python module
* Bugfix: %GITHUB%/issues/1178 technology-data xml results in SEGV
* Bugfix: %GITHUB%/issues/1190 General compatibility issue of Edges#extended/extended_* with deep mode
* Bugfix: %GITHUB%/issues/1216 DRC internal error on "moved"
* Bugfix: %GITHUB%/issues/1214 LEF via parser error
* Enhancement: %GITHUB%/issues/1056 X2 net names
* Enhancement: %GITHUB%/issues/1052 PDF documentation
* Enhancement: %GITHUB%/issues/1053 LEF/DEF enhancements
* Enhancement: Qt6 enabled
* Enhancement: KLayout paths
- $KLAYOUT_HOME can now be empty string (no home folder used)
- $KLAYOUT_PATH can now be empty string (no further and implicit search paths)
* Enhancement: Python typehints
- Python include files are generated for Python module
* Enhancement: Properties dialog now features object list on left side (select and change)
* Enhancement: Compute area and perimeter from selection (Edit/Selection/Area and Perimeter)
* Enhancement: Callbacks for PCells
- Allow dynamic change of some attributes (visibility, enabled etc.)
- By implementing "callback_impl" in PCellDeclarationHelper subclasses
* Enhancement: Report browser
- Shape user properties are turned into RDB values
- Scanning of text objects
* Enhancement: Support for high-DPI modes (scale factor 200%)
- "Highres" option to fully exploit resolution, normally follows screen scaling
* Enhancement: Multiple tech stacks for net tracer per technology
* Enhancement: New rulers
- Angle
- Radius (%GITHUB%/issues/906)
- Multi-segment
* Enhancement: LVS
- Generates a log view which may have useful hints
- Schematic and extracted netlists are available as separate tabs for LVS view
* Enhancement: DRC
- Antenna DRC measured values output on edge pair properties and into report file
- inside, not_inside, outside and not_outside also for edge/edge and edge/polygon layers
- split_inside, split_outside for edge/edge and edge/polygon layers
- andnot (edge/edge)
- inside_outside_part (edge/polygon)
- angle-class selectors (multiples or 90 or 45 degree)
- performance enhancements
- in_and_out (edge and polygon layers)
* Enhancement: "data:" URL schemes to pass direct base-64 encoded data
* Enhancement: "Close all except", "left of", "right of" etc. in layout tabs and macro editor tabs
* Enhancmennt: Drop-down list to select tab in layout views
* Enhancement: Setting for disabling "Save needed" dialog box
* Enhancement: File details are shown (dump of file header) for unknown file formats
* Enhancement: NoQt option for LayoutView
- PixelBuffer object instead of QImage
- LayoutView can be build without Qt
- Functions exist to emulate mouse events
- Included in standalone Python module
- Allows implementation of KLayout backend in web server
* Enhancement: New command "-rr" (like -r but keeps application running, for UI macros)
* Enhancement: PCell errors are shown on a special error layer which is visible together with guiding shapes
* Enhancement: custom queries support micron-unit attributes (dbbox, path_dtrans etc.)
* Enhancement: custom queries highlight results of queries when selected
* Enhancement: scale and snap improvements (edge pair support, properties maintained, arrays not always flattened)
* Enhancement: auto-run macros can not be given a priority in which they are executed
* Enhancement: D25 module overhauled
- Uses a DRC subset to generate layers
- Allows booleans and specific color assignments
- Supports edges and edge pairs (will build walls)
- Not backward compatible!
* Python/Ruby API:
- DText/Text: bbox, alignment enums
- Polygon#size with vector arguments
- DBox/Box#world
- Layout#unique_cell_name
- RecursiveShapeIterator#each, RecursiveInstanceIterator#each
- Layout#clip with DBox and Cell arguments
- Better automatic conversion of enum to int and vice versa
- CellInstArray constructor with Cell argument
- AbstractMenu#insert_menu, #clear_menu
- ActionBase#icon=, #on_menu_opening, #on_triggered