KLayout Changelog

What's new in KLayout 0.29.1

May 4, 2024
  • Features:
  • Enhancement: 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: Cannot read LVS or L2N report with generic devices
  • Bugfix: LVS soft connections: making a soft connection to a device terminal disconnects the device
  • Bugfix: Spice reader accepts circuits without definition but pins get shorted
  • Bugfix: Spice reader ".endl" should accept lib name
  • Bugfix: Update sample macros for migration to Qt6
  • Enhancement: Qt major version-wise Assistant
  • Bugfix: Search and replace: Delete instances crashes KLayout
  • Enhancement: '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.

New in KLayout 0.29.0 (Apr 1, 2024)

  • Features:
  • Enhancement: #1662 Strong default grids
  • Enhancement: #1656 Display-->Goto Position dialog should accept + as well as - for number prefixes
  • Bugfix: #1651 Errors when adding polygons with 4 points
  • Bugfix: #1644 DRC: some issues with edge layers
  • Bugfix: #1643 DRC: Feeding the same layer to two-layer operations in deep mode does not render the desired result
  • Enhancement: #1638 let klayout marker browser read strmxor .. xor.gds.gz, xor.oas result files
  • Enhancement: #1637 XOR optimization for prBoundary layer
  • Bugfix: #1632 rdb python/ruby module: modifing items not possible as they are const
  • Enhancement: #1598 LVS - Support for Soft Connections
  • Bugfix: #1586 Refactoring transformation conversion functions for complex transformation
  • Enhancement: #1583 Add possibility to customize main window title
  • Enhancement: #1513 Update Qt version for Qt bindings to 5.12.12 and 6.2.1
  • Bugfix: #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)
  • 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

New in KLayout 0.28.17 (Feb 17, 2024)

  • Enhancement: #1626 Technology specific grids

New in KLayout 0.28.16 (Feb 13, 2024)

  • Features:
  • Bugfix: #1619 Segfault on Fedora-39 with Python 3.12.1
  • Bugfix: #1618 Leaking Python reference causing trouble with iterators
  • Bugfix: #1616 DRC doc typo
  • Bugfix: #1614 LEF/DEF .map should not map boundaries and fill to ALL purpose
  • Bugfix: #1609 Cell.read doesn't read LayoutMetaInfo
  • Bugfix: #1608 CustomResistorExtraction: show faulty device in GUI
  • Bugfix: #1603 Weird parameter dialog resizing when hiding / showing many parameters at once with callback_impl
  • Bugfix: #1602 [Qt6] Cannot normally quit the main application window
  • Bugfix: #1594 "connect" (in flat mode) + multiple top cells give an error message
  • Bugfix: #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

New in KLayout 0.28.15 (Jan 5, 2024)

  • Bugfix: #1578 Missing strm2*.exe in the Windows portable binary package (*.zip)
  • Enhancement: #1569 Make "toggle (selected) layer" key-bindable Plus feature: "visibility follows selection"
  • Bugfix: #1565 quit() raises an error in KLayout Python Console
  • Bugfix: #1556 Cannot shrink Marker Browser window
  • Bugfix: #1539 Misleading description in 'Flatten Cell'
  • Enhancement: Supporting UCRT runtime option in MSYS2 deployment

New in KLayout 0.28.14 (Dec 9, 2023)

  • Bugfix: #1563 Duplicated Tabs in the Macro Development Tool
  • Bugfix: #1560 git+https package installation on windows fails
  • Bugfix: #1559 (partial) Move function not respecting some diagonals
  • Bugfix: #1549 Layout.error_layer now available in recursive shape search
  • Bugfix: #1542 KLayout crashes on exit
  • Enhancement: #1535 Support pathlib.Path in Python API Implicitly converts objects to strings using "str(object)" (Python) or "object.to_s" (Ruby).
  • Bugfix: #1533 KLayout crashing with two consecutive calls of the same LayoutView::show_layout command
  • Bugfix: #1531 When symlinking a .def to a target without .def suffix, file can't be loaded
  • Enhancement: #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: #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)

New in KLayout 0.28.13 (Nov 22, 2023)

  • Bugfix: #1534 Layout::dup does not copy properties
  • Bugfix: #1533 KLayout crashing with two consecutive calls of the same LayoutView::show_layout command
  • Bugfix: #1532 DRC checks give incorrect results in deep mode with magnified instances
  • Enhancement: #1527 Marker Database Browser: add context menu to Info widget
  • Bugfix: #1522 Changing ruler/annotation from script weirdly interferes with pya.Application.commit_config
  • Enhancement: #1514 Package manager: Support for Git-hosted packages
  • Bugfix: #1512 "get_image" of LayoutView should also work on inactive views
  • Bugfix: #1511 Typo
  • Enhancement: #1510 Cross hair cursor
  • Bugfix: #1503 Import LEF/DEF - LEF files given in list are ignored for DEF import
  • Bugfix: #1499 strm2oas: support LAYER TYPE OVERLAP ; for L-shaped abstracts
  • Bugfix: #1486 Invalid error "Some macros are configured to run automatically" when changing reader options
  • Bugfix: #1485 Incorrectly set output cell name if using DRC::cell
  • Bugfix: #1482 Strict mode oasis should write the S_CELL_OFFSET into the CELLNAME table
  • Bugfix: #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)

New in KLayout 0.28.12 (Sep 13, 2023)

  • Features:
  • Bugfix: #1477 Macro IDE: changing the colors does not have an effect
  • Bugfix: #1474 Throw a FATAL ERROR when multiple cellname have the same refnum
  • Bugfix: #1473 Ignore 'Summarize missing layers' when sending XOR result to other layout)
  • Bugfix: #1472 DEF path with first/last segment length < halfwidth are read wrong
  • Bugfix: #1471 Make warning about 'FOREIGN differs from MACRO name' more informative
  • Bugfix: #1470 DEF pinname VDD.extra1 should be written as VDD TEXT in gds/oasis
  • Bugfix: #1465 (maybe fixed) DRC crash at end of script
  • Bugfix: #1464 Layout#get_info and Layout#set_info not longer segfault on wrong layer index
  • Bugfix: #1460 CellRename dialog is larger now initially
  • Enhancement: #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
  • So 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 not longer need processEvents when saving an image to PNG

New in KLayout 0.28.11 (Aug 8, 2023)

  • Features:
  • Bugfix: #1307 (partial) LEF/DEF PIN labels are taken from NET, not PIN name
  • Bugfix: #1415 GDS2 files with meta info are not read by old versions of KLayout
  • Bugfix: #1422 DXF file parsing error, about spline curve
  • Bugfix: #1425 Python Binding / Layout / find_layer broken for layer "name"
  • Bugfix: #1428 Feature request: "%include" in macros should allow including XML files too
  • Bugfix: #1430 Add option to filter out geometric primitives from Marker Database Browser Info widget
  • Bugfix: #1432 strm2oas def ignores path segment after + VIRTUAL + RECT
  • Bugfix: #1433 Fix def syntax error in testdata/lefdef/viasize2/test.def
  • Bugfix: #1453 Zoom (in) function with selected layers significantly slower in newer releases
  • Enhancement: #1438 Provide a configuration option to switch back to old-style text selection (at origin only)
  • Enhancement: #1440 Relative margin for Marker Database Browser
  • Enhancement: #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

New in KLayout 0.28.10 (Aug 2, 2023)

  • Bugfix: #1397 LayoutMetaInfo serialization/deserialization problem
  • Bugfix: #1404 Better support for editing mode in Qt-less LayoutView
  • Bugfix: #1407 Clip functions do not support polygons with holes
  • Bugfix: #1409 Text edit issue (internal error)
  • Enhancements:
  • Made 'time' parameter optional for MainWindow#message
  • strmxor performance with --deep enhanced

New in KLayout 0.28.9 (Jun 11, 2023)

  • Enhancement: #1281 Layout diff can ignore shape or instance duplicates
  • Bugfix: #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

New in KLayout 0.28.8 (May 24, 2023)

  • Enhancement: #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: #1324 Feature request: hide empty groups
  • Enhancement: #1345 feature request: create a def single/mulitpart path import option
  • Enhancement: #1348 "Reload Files" popup prevents closing KLayout
  • Enhancement: #1349 Add application events for indicating start/finish of restoring session
  • Bugfix: #1353 Bug in RecursiveInstanceIterator
  • Enhancement: #1357 Add binding for QObject::findChildren
  • Bugfix: #1360 LayoutView not promoted to correct class after Plugin initialization
  • Bugfix: #1366 Slow merging of polygons from width check edge pairs
  • Bugfix: #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

New in KLayout 0.28.7 (Apr 23, 2023)

  • Enhancement: Support for .lib statement in Spice
  • Bugfix: Tilde expansion in paths (e.g. "~/test.gds") on Linux
  • Enhancement: RBA/pya: Manipulation of NetTracerTechnologComponent
  • Bugfix: Python module: segfault on exit when hierarchy iterators are alive
  • Bugfix: Width of layer selection boxes fixed and too small for long layer names
  • Enhancement: RBA/pya: A method to get the QWidget for a LayoutView
  • Enhancement: Better compatibility of Spice reader with ngspice

New in KLayout 0.28.6 (Mar 20, 2023)

  • Enhancement: #1249 Include expanded/collapsed state of layer properties into session
  • Bugfix: #1265 Issues installing klayout with pip on macOS related to libpng
  • Enhancement: #1271 __version__ attribute in Python modules available now
  • Bugfix: #1287 Goto Position (CRTL+G) is not showing the origin (0,0)
  • Bugfix: #1291 Better compatibility of PyQt5 and KLayout (i.e. debugger does not crash)
  • Enhancement: #1294 Persisting layer properties in sessions
  • Bugfix: #1302 Select filter is not applied in partial mode
  • Bugfix: #1304 Spice netlist reader: should read "M" terminals in DGS order
  • Bugfix: #1309 Incomplete fill (polygon rasterizer issue)
  • Bugfix: #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

New in KLayout 0.28.5 (Feb 5, 2023)

  • Region.sized after .smooth returns empty region.

New in KLayout 0.28.4 (Feb 2, 2023)

  • Bugfix: #1267 Editor options not visible initially on layout view
  • Bugfix: #1260 Internal error on package install
  • Bugfix: #1259 Qt-less LayoutView creates non-editable Layout initially even if editing is requested?
  • Bugfix: #1253 Library browser does not always display all libraries
  • Bugfix: #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"

New in KLayout 0.28.3 (Jan 12, 2023)

  • Bugfix: #1247 Layer stipples not updated after editing custom stipples with high-DPI displays
  • Bugfix: #1245 Connectivity not preserved when loading/saving technology
  • Bugfix: #1242 KLayout 0.28.2 crashes when registering a plugin if a layout exists
  • Bugfix: #1240 Layer is not activated from layer properties file on first creation
  • Bugfix: #1238 Macro IDE: breakpoints not effective on Windows
  • Bugfix: #1234 "Clone view": layer list is empty
  • Enhancement: #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

New in KLayout 0.28.2 (Dec 23, 2022)

  • Bugfix: #1230 LVS browser crashes

New in KLayout 0.28.1 (Dec 22, 2022)

  • Features:
  • Bugfix: #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

New in KLayout 0.28 (Dec 10, 2022)

  • Changes (list may not be complete):
  • Bugfix: #989 "Layout#convert_pcell_to_static" does not handle"defunct" cells
  • Bugfix: #991 Basic library not available in Python module
  • Bugfix: #1059 Cleanup of PCell orphans after re-evaluation on load
  • Bugfix: #1081 Using a layer properties file from recent list without layout loaded crashes KLayout
  • Bugfix: #1138 Provide a way to suppress or redirect log output or disable warnings, specifically from file readers, in Python module
  • Bugfix: #1178 technology-data xml results in SEGV
  • Bugfix: #1190 General compatibility issue of Edges#extended/extended_* with deep mode
  • Bugfix: #1216 DRC internal error on "moved"
  • Bugfix: #1214 LEF via parser error
  • Enhancement: #1056 X2 net names
  • Enhancement: #1052 PDF documentation
  • Enhancement: #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 (#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
  • CellMapping convinience methods
  • Cell#read for easy importing of a layout into a cell + subtree
  • LayerMap#map and #mmap: logical layer is optional now (needed to be incremental)
  • Shapes#cell and #layout
  • Edges#andnot, #split_interacting, #inside, #not_inside, #outside, #not_outside and related (for Region and Edges arguments)
  • GenericDeviceExtractor#define_terminal convenience methods
  • Box/DBox square and rectangle convenience constructor
  • Box#enlarge convenience isotropic variant
  • Region#in_and_out, Edges#in_and_out

New in KLayout 0.27.13 (Dec 2, 2022)

  • Bugfixes:
  • selection did not work in non-editable mode
  • partial selection did not work for guiding shapes
  • compile issue: NDEBUG is not usable after ruby.h

New in KLayout 0.27.12 (Nov 1, 2022)

  • Features:
  • Bugfix: #1173 DXF SPLINE implementation not compatible with ezdxf
  • Bugfix: #1167 delete_cells slow in some cases
  • Bugfix: #1164 Deleting cells: 'basic_string: construction from null is not valid'
  • Bugfix: #1145 Crash when clearing a Shapes container by script while a shape is selected
  • Bugfix: #1144 Copy layer not choosing the right "new" target layer sometimes
  • Bugfix: #1143 DBU not taken from technology by default
  • Bugfix: #1097 Change oasis writer defaults to strict + cblocks, discourage the usage of oas.gz
  • Bugfix: Incorrect behavior of some deep-mode DRC functions
  • deep edges "and" with Region: incorrect behavior if region is empty or non-deep
  • deep edges "inside_part" with Region: incorrect behavior if region is empty or non-deep
  • deep edges "outside_part" with Region: incorrect behavior if region is empty or non-deep
  • Enhancement: Python include files are now provided for the Python package. This will add type information to the methods.

New in KLayout 0.27.11 (Aug 11, 2022)

  • Features:
  • Bugfix: #1098 Normalize zero dimension when generating regular array instance
  • Enhancement: #1103 Add setting to disable Save Needed dialog box
  • Bugfix: #1106 "move by" does not move instances from partial selection
  • Bugfix: #1111 GenericDeviceExtractor#define_opt_layer not working
  • Bugfix: #1114 MSYS2 compatibility with latest revision (based on gcc 12.1)
  • Bugfix: #1126 Internal error on DRC operation
  • Bugfix: #1135 LVS mismatch on parallel devices and issue on ambiguity resolution
  • Enhancement: Support for Python 3.11
  • Enhancement: L2N and LVSDB readers made compatible with potential future extensions
  • Enhancement: DRC Antenna check now can be given a text layer which receives output describing the measured and computed values
  • Bugfix: *= method (e.g. Point, DPoint) properly listed in help and reflection API
  • Bugfixes: Fixed a number of potential segfaults due to memory corruption found during master branch refactoring

New in KLayout 0.27.10 (Jun 5, 2022)

  • Features:
  • Bugfix: Using a layer properties file from recent list without layout loaded crashes KLayout
  • Enhancement: PCell update: Library#refresh should call coerce_parameters_impl
  • Bugfix: Edit layer specification doesn't work well with PCells
  • Bugfix: Issues with GDS text format and "Save As"
  • Bugfix: Circle handle not shown sometimes
  • Bugfixes: two potential segfaults fixed due to early delete of LayoutView and access to non-initialized memory

New in KLayout 0.27.9 (Apr 25, 2022)

  • Features:
  • Bugfix: #1008 Don't optimize away points on path edit
  • Bugfix: #1011 DRC in deep mode highlights erroneous width violation with text
  • Bugfix: #1012 Warning requested if LEF/DEF map file does not capture certain layers
  • Bugfix: #1013 OASIS writer bug with certain irregular arrays
  • Bugfix: #1017 DXF export: better handling of PCB zone fills
  • Bugfix: #1021 LVS unexpectedly failing
  • Bugfix: #1029 Problem with Qt binding
  • Bugfix: #1031 Buddy tools + OASIS: invalid warning about unexpected strict mode
  • Bugfix: #1040 pip install klayout doesn't seem to work on M1 MacBookPro
  • Bugfix: #1054 Qt binding: crash due to Python allocation-while-deallocating
  • Bugfix: Ctrl+F will always enter search box in Macro IDE now
  • Bugfix: LEF/DEF reader options - could not clear suffix or set datatype to none
  • Bugfix: netlist/LVS result browser - do not clip texts, provide texts as tool tips as well for inspection
  • Bugfix: the library selected box listed technology-specific libraries even if no technology was selected
  • Bugfixes and enhancements for the LEF/DEF reader Includes #1050, #1065 and #1047 plus a number of standard compatibility issues. Bugfixes and enhancements for the strm2xyz buddy tool's LEF/DEF reader implementations.
  • Enhancement: #1057 Include PCell update in Library#refresh
  • Enhancement: #1058 Backspace to delete last point from polygon or path
  • Enhancement: Split gates option for LVS (new keyword is "split_gates") - see documentation for details
  • Enhancement: generate labels for PCB X2 net names
  • Enhancement: PCell errors are now shown on a separate layer (formerly only if the PCell featured at least one layer-type parameter) This layer is available with the same style and configuration than the guiding shape layer.

New in KLayout 0.27.8 (Feb 14, 2022)

  • Bugfix: #971 Double compare fails in LVS
  • Bugfix: #972 CIF writer generates unreadable file with invalid cell or layer names
  • Bugfix: #973 Enhanced timeout in package manager on large file download
  • Bugfix: #979 Backup file generation fails with relative paths
  • Bugfix: #982 Heal option for tiled XOR
  • Bugfix: #983 Bug changing PCell parameters of multiple cell instance
  • Bugfix: #984 Crash in debug mode when placing a "slow cell"
  • Bugfix: #994 Loss of selection when clicking at wrong position To make this problem less annoying, the capture range was increased when clicking at already selected items for "Move".
  • Bugfix: #995 New top cell appearing after load
  • Enhancement: #996 Refresh function to trigger update from within library
  • Bugfix: #997 Wrong display of negative extensions of paths
  • Bugfix: scale and grids were wrong in case of oversampling

New in KLayout 0.27.7 (Jan 13, 2022)

  • Bugfix: #969 PCell error (infinite recursion)

New in KLayout 0.27.6 (Jan 5, 2022)

  • Enhancement: #963 Display snapped position in main window
  • Bugfix: #960 Cap values range now shown in netlist browser
  • Bugfix: #954 Fixed a device extraction glitch
  • Bugfix: #951 Internal error fixed when deleting the cell you're sitting at Side effect: copy & paste of cells is correctly disabled now in viewer mode
  • Bugfix: #942 Technology file routing suffix string typo
  • Bugfix: #946 Python: __file__ returns quoted path string
  • Bugfix: DRC check for equal width now returns more consistent results Previously, a check like "layer.drc(width == something)" was not flagging all candidates correctly.
  • Enhancement: A PCell can request "lazy evaluation" now This means that a parameter change needs to be committed in the UI before it is being taken. This way, slow PCell evaluation will not make the application stall. To add this feature, reimplement "wants_lazy_evaluation" in the PCell class to return "true".
  • Enhancement: "lvs_data" is a global function now in LVS scripts
  • Bugfix: less liberal evaluation of expressions in string to numeric conversion This will fix a potential vulnerability which allows someone to sneak in expression code through malicious configuration, technology or layer properties files.

New in KLayout 0.27.45 (Nov 16, 2021)

  • Enhancements: Better support for execution (also cross-interpreter) of macro code from scripts
  • New methods for the Macro class like "run" and loading from file
  • New class Interpreter for accessing Ruby interpreter state from Python and vice versa
  • Enhancement: New DRC function "enclosed" as the reverse of "enclosing"
  • Allows using the rectangle filters with "via enclosed by metal"
  • Usually better performance than "metal enclosing via"
  • Enhancements: Usability
  • Navigation in the 2.5d view
  • "tap" function shows layer names and details from layer view
  • Documentation about layer views
  • Enhancement: CentOS7 RPM's use Python 3 now
  • Enhancement: Sending custom query shape objects to RDB produces shape markers now
  • Enhancement: New method LayoutView#is_editable?
  • Enhancement: #879 PCellDeclaration#layout and Layout#library ownership links
  • Bugfix: #918 Editor options tab window too big
  • Bugfix: #920 Fill tool border parameter sign issue
  • Bugfix: #921 BJT3 extraction with collector shape fixed
  • Bugfix: #933 QMessageLogger methods safe now with "%" characters
  • Bugfix: #935 Cell#insert (of cell instances) now checks their cell indexes

New in KLayout 0.27.4 (Sep 27, 2021)

  • Features:
  • Enhancements: Some enhancements on the 2.5d view (e.g. live layer color update, z only scaling, wire frames, etc.)
  • Enhancement: simple versions of DRC with_holes/without_holes without parameters
  • Enhancement: LVS netlist compare performance improvements in certain cases
  • Enhancement: #914 Make "tap" function available in reader mode
  • Bugfix: #912 Decent error message (not crashing) when trying to create a cell or layer on an empty panel
  • Bugfix: #909 DRC crash
  • Bugfix: #905 Crash when deleting a hierarchical PCell library from Python
  • Bugfix: #898 Spice reader ignores last line
  • Bugfix: #897 Fill Tool crashes
  • Bugfix: #894 border case GDS file behavior restored
  • Bugfix: #892 Font path can be selected for standalone "Basic" library
  • Bugfix: #886 Python module does not build from sources
  • Bugfix: #881 Typo in separation_check signature
  • Bugfix: #880 Clarification of device parameter compare on LVS

New in KLayout 0.27.3 (Jul 24, 2021)

  • Features:
  • Enhancement: DRC - more filters for edge pair collections As there are now: with(out)_area and with(out)_internal_angle
  • Bugfix: #846 Crash in netlist browser
  • Bugfix: #851 KLayout stalls in net browser net highlighting when net shapes contain texts
  • Bugfix: #854 Resistor Device extractor extracts W and L 2 times too large
  • Bugfix: #856 LVS: Resistor with bulk: bulk terminal swaps with A terminal
  • Bugfix: #858 "+" line continuation in Spice reader only effective when at beginning of line
  • Bugfix: #859 Technology was not assigned on new layout
  • Bugfix: #864 Shapes#copy_shapes does not support undo/redo
  • Bugfix: #866 Probe net not working for floating subcircuits in hierarchical net tracer
  • Bugfix: #867 Macro editor freeze after search next
  • Bugfix: #871 Application stalls with 'draw only border instances' mode with AREFs
  • Bugfix: #875 Drawing glitch
  • Enhancement: LVS features
  • "extract_devices" returns the device class object
  • Device class object can be used to enable parameters (make them primary)
  • Spice writer delegate enabled in LVS for customization of output
  • "blank_circuit" specifies circuits as black boxes and skips compare
  • Better propagation of symmetric nets through swappable pins
  • "tolerance" and "join_symmetric_nets" can be used anywhere in the LVS script now
  • "same_nets!" (with exclamation mark) for strong matching of nets
  • "same_nets" accepts glob pattern now
  • Enhancements: RBA/pya
  • Device#net_for_terminal with terminal name
  • Circuit#nets_by_name with glob pattern
  • Netlist#is_case_sensitive?, Netlist#case_sensitive=
  • Netlist#nets_by_name to get nets from pattern
  • CellView#context_trans and CellView#context_dtrans
  • Enhancement: Ruby 3.0 basic enabling
  • Enhancement: DRC "extent" accepts a cell name pattern now to deliver cell bounding boxes
  • Bugfix: reverted change of #796 DXF version is back to AC1006 which seems to be more compatible with most consumers of DXF files. Using 1016 AC1014 seems to require much more meta information I cannot provide without deeper insight into the DXF structure.

New in KLayout 0.27.2 (Jun 21, 2021)

  • Enhancement: #818 2.5d view shows view area instead of full layout This way, it's possible to confine the extruded view to a small area of the layout easily.
  • Bugfix: #824 LEF/DEF flow - duplicate text label generated
  • Bugfix: #826 Crash on deep, threaded DRC mode with universal DRC function
  • Bugfix: #835 Crash on layout save after deep copy + close of other
  • Bugfix: #839 Crash after PCell code exception is handled in Macro IDE
  • Bugfix: Package names can contain dash characters ("-") too Previously this was not allowed leading to a conflict with the conventions of the package repository at sami.klayout.org.
  • Enhancement: a lot of typos fixed in documentation and code (thanks to Eugene)

New in KLayout 0.27.1 (Jun 2, 2021)

  • Features:
  • Enhancement: #809 "without_density" goes outside the boundary of the input layer. A new keyword ("padding_ignore") can be added to with_density/without_density to ignore parts outside the boundary instead of treating them as zero density.
  • Enhancement: #808 Feature suggestion: DRC to report edges attached to corners as edge pairs. There is a new output mode "as_edge_pairs" in addition to "as_dots" and "as_boxes" now.
  • Bugfix: #807 DRC: clear_connections and incremental connect was not working This is an important feature for correctly implementing antenna checks
  • Bugfix: #806 LVS: CustomComparer is not working
  • Bugfix: #801 DRC Layer#smoothed lacks the "keep_hv" argument
  • Enhancement: #798 More flexibility on Spice reader A number of new features has been provided for the spice reader delegate
  • Bugfix: #795 Unstable application with verbose log output
  • Bugfix: #793 Bug on each_image_selected
  • Bugfix: #787 Query issue (or general: expression issue) A problem with memory corruption in certain scenarios was causes an application crash.
  • Bugfix: #778 Use system font instead of hard coded "Monospace"
  • Bugfix: DRC "flatten" did not always flatten, but kept layers hierarchically
  • Enhancement: Added Edge#cut_point method
  • Enhancement: LEF macro layouts now can be specified in UI
  • Bugfix: full_edge, negative output for fragmented polygon vs. small ones (space, enclosure, overlap) In some cases, only parts of the edges were reported and negative output was incorrect. In addition, negative output for two-layer checks - such as "l1.drc(sep(l2) > 0.2)" - now only is produced for the primary layer. With both outputs it was difficult to separate the components.
  • Bugfix: computed layers were printed with layer properties in lvsdb files sometimes.
  • Enhancement: Performance improvements and memory footprint reduction for OpenRAM test case
  • Bugfix: a number of typos fixed and documentation clarifications
  • Bugfix: DRC "or" was producing flat output in deep mode
  • Enhancement: DRC: a couple of new filters on edge pair layers:
  • with_angle/without_angle: filter by angle of the edges (one or both)
  • with_length/without_length: filter by length of the edges (one or both)
  • with_distance/without_distance: filter by distance of the edges

New in KLayout 0.26.12 (May 4, 2021)

  • Bugfix: #747 Result browser gives error message with // lines in RVE files
  • Bugfix: #771 Problem with QMimeData binding

New in KLayout 0.26.11 (Mar 3, 2021)

  • Bugfix: #733 Relative path resolution in session files fails when the session file's path contains "+" characters
  • Enhancement: #730 Support of class 'QUiLoader' in PYA and RBA
  • Bugfix: #728 Fails to build on Debian hppa: uses non-standard sa_restorer field of struct sigaction
  • Bugfix: #726 Crash on LayoutView#clear_selection on Linux.
  • Bugfix: #723 Backup scheme wasn't working correctly with a single file without path given as command line argument.

New in KLayout 0.26.10 (Feb 4, 2021)

  • Features:
  • Enhancement: #720 "Safe save" and backups: when saving files, the file is only overwritten after the save terminated successfully. This will avoid loss of data for full volumes or network share dropouts. In addition, a configurable number of back files can be kept (see File/Setup: Application/General).
  • Bugfix: #718 GDS export issue fixed (breaking of polygons was filling holes)
  • Bugfix: #709 LVS compare enters infinite loop when it encounters two entirely identical subcircuits
  • Bugfix: #708 Qt binding: missing support for binary strings as QByteArray representative
  • Bugfix: #707 QJsonValue's string constructor is ambiguous
  • Bugfix: #704 Rational Splines not supported DXF
  • Bugfix: #693 MAGIC files won't find subcells when reading from command line
  • Bugfix: HTTP stream reading issue with redirect At least on MacOS a segfault happened when reading HTTP stream data (e.g. for package manager) from addresses which are redirected.
  • Enhancement: Removed %APPDATA% from DLL search path on Windows This will avoid installation poisoning by the one from %APPDATA% (which ironically is the default installation path). Eventually multiple versions can be used in parallel.

New in KLayout 0.26.8 (Sep 20, 2020)

  • Features:
  • Enhancement: #639 A new method is available which enables copying of multiple cells into a target layout while maintaining common subcells are single cells.
  • Bugfix: #637 Points have not been selected properly when inside mirrored subcells in partial edit mode.
  • Bugfix: #629 Qt5 QTimer timeout signal was not available to Python or Ruby. This also applied to all "private" signals of Qt5. QTimer is just one important example for this case.
  • Bugfix: #617 A problem with pseudo-const Python/Ruby objects in the netlist API was fixed.
  • Bugfix: #615 Basic authentication for package manager now uses UTF-8 encoding. Most servers expect this kind of encoding today. UTF password characters are supported this way.

New in KLayout 0.26.7 (Jul 7, 2020)

  • Bugfix: #381 and more Some bugs fixed that happened specifically on MacOS. 1.) A segfault that happened in LVS 2.) Some classes were not properly registered for usage in scripts.
  • Bugfix: #493 LVS asserted on MacOS
  • Enhancement: #586 As a safety feature, the stream writers now refuse to write layouts with cells carrying the same names. Writing such layers would result in corrupted or invalid layout files.
  • Bugfix: #589 (tentative) On Anaconda-based builds for MacOS 10.15 (Catalina) a loss of instances was observed. This could be traced down to compiler/library incompatibilities but not further.
  • Enhancements: #591 Two enhancements in the macro editor: 1.) A crash happening when adding a new location was fixed 2.) The template selection popup can now be disabled by dismissing the tip dialog.
  • Bugfix: #592 Reading a file into a layout with unnamed layers caused problems with layer mapping specs.
  • Bugfix: #596 Library#_destroy was crashing the application. As this function must not be called, it's rerouted to "nothing" for backward compatibility.
  • Enhancement: #603 The "adjust origin" feature now allows specifying the target coordinates for the adjustment.
  • Bugfix: #610 An internal error happened for certain hierarchical configurations on netlist extraction.
  • Enhancement: LVS netlist compare The algorithm was improved to provide better reproducibility. The detection of matching paths in the presence of ambiguities was improved. In addition, the netlist compare now favours net names for resolving ambiguities. So if nets are named the same in the layout and the schematic, ambiguities are resolved based on these names. This is usually more efficient. A new function is available to turn this feature off: "consider_net_names(false)".

New in KLayout 0.26.6 (Jun 6, 2020)

  • Enhancement: #522 Skip comment lines with // in RVE DB reader
  • Bugfix: #547 Doc fixes, better error messages on some Shape methods
  • Bugfix: #555 Using 64bit coordinates on RVE reader to avoid overflow
  • Bugfix: #565 Spice reader: .global should not add pin if the signal isn't used in a subcircuit
  • Bugfix: #568 and #578 A CIF reader and writer bug was fixed
  • Bugfix: #570 and #579 Perimenter can be included in antenna area for the antenna check. This also includes a mode in which only the perimeter is considered.
  • Enhancement: #560 A library can be associated with multiple technologies now.
  • Bugfix: width of cell and library side panels could not be reduced below the width of the selection boxes in the header
  • Bugfix: cell view selection header text did not get updated when saving the layout to a different file

New in KLayout 0.26.5 (May 4, 2020)

  • Features:
  • Bugfix: #539 An internal error happened on netlist flatten sometimes
  • Bugfix: #524 Failed queries leave layout in undefined state
  • Bugfix: #525 Report true source line in DRC and LVS verbose mode
  • Bugfix: #526 Makes script debugging more reliable
  • Enhancement: #527 Wildcard layer mapping for stream readers
  • Bugfix: #544 Duplicate .global statements in SPICE netlists created duplicate pins
  • Bugfix: #548 A shielding issue was fixed for DRC space measurements
  • Bugfix: diff tool bug with paths Differences in path points where no reported
  • Enhancement: documentation clarifications and typos fixed

New in KLayout 0.26.4 (Mar 5, 2020)

  • Bugfix: #517 DEF reader could not read VIAS+VIARULE without pattern
  • Enhancement: #471 Leaner way to specify LVS compare tolerances for device parameters
  • Enhancement: #473 Direct access to image data in scripts (array of values instead of per-pixel calls)
  • Bugfix: #476 Issues with "target" switching in DRC solved
  • Bugfix: #477 Missing letter "J" in Times font .. actually this bug is of 1967.
  • Bugfix: #478 Layout queries could not use the "shapes" method
  • Bugfix: #481 "isolated" DRC function reported duplicate marker shapes
  • Enhancement: #482 "join_symmetric_nets" feature in LVS for implementing "split gate" configurations
  • Enhancement: #486 There is a "save as" function available now in the macro editor (in context menu of the macro tree)
  • Enhancement: #489 Pin names can be attached as properties to port and pin shapes when reading LEF or DEF
  • Bugfix: #491 Performance enhancement of L2N/LVS DB file loader
  • Bugfix: #496 Fixed builds on CentOS 8 and Fedora 31
  • Enhancement: #500 Option to limit number of shapes for net tracer
  • Bugfix: #501 Issues with ownership transfer fixed in Qt binding
  • Bugfix: #502 Issues with AbsoluteProgressReporter in scripts fixed

New in KLayout 0.26.3 (Jan 7, 2020)

  • Bugfix: #466 A crash happened when accessing layer properties tabs with an invalid index in Ruby or Python
  • Bugfix: #464 Problem building a layer tree with "add_child" (Ruby/Python)
  • Bugfix: #463 Configuring a layer color with a group node was not effective over multiple levels of hierarchy
  • Enhancement: #462 MOS transistor gate figures can be more generic now, e.g. ring-like or non-rectangular
  • Bugfix: #458 A net extraction bug related to certain array/array interactions is fixed

New in KLayout 0.26.2 (Dec 22, 2019)

  • Features:
  • Bugfix: #453 A crash happened when the "inverse" button is used on the TEXT PCell
  • Bugfix: #449 The Qt windows styling plugin is now installed too on Windows.
  • Bugfix: #448 The LVSDB database wasn't written with the proper device class statements in short form.
  • Bugfix: #447 Net extraction did not work properly on a specific test case with folded and interleaving array instances.
  • Bugfix: #445 "Selection/Merge shapes" gave cryptic message when instances are selected
  • Enhancement: #444 Support for net joining though labels also for specific subcells (here: to support double-height standard cells)
  • Bugfix: #440 LayoutView#each_annotation_selected wasn't working
  • Enhancement: #438 Redefining a circuit in Spice netlists will give an error now
  • Enhancement: #436 Option to silence instance copy mode dialog, Enhancements to interactive move, duplicate and copy (sensitive to transient selection now)
  • Enhancement: #434 New preinstalled Ruby gems and Python packages (e.g. numpy, scipy, test/unit for Ruby) for the Windows packages.
  • Bugfix: #429 Support for MAGIC file format (*.mag)
  • Enhancement: #428 Edit buttons are not shown in user properties dialog in viewer mode
  • Enhancement: #426 Techs can be grouped in menu now
  • Enhancement: #425 Don't generate dummy pins for dummy gates
  • Bugfix: #419 Multiple top circuits after flatten of netlist
  • Bugfix: #417 Probe nets does not work with flat extraction on Tools/Trace All Nets/Flat
  • Bugfix: #415 and #439 Macros need to be stored with CRLF on Windows for management with a versioning system like git
  • Enhancement: #411 Multiple device extractors for same class
  • Bugfix: #410 Errors were not reported on "rerun" from the DRC and LVS report dialogs
  • Bugfix: #408 Internal error after EdgePairs#polygon
  • Enhancement: #407 Variables can be used in technology base path now
  • $(tech_name) -> substituted by the technology name
  • $(tech_dir) -> substituted by the directory the technology file is stored in$(tech_file) -> substituted by the absolute path to the tech file
  • $(appdata_path) -> substituted by KLayout's home directory (e.g. ~/.klayout)
  • $(env('X')) -> substituted by the environment variable $X
  • nhancement: #406 DRC edge layers: AND between intersecting edges gives point-like markers indicating the intersection points
  • Enhancement: netlist object properties User properties can be attached to the following netlist objects now: Pin, Device, Circuit, Net and SubCircuit. Properties are key/value pairs (keys and values can be strings can be strings or numbers). The property-enabled classes use "NetlistObject" as the base class now. NetlistObject provides "set_property" to set or reset a property and "property" to retrieve one. Properties are persisted in L2N and LVSDB files and written to layout shapes on "build_nets".
  • Enhancement: more detailed progress On certain nested operations, a double or triple progress bar is shown indicating the progress of nested operations.

New in KLayout 0.26.1 (Nov 15, 2019)

  • Bugfix: #354 Buddy scripts did segfault.
  • Bugfix: #352 LVS: equivalent_pins required the cell to be present.
  • Enhancement: #353 Session files: "file-path" and "rdb-file" behavior was inconsistent.
  • Bugfix: #358 "strm2oas" was writing GDS files.
  • Bugfix: #363 It was possible to produce bad polygons while drawing.
  • Bugfix: #372 pymod build failed with HAVE_64BIT_COORD=1.
  • Enhancement: #376 Parameters UI callback invoking.
  • Bugfix: #368 Segfault with layer list manipulation while iterating.
  • Bugfix: #386 "None" is a reserved keyword for Python binding - use "None_".
  • Enhancement: #382 Possibility to copy user property value.
  • Enhancement: #387 Salt: Python version can be specified in "api-version". Other requirements can be specified too.
  • Bugfix: #392 Layers "Style" sub-pane was malformed.
  • Enhancement: #394 Even bigger font sizes for rulers and labels for the 4k age: Now there is "XLarge", "XXLarge" and "XXXLarge" as well.
  • Enhancement: #393 DRC syntax errors are now shown in their original code line of the DRC script.
  • Bugfix: #400 Snap feature wasn't working for deep regions in certain use cases.
  • Enhancement: new "scale_and_snap" methods These methods allow scaling and snapping of layouts. Scaling is supported by a rational factor. After scaling, snapping can be applied to an integer grid. There are two incarnations. Region#scale_and_snap (or Region#scaled_and_snapped): this is a flat implementation which allows anisotropic scaling/snapping as well. And there is Layout#scale_and_snap which is a fully hierarchical scale-and-snap feature. The latter does not support anisotropic scaling/snapping, but works hierarchically without opening gaps. It operates on a top cell and on all layers.
  • Enhancement: new Region#pull_* methods and DRC features "pull_*" is a class of methods that allows rehierarchisation of shapes. These methods act similar to "interacting", but the other way around: instead of delivering interacting shapes of the first argument, it will deliver shapes of the second argument. For example, "a.pull_interacting(b)" will deliver polygons of b which interact with polygons of a. As a side effect, the polygons of b will be stored hierarchically close to the polygons of a. This provides a way to "re-hierarchise" layout. The full class of methods and DRC functions involve: Region#pull_interacting, Region#pull_inside, Region#pull_overlapping and the same functions for DRC. "pull_interacting" is also available for the Edges class and edge layers in DRC.
  • Enhancement: Net tracer bug fix for heavily decomposed polygons The net tracing feature now can operate on heavily decompose polygons as well. Such layouts can be created by using a low max. vertex count on GDS write. The problem were small triangles with an area of 0.5 square DBU.
  • Enhancements: General fixes of deep DRC mode Some inconsistencies with merged/raw mode have been removed. Performance was enhanced in a few places. Multithreaded mode now works more reliably.
  • Enhancements/bugfixes: various LVS improvements The backtracking algorithm should work more reliable in cases of ambiguities and floating nets or pins. Performance should be better in some cases. LVS script structure is less rigid now. "cheats" to forcibly ignore hierarchy interactions for some cells (useful for SRAM layout for example). Still there is some work to do.

New in KLayout 0.26 (Sep 11, 2019)

  • Bugfix: #197 Python: Reimplemented methods are not getting called
  • Bugfix: #236 Crash when using "Delete all rulers"
  • Bugfix: #251 Register application exit handler in Ruby
  • Bugfix: #264 Python exceptions are redirected when PCell is used
  • Bugfix: #265 LEF file can't be read
  • Bugfix: #277 Region#min_coherence is not recognized by Region#sized
  • Bugfix: #293 File/Setup menu and dialog names are inconsistent
  • Bugfix: #294 Cannot display the right icon in Ubuntu
  • Bugfix: #302 Display issues with small cells
  • Bugfix: #305 CIF box positions are incorrect when a rotation is specified
  • Bugfix: #306 Round corners issue
  • Bugfix: #316 Text capture box has zero dimension for move
  • Bugfix: #318 Unable to disable a key binding
  • Bugfix: #321 Something's wrong with tip windows
  • Bugfix: #322 CIF, error when changing layer name while file open in KLayout
  • Bugfix: #330 DXF reader stalls
  • Bugfix: #337 Annotation: make "cross" styles available for scripts
  • Bugfix: #338 Unreadable Assistant document: QComboBox
  • Bugfix: Rare crash fixed with line width > 1 With line widths > 1, segfaults have been observed in some rare cases.
  • Enhancement: #287 Return an ObjectInstPath from the RecursiveShapeIterator
  • Enhancement: #317 "infix move"
  • Enhancement: #333 Ruby/Python automation of "auto measure"
  • Enhancement: #342 Ruler properties editor: swap points and snap to object buttons
  • Enhancement: #343 Dockable bookmark window
  • Enhancement: Hierarchical mode for DRC ("deep" keyword) DRC can be put into hierarchical mode with the "deep" statement at the beginning of the file. In hierarchical mode, most operations are performed in a hierarchical fashion - i.e. trying to maintain as much from the original hierarchy as possible.
  • Enhancements: Antenna checks for DRC DRC now got an antenna check feature. Netlist extraction is the basis for this feature.
  • Enhancement: Hierarchical mode in XOR tool and "strmxor" The XOR tool and the "strmxor" buddy tool provide switches to enable hierarchical mode. These options are considered experimental currently as XOR between two different layouts was not the implementation goal.
  • Enhancement: Netlist extraction KLayout supports extraction of netlists from a layout. This is the first step towards LVS. This feature includes an infrastructure providing netlist data structures (with Ruby/Python bindings), Netlist readers and writers (Spice format), device recognition and a netlist browser.
  • Enhancement: LVS The LVS feature is based on the netlist extraction capabilities. It adds netlist vs. netlist compare and the corresponding infrastructure. LVS is a new script environment that is based on the DRC feature and extends the DRC script language by LVS elements.
  • Enhancement: Command line option -mn to open netlist database
  • Enhancement: Net tracer "trace all nets" Based on the netlist extraction feature, an alternative mode for net tracing is provided. With "trace all nets", no a single but all nets are traced at once. Probing then happens in the final nets extracted rather than providing the seed shape. "Trace all nets" operates in hierarchical mode and therefore usually is faster and has a smaller memory footprint when extracting huge nets such as power nets.
  • Enhancement: Library browser The library browser is a dockable tool window which shows all libraries installed. Use drag and drop to place a library cell from the library browser in edit mode.
  • Enhancement: Layout query enhancements Layout queries (aka "Search and replace") now allow specification of Variables when using the script API. The performance of queries has been enhanced in the case of cell tree recursion.
  • Enhancement: Gridline colors The grid lines (or dots, depending on the style) can now be given different colors for axes, grid lines and the ruler inset.
  • Enhancement: Multiple files on import The "File/Import/Other files into current" feature now allows importing multiple files into the current layout.
  • Enhancement: Python standalone module KLayout supports production of standalone Python modules which provide the same features than the "pya" module but for use without the KLayout binary. If installed properly, "import klayout" will pull in all modules. "import klayout.db" will pull in the database part. Deployment on PyPI is supported.
  • Enhancement: Modal help dialog from modal windows When using Assistant links in the UI, the assistant now is shown as a modal window when called from a modal dialog. Before, the Assistant window wasn't usable in this case.

New in KLayout 0.25.9 (Jun 19, 2019)

  • Bugfix: #261 Issue with iterating Python sequences
  • Bugfix: #271 Chose cell coordinates on "Make Cell"
  • Bugfix: #272 Error message if trying to run macros in unsupported languages
  • Bugfix: #275 "Write without context" did not have an effect with OASIS
  • Bugfix: #276 LayerPropertiesNodeRef was not working as documented
  • Bugfix: #278 Lost reference with ObjectInstPath#shape
  • Bugfix: #281 Width and space violations are reported now also for the "kissing corners" case

New in KLayout 0.25.8 (Feb 24, 2019)

  • Bugfix: #234 Issues with LayoutView#save_image_with_options
  • Bugfix: #232 Crash on reading .lyp files with big stipple pattern
  • Bugfix: #228 Bug in Region#interact and DRC's "interact" function.
  • Bugfix: #225 Mirrored custom stipple pattern

New in KLayout 0.25.7 (Jan 12, 2019)

  • Bugfix: #200 Safer iteration of cell instances and shapes (with modifications of container during iteration) - in this case while flattening instances
  • Bugfix: #209 Reader options were grayed out in stream import feature.
  • Bugfix: #207 Basic.TEXT PCell was rounding bias a spacing values to integer multiples.
  • Bugfix: #203 A segfault was fixed that happend on certain platforms when closing the application (e.g. CentOS7).
  • Bugfix: (RBA/pya) Technology#load was not working Instead of load, the technology was saved.

New in KLayout 0.25.6 (Nov 28, 2018)

  • Enhancement: https://github.com/klayoutmatthias/klayout/pull/199 Added an option to export DXF polygons as LINE objects
  • Bugfix: #198 Stitching of DXF contours wasn't taking nearest neighbours
  • Bugfix: #191 MainWindow/PluginRoot classes got mixed up As a side effect of this fix, layout views can now be configured individually. This wasn't working consistently before.

New in KLayout 0.25.5 (Oct 21, 2018)

  • Bugfix: #162 GDS2 LIBNAME was not maintained on "File/Save".
  • Bugfix: #166 Internal error when writing GDS files (breaking of polygons)
  • Bugfix: #172 DEF reader did not pull vias from LEF
  • Bugfix: #174 Performance issue with many layers with width >1
  • Bugfix: #176 Painting issue with texts
  • Bugfix: #185 Hash values available as __hash__ standard method now for Python
  • Bugfix: some potential memory corruption issues fixed During the efforts for making the code base compatible with MSVC, some potential candidates for memory corruption have been identified and fixed. These fixes are included in this release.

New in KLayout 0.25.4 (Aug 27, 2018)

  • Features:
  • Bugfix: #121 Issue with multiple reads of GDS2 layouts including PCells
  • Bugfix: #134 Error in cell.fill_region caused by big polygon with spikes
  • Bugfix: #139 Libraries have not been reassigned when loading a GDS file from command line (does not happen on File/Open)
  • Bugfix: #141 Issue with RBA::QHostAddress (ambiguous overload) on Qt5
  • Bugfix: #142 Issue with RBA::RecursiveShapeIterator#region=
  • Bugfix: #144 The Salt package descriptions are not shown with Motif style
  • Bugfix: #148 Wrong font is used
  • Bugfix: #152 Shapes#size reported a wrong shape count in viewer mode
  • Bugfix: #153 Application crash when editing guiding shape properties
  • Bugfix: #155 Program freezes after replacing nothing by something in Macro editor
  • Bugfix: #157 "Replace cell with ..." rejected cell names with a library prefix
  • Bugfix: #158 Repaint issue on cell context
  • Bugfix: #159 Tech specific macros and DRC scripts were not shown in tech manager
  • Bugfix: 8 bit indexed GIF images can be used for package icons now
  • Enhancement: Provide a way to specify the type of a macro This feature is mainly useful for command line arguments. If you run KLayout with "klayout -b -r myscript" it will not be able to determine the type of macro without a suffix. You can now explicitly specify a certain type by giving the suffix implicitly like: "klayout -b -r myscript[rb]" This will read "myscript" but pretend it was "myscript.rb" and execute it as Ruby script. This feature is handy if you need to run a file with a specific interpreter but cannot modify the file name.
  • Enhancement: Selection now shows PCell display names Before, the internal name was shown for instances
  • Enhancement: There is an option in the View menu to show or hide markers Markers may hide layout under them. With this feature you can quickly disable all markers and the layout becomes visible.

New in KLayout 0.25.3 (May 7, 2018)

  • Enhancement: Compile option to use libcurl instead of QtNetwork This workaround enables builds on the native CentOS6 configuration with the package manager functional.
  • Enhancement: Pass label (text) layers through DRC script The "labels" method now allows copying labels from a layer to the output.
  • Enhancement: New "split" method for polygons This method will fragment the polygons into two or more smaller parts for reducing their vertex count.
  • Enhancement: New "dtrans" method for RecursiveShapeIterator This method delivers the transformation in micron unit space
  • Enhancement: New "insert" methods for Shapes Shapes can now insert from another Shapes container and from a RecursiveShapeIterator. Possible applications are fast flattening and fast region selection.
  • Enhancement: New method to generate RDB items from shapes RdbItem#add_value from a shape, RdbDatabase#create_items from a shapes container or recursive shape iterator and RdbDatabase#create_item from a shape.
  • Enhancement: DXF and CIF "keep layer names" If this option is set in the reader options, layer names are not translated into GDS layer/datatype pairs. Specifically a layer called "L5" for example is not translated to 5/0 and to "L5D0" on output correspondingly. The buddy script option is "--keep-layer-names".
  • Enhancement: DXF contour joining accuracy On the DXF reader's options, a contour joining accuracy can be specified. Small gaps smaller than this accuracy will be closed when forming joined contours from edges. The buddy script option is --dxf-contour-accuracy=value.
  • Bugfix: DXF display issue In some cases, DXF cell instances did not trigger bounding box update and the cells only got visible after save and load.
  • Bugfix: XOR progress is more realistic The progress is updated after the layer has been computed, not before.
  • Bugfix: #117 DTrans#itype was broken.
  • Bugfix: #116 Fixed a polygon decomposition bug when writing GDS files with big polygons with many holes. As a side effect, the polygons with many holes computed by a NOT operation for example are less complex and spikes in the cutlines are avoided.
  • Bugfix: #115 Reader options were not persisted.
  • Bugfix: #114 Custom line styles not loaded from tech's layer properties file.
  • Enhancement: #113 The XOR tool has an option now to heal result shapes which cross tile boundaries. The result shape count of tiled and non-tiled mode should basically be the same then.
  • Bugfix: #112 Salt package repository relative paths have not been working.
  • Bugfix: #109 Issues with Python 3 and shape properties - property
  • Bugfix: #108 Bugfix on Box#enlarge and Box#moved for empty boxes. keys generated with Python 3 could not be written to GDS2.
  • Bugfix: #107 Undo not working with shapes.
  • Enhancement: #106 Search & replace help page enhancements.

New in KLayout 0.25.2 (Mar 21, 2018)

  • Bugfix: #90 DRC: "extended" was not working as expected with "joined = true"
  • Bugfix: #89 Display issue on MacOS fixed
  • Enhancement: #85 IDE debugger: files can be excluded from showing exceptions when they are thrown. To exclude a file press the new "Ignore" button when the debugger tells you an exception has been generated. To re-able exception reporting, clear the list of the files in the IDE settings ("Debugging" tab) The macro IDE settings can now be edited in the File/Setup dialog.
  • Bugfix: #94 Retina displays are support to some extend on MacOS. An open topic is the quality of the icons.
  • Enhancement: build system for MacOS

New in KLayout 0.25.1 (Feb 25, 2018)

  • Enhancements:
  • build compatibility with MacOS, Qt 5.9. Qt 4.6+4.7 supported as well with restrictions: the package installation feature is not working.
  • Bugfix:
  • Package manager
  • Remove button wasn't enabled if multiple packages were selected
  • A potential crash ob removing packages was fixed
  • Enhancement:
  • 64 bit coordinate support enabled on Windows builds
  • Further bugfixes:
  • #21 (Autorun(-early) doesn't seem to run when lym files are inside a package)
  • #24 (Text insert dialog possible)
  • #26 (Exceptions are reported every time they propagate up in the call chain in the ruby debugger)
  • #28 (CIF format detection failed)
  • #30 (Writer options dialog non-functional on a fresh configuration)
  • #32 (rounding issue with instance properties)
  • #33 (Plugin factory not working when using with Python)
  • #36 (hardening against destruction of object inside event handler)
  • #39 (Action cannot be reassigned)
  • #40 (Crash in Python binding)
  • #41 (Polygon#touches? issue)
  • #42 (headless mode support with Qt5/-zz)
  • #43 (crash when using Qt specific command line options)
  • #44 (Transformation constructor with x,y not working)
  • #45 (Partial selection does not capture instance)
  • #48 (Cancel does not reset current tool)
  • #51 (Segmentation fault on return to main window and other opportunities)
  • #53 (unreadable 'about' text)
  • #59 (async download of package index and details)
  • #62 (QXmlSimpleReader#parse cannot be called)
  • #63 (wrong output on DRC non_interacting with empty second input)
  • #64 (crash on exit)
  • #68 (OASIS reader issue with degenerated shapes)
  • #69 (DRC: 'inside' does not merge shapes of second input)
  • #71 (target cell argument is required)
  • #72 (Edges/Region NOT issue)
  • #73 (allow 'change layers' on PCells which support a single layer parameter)
  • #74 (small-corner boolean issue)
  • #75 (Python PCell issue when parameters are called 'layer')
  • #79 (Replace function enabled also for read-only macros)
  • Further enhancements: see links
  • #29 (permissive mode for OASIS writer on odd-width paths)
  • #66 (Authentication dialog indicates retry)
  • #77 (copy_tree works in non-editable mode too)

New in KLayout 0.25.0 (Nov 16, 2017)

  • Features:
  • Enhancement: Menu customization Menu items can be disabled or enabled now. The former "Key Bindings" configuration page has been turned into "Menu Customization". Check boxes allow enabling or disabling of menu items. Disabled menu items are not shown. A search filter allows quick selection of menu items by title or path.
  • Enhancement: The cell tree no longer is collapsed on edits or when the sorting order changes.
  • Enhancement: Using a special menu path, macros can be configured to appear in submenus now.
  • Enhancement: KLAYOUT_HOME environment variable to control the location of the application folder. The application folder is the place where KLayout keeps the configuration, macros, packages and other things.
  • Enhancement: Major overhaul of the build environment
  • Qt5 supported now
  • Employs qmake as build system
  • Reorganisation of the sources
  • Continuous integration enabled (unit tests integrated in .pro files, JUnit output etc.)
  • Compatible with the clang compiler
  • Enhancement: Buddy tools: KLayout now comes with a set of additional executables that provide some functionality subset in a lean way. These binaries are named "strm..." and are installed along with KLayout.
  • strm2cif: converts any format to CIF
  • strm2dxf: converts any format to DXF
  • strm2gds: converts any format to GDS2
  • strm2gdstxt: converts any format to GDS2/text
  • strm2oas: converts any format to OASIS
  • strm2txt: converts any format to plain text (internally)
  • strmclip: creates a clip from a file
  • strmcmp: compares two files (logically)
  • strmxor: compares two files (geometrically)
  • For more information, use the "-h" or "--help" option.
  • Enhancement: HTTPS support for loading files from URL's directly
  • Enhancement: Numerous enhancements and optimizations in the RBA/pya area and in the debugger.
  • Enhancement: KLayout notifies the user when a file was changed and asks whether to reload.
  • Enhancement: "File cell or layer": type into the cell or layer list to jump to the cell name typed.
  • Enhancement: Advanced search features in the filter entry box for the cell selection form: Case sensitive/insensitive, glob pattern, clear button.
  • Enhancement: Tree expansion icons have a better contrast now on Windows with dark background.
  • Enhancement: Forward and backward navigation buttons in the main window. These buttons jump to the previous or next display state: zoom window, hierarchy depth, etc..
  • Enhancement: A Package manager is provided. Packages are add-ons for KLayout and can include macros, script libraries, fonts for the TEXT PCell, technologies, DRC scripts etc. Packages can be published on GitHub or any server supporting WebDAV. After registering a package, users can install or update packages with a few clicks. For more information see https://github.com/klayoutmatthias/klayout/wiki or "About Packages" in the "Various Topics" area of the main documentation. The package manager is found in the "Tools" menu under "Manage Packages".
  • Enhancement: LEF/DEF reader:
  • Compatibility fixes with version 5.8
  • Regions and Groups are supported now
  • LEF/DEF is a standare format now and can be used with "File/Open" for example.
  • Enhancement: DXR reader supports variable path widths now
  • Enhancement: XOR provides graphical progress
  • Enhancement: Libraries can be associated with a technology. Only libraries associated with the selected technology are shown in the selection dialog.
  • Enhancement: Overlapping instances are easier to select now (instance selection cycling).
  • Enhancement: Many more methods in RBA/pya. For example:
  • Ability to directly insert "D" types (such as DBox into layouts and cells.
  • RBA::RecursiveShapeIterator now supports complex (non-rectangular) search regions
  • A more consistent type framework (consistent complex transformation types, vectors)
  • More intuitive interface in certain objects (i.e. CellView, LayerPropertiesNode, Annotation etc.). Changing an attribute usually has an immediate effect on the respective property now ("live objects")
  • Hash functions for certain objects - Box, Edge, Trans, Polygon, and other objects can be used as dictionary keys now.
  • New import methods for Region, EdgePairs and Edges
  • New features for LayerMapping and CellMapping
  • Multiple selected cells in LayoutView
  • RBA::TextGenerator to supply the Basic.TEXT PCell's functionality as static feature
  • Receivers can be added to signals and removed from signals now.
  • Individual instance iterator for CellInstArray
  • ...
  • Enhancement: Enhanced layout statistics form with detailed shape statistics.
  • Enhancement: Line styles (dashed, dotted etc.) available now. Works best with manhattan layouts.
  • Enhancement: "Marked box mode": boxes are drawn with a cross.
  • Enhancement: Arbitrary pattern size for custom fill pattern (no limited to multiples of 8). Max size is 32x32. Enhanced annotations:
  • Ellipses
  • Position markers
  • Text alignment
  • "Auto measure" rulers (place a ruler measuring the distances between adjacent objects with a single click)
  • Enhancement: DRC enhancements:
  • Text support
  • "smoothed" function
  • "layers" function delivers all layers read
  • Polygon with edge interactions
  • middle and extent_refs methods for center point and other references
  • "corners" function
  • "collect...", "select" and "each" methods
  • Enhancement: GDS2 paths can now use the MultiXY extension too.
  • Enhancement: X2 Support for Gerber import.
  • Enhancement: A function to reset the window state after the window has been misconfigured (i.e. detaching or closing the dockable windows). This feature is found in View/Restore Window.

New in KLayout 0.24.10 (Apr 3, 2017)

  • Features:
  • Enhancements: New method CellView#is_dirty? This method indicates that a cell view needs saving
  • Bugfix: DEF reader was not able to read routing Routed segments with vias plus continued wiring were not read. Instead an error message was shown saying "Invalid orientation specification"
  • Bugfix: Setting "technology-data" configuration property did not work Reading or writing the "technology-data" configuration property is the only way to access technology data from a script. Hence it's important that this property can be set. With this patch, "technology-data" can be set to an XML string which has the same format than the one stored within the configuration file.
  • Bugfix: Reader issues with some RVE files The RVE reader could not read files with cell names containing hyphens (like "A-B").
  • Bugfix: Inplace operators are now working in Python too For example "r1 += r2" was not working (r1 and r2 are pya.Region objects for example).

New in KLayout 0.24.9 (Jan 26, 2017)

  • FEATURES:
  • Enhancements: The RBA::Region#smooth function was enhanced to give somewhat better results
  • Enhancements: DXF's circle approximation can now also specified through an "accuracy" parameter: if less than the number of specified points is required to achieve the given accuracy, the number is reduced accordingly. This also applies to the polygon interpolation of spline and arc curves.
  • Enhancement: RBA integration now is compatible with Ruby 2.3 which allows building on Ubuntu 16 as well.
  • Enhancement: OASIS files with instance angles >360 were rejected before. Now, this has turned into a warning.
  • Bugfix: DEF reader was failing to read MASK/via combinations.
  • Bugfix: The marker browser's "show only rules with errors" option was enabled again on sorting of errors.
  • Bugfix: DRC: Using Layout objects for inputs didn't work
  • Bugfix: Copying Hierarchy treets containing PCell's made the PCell's being turned into static cells.

New in KLayout 0.24.8 (Jun 27, 2016)

  • Features:
  • Bugfix: XOR and different or big database units: With tiling, XOR between two layouts with different database units was still not working correctly. Also, when the database unit was larger than 1nm, the XOR feature was dropping results sometimes when tiling was on.
  • Enhancements:
  • progress bar shown also for "-z" mode scripts: The solution of 0.24.7 has been modified to avoid annoying progress bar windows popping up in background-window mode: Now, progress bar windows will only pop up if an active main window is present. This will enable progress bars for scripts that open their own main windows but still keep the application GUI-less when the script does not do so.
  • Bugfix: Crash on empty panel: When "New/Panel" is used a view without a layout is created. An attempt to create layout on such panels crashed the application.
  • Bugfix: LEF reader now can read PIN statements including VIA
  • Bugfix: Polygon smoothing was not working properly in some cases Previously the smoothing function was sometimes dropping vertexes from the polygons. Smoothing now does also guarantee not to exceed the given distance.
  • Bugfix: Sorting cells by area now sorts cells by name as second choice In the previous version, cells with identical area were grouped but the order was arbitrary. Now the name is used as the second-level sorting criterion which keeps such cells sorted by name.

New in KLayout 0.24.7 (Jun 23, 2016)

  • Features:
  • Bugfix: XOR and different database units: With tiling, XOR between two layouts with different database units was not working correctly.
  • Enhancements: progress bar shown also for "-z" mode scripts: Scripts running in KLayout with the "-z" option (don't show main window) were not experiencing progress reporting before. Now a small modal window is shown during long-running operations that indicates the progress and provides a Cancel button to abort the operation.
  • Bugfix: Crash on using "Edit/Make cell": This happened sometimes if the selected objects contained instances.
  • Bugfix: Invalid behavior of paths with reflecting segments: For example a path made of the points (0, 0), (0, 1000) and (0, 0) had a reflecting segment which cause some computations (for example the bounding box) to return invalid results.