Release Notes

Version 0.29.4

Release date: 2024-07-08

Download links

Features:

  • Bugfix: #1780 Crash on deleting multiple selected shapes or items

Version 0.29.3

Release date: 2024-07-06

Download links

Features:

  • Bugfix: #1774 ImportError: cannot import name '__version__' from 'klayout'
  • Bugfix: #1771 Python exception formatting: backtrace missing for Python >=3.11.7
  • Bugfix: #1757 Fixed memory issue
  • Enhancement: #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)
  • Bugfix: #1769 Typo fixed
  • Bugfix: #1751 Code sanity issue fixed
  • Bugfix: #1750 Code sanity issue fixed
  • Enhancement: #1747 Transformations on negative floats/ints
  • Bugfix: #1743 strmxor shows no difference, klayout xor shows 85
  • Enhancement: #1741 Tooltip strings for PCell parameters
  • Bugfix: #1733 Instance selecion in object properties does not match with view port object highlight
  • Enhancement: #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.

Version 0.29.2

Release date: 2024-06-06

Download links

Features:

  • Enhancement: #1724 Don't read duplicate LEF files
  • Bugfix: #1722 [macOS] Crash when opening layout having Custom Macro Menus
  • Enhancement: #1721 Feature request: send results from a query to selection
  • Enhancement: #1719 Small LVS issues
  • Enhancement: #1710 Feature request: create separate cell for def FILL
  • Bugfix: #1709 Problem displaying multiple text labels with same x value
  • Bugfix: #1706 [macOS] User Properties Dialog Crashes
  • Enhancement: #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

Version 0.29.1

Release date: 2024-05-04

Download links

Features:

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

Version 0.29.0

Release date: 2024-04-01

Download links

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)
    • 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

Version 0.28.17

Release date: 2024-02-16

Download links

Features:

  • Enhancement: #1626 Technology specific grids

Version 0.28.16

Release date: 2024-02-12

Download links

Features:

  • Bugfix: #1623 Package installation with "-y" from command line does not work for URL or file
  • 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

Version 0.28.15

Release date: 2024-01-04

Download links

Features:

  • 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
  • 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

Version 0.28.14

Release date: 2023-12-08

Download links

Features:

  • 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)

Version 0.28.13

Release date: 2023-11-20

Download links

Features:

  • 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)

Version 0.28.12

Release date: 2023-09-12

Download links

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
    • 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

Version 0.28.11

Release date: 2023-08-09

Download links

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

Version 0.28.10

Release date: 2023-07-05

Download links

Features:

  • 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

Version 0.28.9

Release date: 2023-06-10

Download links

Features:

  • 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
  • Enhancement: New methods
    • Layout#copy_layer, Layout#move_layer and Layout#clear_layer with shape type selector
    • Shapes#clear with shape type selector

Version 0.28.8

Release date: 2023-05-23

Download links

Features:

  • 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

Version 0.28.7

Release date: 2023-04-22

Download links

Features:

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

Version 0.28.6

Release date: 2023-03-16

Download links

Features:

  • 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

Version 0.28.5

Release date: 2023-02-05

Download links

Features:

  • Bugfix: #1275 Region.sized after .smooth returns empty region

Version 0.28.4

Release date: 2023-02-02

Download links

Features:

  • 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"

Version 0.28.3

Release date: 2023-01-12

Download links

Features:

  • 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

Version 0.28.2

Release date: 2022-12-22

Download links

Features:

  • Bugfix: #1230 LVS browser crashes

Version 0.28.1

Release date: 2022-12-21

Download links

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

Version 0.28

Release date: 2022-12-09

Download links

Features:


  • 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 class NetTracerConnectivity introduced for multi-stack support in NetTracerTechnology, substitutes connectivity part NetTracerTechnology

Version 0.27.13

Release date: 2022-11-30

Download links

Features:

  • 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

Version 0.27.12

Release date: 2022-11-01

Download links

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.

Version 0.27.11

Release date: 2022-08-10

Download links

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

Version 0.27.10

Release date: 2022-06-04

Download links

Features:

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

Version 0.27.9

Release date: 2022-04-23

Download links

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.

Version 0.27.8

Release date: 2022-02-13

Download links

Features:

  • 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

Version 0.27.7

Release date: 2022-01-12

Download links

Features:

  • Bugfix: #969 PCell error (infinite recursion)

Version 0.27.6

Release date: 2022-01-04

Download links

Features:

  • 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.

Version 0.27.5

Release date: 2021-11-14

Download links

Features:

  • 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

Version 0.27.4

Release date: 2021-09-25

Download links

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

Version 0.27.3

Release date: 2021-07-23

Download links

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.

Version 0.27.2

Release date: 2021-06-20

Download links

Features:

  • 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)

Version 0.27.1

Release date: 2021-05-31

Download links

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: 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
  • 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

Version 0.27

Release date: 2021-05-02

Download links

Features:

  • Enhancements: Numerous new functions for the RBA and pya API.
    Some highlights:
    • "Texts" for text collections (similar for Edges/EdgePairs/Region)
    • New modes for blending layout files - see GitHub issue #666
    • New function Cell#transform - see GitHub issue #598
    • New functions for Image (read, write, clear)
    • New functions for Region and Edges correlating with the new DRC features
    • Multi-cell hierarchical copy/move of trees - will maintain shared instances
    • RBA: iterators are now automatically made available as Enumerable
    • All functions having a void return specification now return self (allows chaining)
    • More functions for manipulating selections (LayoutView#select_all etc.)
    • Spline interpolation code available in new "Utils" namespace
    • QByteArray support, mapping to Python byte arrays
    • MainWindow#set_key_bindings, MainWindow#get_key_bindings, MainWindow#set_menu_items_hidden etc.
    • New class RecursiveInstanceIterator (similar to RecursiveShapeIterator, but acts on instances)
    • Deep vs. flat operations do not always flatten out now (flat vs. deep does however)
    • Global transformations for inputs
  • Enhancements: New DRC features.
    Some highlights:
    • Better support for texts - "text layers"
    • Combined AND+NOT feature for separating regions into inside and outside part
    • "max_vertex_count" and "max_area_ratio" configuration options
    • "forget" for memory optimization
    • Shielding is optional now for some DRC functions
    • "interact" now has a count filter
    • In verbose more, figure counts and more information is printed
    • Generic DRC function and complex DRC operations: for details search "Universal DRC" in documentation
    • "not_opposite" and "rect_filter" options for some DRC functions
    • "enclosing" (selects polygons entirely enclosing others)
    • New filters for polygons: squares, non_squares, area ratio, bbox aspect ratio
    • More intuitive specification of projection limits ("projecting < 2.um")
    • "with_holes" and "without_holes", also with count
    • Density check is included now ("with_densitiy", "without_density")
    • "split_..." functions give interacting/non-interacting sets in one step
    • Better support for generic transformations as Matrix2d and Matrix3d
    • "fill" and "fill_with_left" functions for dummy fill
    • NO "connected" feature yet. Sorry. Had to drop it to finish this release.
  • Enhancements: new LVS features.
    Some highlights:
    • Improved netlist and LVS result browser (infinite-depth browsing)
    • Improved circuit match algorithm
    • Case insensitive handling of object names for SPICE netlists
    • Probe feature fixed in flat mode
    • "connect_explicit": for details search "connect_explicit" in documentation
  • Enhancements: New features for images.
    Some highlights:
    • New menu item: show and hide all images - see GitHub issue #535
    • False color nodes now can have a left and right color allowing color steps
    • Persistance of images through a special file format: "lyimg" (XML based)
  • Enhancements: LEF/DEF reader.
    Some highlights:
    • Support for layer map files
    • More complete spec support (e.g. FILL, MASK, FOREIGN, DO/BY/STEP ...)
    • Several bug fixes, e.g. routing layer switch for VIAs
    • Some functions also act on the transient selection (less mouse clicks)
  • Enhancements: Layout editing and rulers.
    Some highlights:
    • Object properties now are changed without having to commit the dialogs
    • Dockable editor options windows
    • "Recently used" list
    • A "distribute objects" feature (Edit/Selection/Distribute)
    • Snap highlighting
    • Mouse tracking cursor indicates grid- and object-snapped location
  • Enhancements: Help browser.
    • Bookmarks
    • Search in page (Ctrl+F)
  • Enhancement: Improved fill tool.
    The fill tool now also supports skewed fill pattern repetitions
  • Enhancement: Ability to utilize a LayoutView as a Widget.
    Standalone instantiation of a LayoutView object is supported now. So it becomes possible to create custom MainWindow UIs and embed a layout view there.
  • Enhancement: Improved layer and cell list filtering and searching
  • Enhancement: Experimental 3d (called 2.5d) view of layout.
    For details search "2.5d View" in documentation.
  • Enhancement: Improved performance on sea of instances for OASIS files.
    Iterated OASIS instances are stored and handled in a leaner way in viewer mode
  • Enhancement: Buddy scripts can concatenate files with "+" for input.
    Concatenation happens by "blending files". Beware of the risk this implies. A new option "--blend-mode" has been introduced for supporting overwrite, skip and variant formation in case of cell name conflicts. See buddy script help.
  • Enhancement: Layer maps now support n:m layer mapping.
    This allows mapping n input layers to one logical layer (merging) and also one input layer to m logical ones (clone layer). This applies to the buddy scripts and layer maps inside KLayout's reader.
  • Enhancement: include mechanism for easy include of files into DRC/LVS scripts.
    This is a plain text substitution feature. Don't use it for Ruby or Python scripts (the preferred way is still require/import). But it's a quick way to include partial DRC and LVS scripts without having to worry about variable scope. For details see "Including other files" in the documentation under: KLayout User Manual/Design Rule Check (DRC)/DRC Runsets.
  • Bugfix: #771
    Fixed an issue with QByteArray/QVariant transformation in Qt binding
  • Bugfix: #750
    PCB gerber import: Incorrect handling of D02 operations.
  • Bugfix: #747
    Proper handling of comments in RVE DB reader
  • Bugfix: #740
    Bug in the "smooth" function.
  • Enhancement: #715
    A separate search range can be specified for box selections now
  • Enhancement: #691
    Technology specific libraries: library name resolution based on technology.
  • Enhancement: #666
    Controlling the way a layout reader integrates cells into an existing layout.
  • Bugfix: #663
    Deep mode DRC: separation from "inside" gives wrong errors.
  • Enhancement: #648
    LVS could not do "connect_implicit" with global nets.
  • Bugfix: #609
    Internal error on net extraction.
  • Enhancement: #598
    Plain transformation of cell missing.
  • Enhancement: #588
    RBA/PYA: Provide event when a net is selected in the netlist browser.
  • Enhancement: #563
    True support for text objects in DRC/LVS (text layers).
  • Enhancement: #558
    Edges#extents, Texts#extents and EdgePairs#extents now work hierarchically in deep mode. In DRC, this means, "extents" is a deep-enabled method now.
  • Enhancement: #535
    Image handling enhancements.
  • Enhancement: #521
    Enhanced API for ObjectInstPath.
  • Enhancement: #487
    Difficult to select specific labels for net name assignment in net extraction. Solution involves a more elaborate handling of texts through "text layers.

Version 0.26.12

Release date: 2021-04-21

Download links

Features:

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

Version 0.26.11

Release date: 2021-02-27

Download links

Features:

  • 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.

Version 0.26.10

Release date: 2020-02-02

Download links

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.

Version 0.26.9

Release date: 2020-11-27

Download links

Features:

  • Bugfix: #658
    Menu items were not put into the right place on MacOS.
  • Bugfix: #652
    "M" factor scaling was not working for Spice reader.
  • Bugfix: #651
    Fixed an issue with DRC "select".
  • Bugfix: #647
    Text orientation was not considered properly in search & replace
  • Bugfix: #646
    A potential crash was fixed happening when a PCell library is deleted
  • Bugfix: Display bug
    Cell placements with small magnification factors (such that the viewport dimensions exceeded the DBU space when seem from inside the cell) lead to display errors.

Version 0.26.8

Release date: 2020-09-15

Download links

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.

Version 0.26.7

Release date: 2020-07-07

Download links

Features:

  • 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)".

Version 0.26.6

Release date: 2020-06-05

Download links

Features:

  • Enhancement: #522
    Skip comment lines with // in RVE DB reader
  • Bugfix: #547
    Doc fixes, better error messages on some Shape methods
  • Bugfix: #554
    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

Version 0.26.5

Release date: 2020-05-02

Download links

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

Version 0.26.4

Release date: 2020-03-02

Download links

Features:

  • 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

Version 0.26.3

Release date: 2020-01-05

Download links

Features:

  • 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

Version 0.26.2

Release date: 2019-12-18

Download links

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
  • Enhancement: #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.

Version 0.26.1

Release date: 2019-11-06

Download links

Features:

  • 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.

Version 0.26

Release date: 2019-09-10

Download links

Features:

  • 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.

Version 0.25.9

Release date: 2019-06-18

Download links

Features:

  • 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

Version 0.25.8

Release date: 2019-02-23

Download links

Features:

  • 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

Version 0.25.7

Release date: 2019-01-09

Download links

Features:

  • 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.

Version 0.25.6

Release date: 2018-11-23

Download links

Features:

  • Enhancement: PR199
    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.

Version 0.25.5

Release date: 2018-09-30

Download links

Features:

  • 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.

Version 0.25.4

Release date: 2018-08-25

Download links

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.

Version 0.25.3

Release date: 2018-05-03

Download links

Features:

  • 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.

Version 0.25.2

Release date: 2018-03-20

Download links

Features:

  • 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

Version 0.25.1

Release date: 2018-02-23

Download links

Features:

  • Enhancements: build compatibility with MacOS and Qt 5.9.
    Qt 4.6 supported now as well with one restriction: the package installation feature is not working.
  • Bugfixs: 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: See links
    • #21 (Autorun(-early) doesn't seem to run when lym files are inside a package)
    • #24 (Text insert dialog bug - Ok button isn't working)
    • #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)
    • #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)
    • #59 (Async download of package index and details)
    • #66 (Authentication dialog indicates retry)
    • #77 (Layout#copy_tree now works in non-editable mode too)

Version 0.25

Release date: 2017-11-04

Download links

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.
  • Enhancements: 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
  • Enhancements: 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.
  • Enhancements: HTTPS support for loading files from URL's directly
  • Enhancements: Numerous enhancements and optimizations in the RBA/pya
    area and in the debugger.
  • Enhancements: KLayout notifies the user when a file was changed and
    asks whether to reload.
  • Enhancements: "File cell or layer": type into the cell or layer list to jump to the
    cell name typed.
  • Enhancements: Advanced search features in the filter entry box
    for the cell selection form: Case sensitive/insensitive, glob pattern, clear button.
  • Enhancements: Tree expansion icons have a better contrast now on Windows
    with dark background.
  • Enhancements: Forward and backward navigation buttons in the main window.
    These buttons jump to the previous or next display state: zoom window, hierarchy depth, etc..
  • Enhancements: 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 %GITHUB%/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".
  • Enhancements: 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
  • Enhancements: Libraries can be associated with a technology. Only libraries
    associated with the selected technology are shown in the selection dialog.
  • Enhancements: Overlapping instances are easier to select now (instance
    selection cycling).
  • Enhancements: 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
    • ...
  • Enhancements: Enhanced layout statistics form with detailed shape
    statistics.
  • Enhancements: Line styles (dashed, dotted etc.) available now.
    Works best with manhattan layouts.
  • Enhancements: "Marked box mode": boxes are drawn with a cross.
  • Enhancements: 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)
  • Enhancements: 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
  • Enhancements: GDS2 paths can now use the MultiXY extension too.
  • Enhancements: X2 Support for Gerber import.
  • Enhancements: 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.

Version 0.24.10

Release date: 2016-04-01

Download links

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 where r1 and r2 were pya.Region objects.

Version 0.24.9

Release date: 2016-11-28

Download links

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: Using Layout objects for inputs didn't work
  • Bugfix: Copying Hierarchy treets containing PCell's made the
    PCell's being turned into static cells.

Version 0.24.8

Release date: 2016-06-19

Download links

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.

Version 0.24.7

Release date: 2016-05-01

Download links

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.

Version 0.24.6

Release date: 2016-03-22

Download links

Features:

  • Bugfix: Early delete of plugin object when returning a new object
    from PluginFactory#create_plugin. The returned object was not held, so in Ruby the GC could destroy the object. This could lead to crashes in applications employing the Plugin API.
  • Bugfix: It was possible to edit read-only macros.
    For example, it was possible to enter new lines in macros marked as read-only. However, these changes were not saved.
  • Bugfix: Shift+Tab not working in macro editor.
    On some platforms, Shift+Tab was not working as expected. This key combinations was supposed to left-shift a selected block an undo indents.
  • Bugfix: Wrong scaling of layers when doing XOR's with layouts
    with different database units. This happened when the layouts had different layers and "summarize missing layers" was disabled.
  • Bugfix: "Search & Replace" was not working properly if named
    layers were present. Specifically the shape search was not working due to an incorrectly formed query.
  • Bugfix: Sizing produced incorrect results in case of slowly
    varying polygon contours. The effect was a contour with spiky distortions where two "almost parallel" edges connected.
  • Bugfix: The diff tool was not reporting differences correctly when
    layers were present in one layout while they were not present in the other. This happened specficially when "Summarize missing layers" was disabled.
  • Enhancement: New context mode in marker browser: "Current or Any".
    In this mode, the markers are displayed in the context of the current cell. If that is not possible because the markers are given for cells outside the cell tree of the current cell, the fallback is to show the markers in the current cell as in "Any" mode.
  • Enhancement: More consistent behaviour of cell and category filters
    in the marker browser. For example, the category filter is now also applied when selecting a node for a certain cell in the cell branch and if nested categories are present, the category filter is applied smarter - not just on each category.

Version 0.24.5

Release date: 2016-02-26

Download links

Features:

  • Bugfix: Instance browser was messing up array instances sometimes.
    After browsing instances, in some cases array instances got messed up. This specifically happened with OASIS files.
  • Enhancement: Diff tool does not care about text alignment and
    font properties unless in "exact" mode. Previously alignment flags and font properties were compared in non-exact mode too causing some confusion for example when comparing OASIS vs. GDS.
  • Enhancement: XOR on layouts with different database units.
    Previously, the XOR tool refused to run on layouts with different database units.
  • Bugfix: The OASIS writer's S_TOP_CELL standard property now will
    correctly use an "n-string" value in strict mode.
  • Bugfix: The OASIS writer bailed out on 1x1 cell arrays.
    Now these pseudo arrays are written as single instances.
  • Bugfix: GUI type support for QVariant.
    RBA/pya did not provide constructors for QVariant from GUI types like QColor and QFont. These have been added now. The corresponding conversion functions to QColor, QFont etc. are provided as well.
  • Bugfix: Problems with QVariant constructor: some feature were not
    usable. For example, a double value could not be passed to the constructor. Disambiguators have been provided to solve these issues.
  • Enhancement: Cell/Category filter for marker browser. The marker
    browser now has a filter entry box to select specific cells or categories.
  • Enhancement: Images are cached now for faster image update.
    Specifically the "fit" image will be cached and if "fit" is selected again, the image is restored rather quickly (provided the window is not resized). The cache depth can be configured in "Setup/Display/Optimization".
  • Bugfix: "Read all other layers" option in LEF/DEF reader was
    potentially assigning GDS layers which have been defined in the layer mapping. Now, layers used in the layer map for targets are blocked and not used for automatic assignment.
  • Enhancement: The database unit can be configured now in LEF/DEF
    import options. Previously it was fixed to 1 nm.
  • Bugfix: RBA::LayerProperties#id was not always unique as stated
    by the documentation. Specifically not after a file was loaded.

Version 0.24.4

Release date: 2015-12-17

Download links

Features:

  • Enhancement: Layer colors are iterated for named layers without
    layer numbers as well. Such layers are created when reading DXF files for example and all layers had the same color initially. Now, these layers will be assigned different colors.
  • Bugfix: RBA::TilingProcess#threads was not working properly
    when assigning a value of 1.
  • Bugfix: The perimeter computation now has changed to 64 bit numerics
    reducing the risk of numerical overflow. In earlier versions, the perimeter computation of integer type shapes (polygons, boxes, regions) was performed with 32 bit length which is not sufficient to represent total perimeters of full layouts.
  • Bugfix: The OASIS writer's S_TOP_CELL standard property now is
    set to the correct value when using "Save cell as".
  • Bugfix: Some patches are provided for enhanced compatibility with
    MacOS. One MacOS-only bug was related to a crash when re-registering of PCell's while developing then.
  • Bugfix: PCell guiding shape parts could not be selected in partial
    editing mode using a drawn selection box.
  • Enhancement: The color of the guiding shapes can now be configured
    individually.
  • Bugfix: OASIS reader was not properly associating CELLNAME properties
    with cells as the standard requires. Instead CELLNAME properties were ignored.
  • Bugfix: Strict mode compatibility issues in OASIS writer:
    File level PROPERTY records were not put right at the beginning of the file, empty tables were not listed with 0 position, property value strings were not referenced by ID and the property modal variables were referenced sometimes after name records (specifically CELLNAME with standard properties enabled). According to the specification, the name records reset these variables so this is not correct. Other readers may report errors for such files.
  • Enhancement: OASIS writer file size reduction. Now, the OASIS writer
    will opimize the arrangement of cell array instances so that modal variables can be used for a better compaction.
  • Enhancement: During script debugging now the Assistant window is active
    even while the debugger is executing a script. The main window is still inactive however to avoid fatal cross-interactions between the debugger and the user interface.
  • Bugfix: The Python PCell sample was broken.
  • Bugfix: slowly bending paths have not been displayed correctly.
  • Bugfix: coordinates might have been swapped in the box properties
    page when switching from local to absolute coordinates and back.
  • Bugfix: certain ruler styles with independent x and y axis have not
    been displayed properly when using a global transformation.
  • Enhancement: the performance of "Flatten cell" is enhanced significantly
    in cases of many instances.
  • Bugfix: DRC output was producing new layers with an empty layer name
    selector (no major issue, but confusing).

Version 0.24.3

Release date: 2015-11-05

Download links

Features:

  • Enhancement: PYTHONPATH does not mess up the Windows installation any
    longer. If you want to set the PYTHONPATH for KLayout, use KLAYOUT_PYTHONPATH.
  • Bugfix: The oasis_write_std_properties attribute of RBA::SaveLayoutOptions
    did not work as described. To maintain backward compatibility and enable the cell bounding box feature, a new attribute called oasis_write_cell_bounding_boxes was introduced.
  • Bugfix: "Hide all" only hides the top level layer properties, not the
    members of layer groups.
  • Bugfix: S_BOUNDING_BOX standard properties now appear after CELLNAME
    records in OASIS files as required by the OASIS specification.
  • Bugfix: The unintuitive behavior of the "Writer Options" has been changed.
    Now, the writer options are applied to the saved layout always, not just on the first save. Previously, the program remembered the options and reused the previous options on following saves. This was quite unintuitive since changing the properties did not necessarily affect the way files were written.
  • Enhancement: The starting directory for files dialogs is the "Documents"
    folder on Windows now. Not the current directory which is the installation directory usually.
  • Bugfix: Signal names are property set for RBA::QListWidget and other
    objects. This enables the use of "indexesChanged" signals and eliminates Qt runtime warnings.
  • Bugfix: Library cells were not properly loaded again after reloading
    a layout which used libraries which itself referred to other libraries.
  • Bugfix: The program crashed sometimes when using report databases with
    properties.
  • Bugfix: Layers with a single box rendered wrong results in the DRC's
    size function with strong undersize. The boxes did not vanish as expected but instead were inverted.
  • Enhancement: The build now is compatible with Python 2.6.
  • Bugfix: Reading OASIS files in strict mode with cell names consisting
    of a "$" character followed by an integer number (like "$1") sometimes messed up the cells.
  • Bugfix: RBA::TilingProcessor could not be used both with tile size and
    tile count set since setting the tile size was resetting the tile count and vice versa.

Version 0.24.2

Release date: 2015-10-02

Download links

Features:

  • Bugfix: Flip and Rotate function did not work as expected when the view
    was descended into the hierarchy.
  • Enhancement: RBA::BrowserDialog now also accepts a parent parameter
    which are important to better integrate such dialogs into the application.
  • Bugfix/enhancement: "klayout_vo.exe" now is a pure viewer application
    again. By calling this executable, the edit functions cannot be enabled and the save functions are disabled as well. Under Linux, renaming the binary to "klayout_vo" switches KLayout into this mode as well.
  • Bugfix: The zoom and selection rectangle can now be dragged outside the
    visible area and still define the zoom or selection rectangle.
  • Bugfix: expressions were not coercing floating-point values consistently:
    The expression "to_i(2)+1.4" rendered 3 instead of 3.4 as expected. The sum was treated as an integer sum because the first operand is an integer. Now the integer is converted into a floating-point value as expected.

Version 0.24.1

Release date: 2015-08-26

Download links

Features:

  • Enhancement: switched to -O2 instead of -O3 to avoid issues with certain
    gcc versions for which -O3 appears to be broken.
  • Bugfix: fixed a backward compatibility issue in scripting. Specifically
    "view.each_object_selected { |s| s.shape }" will work again.
  • Bugfix: the layer matching algorithm in the .lyp file layer assignment
    is compatible with the previous version again. This specifically applies to "wildcard" specifications. In 0.24, named and unnamed layers were considered different even if GDS layer and datatype numbers were identical. The effect was that if a named layer was present, a .lyp file specification without that name was not matching the named layer and with "add other layers" the named layer was produced again.
  • Enhancement: "Apply all" in the object properties dialog behaves somewhat
    more intuitive now. Specifically changing the path endcap styles now works as expected. For the other properties, a choice was provided between applying changes in a relative or absolute way. For example, when the left edge of a box is changed, the left edges of all selected boxes are shifted by the same amount in relative mode. In absolute mode, the left edge will be set to the specified position for all selected boxes.
  • Bugfix: Python iterators will keep a reference to the source object now.
    This avoids problems when fetching iterated properties (typically "each..." methods) from short-living objects.
  • Bugfix: Python's StopIteration exception does no longer appear in the debugger
    now. This is an exception used internally to mark the end of an iteration sequence.
  • Bugfix: "Path#width=" does no longer reset the round end flag.
  • Enhancement: the "Show All" mode of the marker browser is persisted now.

Version 0.24

Release date: 2015-07-25

Download links

Features:

  • Enhancement: Python support: Scripts and PCells can now be coded in Python as well. Python and Ruby
    scripts may coexist in the same application and they can be debugged together. The macro IDE features a Python tab in which Python scripts can be managed. The language features of Python and Ruby are very similar, so the features of the integration are highly comparable and easy to translate. The Python module name is "pya".
  • Bugfix: When using a layer with special hierarchy level settings (i.e. #*), the ruler did not snap to that shapes.
  • Bugfix: Qt item ownership is now transferred on some methods. For example, "QTreeWidget#insertItem" now will
    transfer ownership of the item to the tree widget. Hence, when the variable holding the item goes out of scope, the tree item will not be destroyed.
  • Enhancement: The shape selection can now be manipulated through scripts (new LayoutView methods "object_selection=",
    "select_object" etc.)
  • Enhancement: New edge vs. region operations are supported (edge AND region and edge MINUS region)
  • Enhancement: RBA/pya objects now in general feature a "_manage" and "_unmanage" method will allows releasing
    the ownership over an object in cases where object lifetime control is important (specifically when passing objects around in Qt applications).
  • Enhancement: Many new RBA methods, i.e.
    • Annotation#id
    • Cell#change_pcell_parameters
    • Cell#pcell_parameters_by_name
    • DPolygon#assign_hull (raw argument)
    • DPolygon#assign_hole (raw argument)
    • DPolygon#each_edge (with contour argument)
    • DPolygon#insert_hole (raw argument)
    • DPolygon#transform
    • DSimplePolygon#initialize (raw parameter)
    • DSimplePolygon#initialize (raw parameter)
    • DSimplePolygon#set_points
    • DSimplePolygon#transform
    • EdgePairs#+
    • Edges#& (with Region)
    • Edges#&= (with Region)
    • Edges#- (with Region)
    • Edges#-= (with Region)
    • Edges#inside_part
    • Edges#select_inside_part
    • Edges#outside_part
    • Edges#select_outside_part
    • Instance#change_pcell_parameter
    • Instance#change_pcell_parameters
    • Instance#convert_to_static
    • Instance#flatten
    • Instance#is_pcell?
    • Instance#pcell_declaration
    • Instance#pcell_parameters
    • Instance#pcell_parameters_by_name
    • Layout#begin_shapes (with cell ref)
    • Layout#begin_shapes_overlapping (with cell ref)
    • Layout#begin_shapes_touching (with cell ref)
    • Layout#create_cell (with PCell parameters and/or lib name)
    • Layout#delete_property
    • Layout#flatten_into
    • Layout#has_prop_id?
    • Layout#pcell_ids
    • Layout#pcell_names
    • Layout#prop_id
    • Layout#prop_id=
    • LayoutView#clear_object_selection
    • LayoutView#object_selection
    • LayoutView#object_selection=
    • LayoutView#replace_annotation
    • LayoutView#select_object
    • LayoutView#unselect_object
    • MainWindow#cm_close_all
    • MainWindow#cm_save_all
    • MainWindow#cm_sel_move_to
    • MainWindow#instance
    • MainWindow#manager
    • ObjectInstPath#==
    • ObjectInstPath#!=
    • ObjectInstPath#<
    • ObjectInstPath#append_path
    • ObjectInstPath#clear_path
    • ObjectInstPath#cv_index=
    • ObjectInstPath#layer=
    • ObjectInstPath#seq=
    • ObjectInstPath#shape=
    • ObjectInstPath#top
    • ObjectInstPath#top=
    • RdbItemValue#initialize (with float argument)
    • RdbItemValue#float
    • RdbItemValue#is_float?
    • RdbItemValue#tag_id
    • RdbItemValue#tag_id=
    • SaveLayoutOptions#gds_write_file_properties
    • SaveLayoutOptions#gds_write_file_properties=
    • SaveLayoutOptions#oasis_write_std_properties
    • SaveLayoutOptions#oasis_write_std_properties=
    • Shape#each_edge (with contour argument)
  • Enhancement: Qt API is aligned better with C++ Qt notation. Several bug fixes, new features and stability enhancements.
    For example: New: RBA::Qt::white or RBA::Qt::GlobalColor::white Old: RBA::Qt_GlobalColor::white
  • Enhancement: the debugger can now be disabled in the macro editor IDE for enhanced
    script execution performance with IDE window open and less interactions between Qt code and Macro IDE
  • Bugfix: DRC crashed when outputting shapes to a layer that was used as an input
    in further parts of the script but has been declared as input befor the layer was output.
  • Bugfix: ".lyp wildcard replacement" now honors transformations as well
  • Bugfix: Gerber import issues fixed: Zero-diameter circular apertures moves are translated into lines,
    Zero-length moves must not be clear for G1 and circular apertures.
  • Bugfix: The technology button now applies the technology even if the technology did not change.
  • Enhancement: Polygons with holes are better supported now (for example in partial editing). Such
    polygons cannot be written to GDS or OASIS (they will be converted to ones without holes), but they may be created in DRC scripts.
  • Bugfix: "Reload layout" now doesn't forget the technology that was attached to a layout.
  • Bugfix: Box side setters now behave more consistently in scripting. Before this fix, it was not possible to
    assign the sides of a box this way: "b = Box::new; b.left = 100; b.right = 300".
  • Bugfix: recursive library references (library referencing itself indirectly) made the application
    crash.
  • Bugfix: Subclass mapping sometimes failed in certain cases. This was particular annoying in Qt's event
    handlers since "QKeyEvent" (or similar classes) only showed up "QEvent".
  • Enhancement: "Move selection to" function available in "Edit/Selection/Move To". With this function,
    the selection (shapes are instances) can be moved to a specific position. You can specify the reference point to use. For example the center of the bounding box.
  • Bugfix: Menu icon assignment was not working in some cases within scripts.
  • Bugfix: Readonly (global) macros could be edited but not saved.
  • Bugfix: Instances could be selected even if they had only invalid layers.
  • Enhancement: The application now features a crash handler. This handler gives some debugging information
    about the crash which you can send together with a bug report. In some cases, the crash handler will allow continuing to work with the application although it's highly advisable to save and close.
  • Bugfix: Registering plugins through the script's plugin API sometimes disabled view features.
  • Bugfix: The macro IDE is not automatically put in the foreground any more. This sometimes interfered with
    modal dialogs shown from a macro.
  • Enhancement: The macro IDE now features watch expressions which are automatically evaluated when in a
    breakpoint.
  • Enhancements: The "Save Layout" options are now separated from the save function. That means they can
    be configured once and the dialog will not pop up always when saving. This way, "Save All" is provided which will save all open files with the current options.
  • Enhancement: A "Close All" function to close all open layouts.
  • Enhancement: In scripted layout loads, multiple files can be loaded into the same layout object. In that
    case, the content of the files are merged. This worked so far with GDS. Now this also works with OASIS.
  • Bugfix: OASIS int-typed properties now as written as such. Before, they have been written as strings.
  • Enhancement: sizing code and path to polygon translation now will better maintain 45-degree edges.
  • Enhancement: DRC support for edge/polygon booleans ("edges AND polygons" will select the edges inside the polygons,
    "edges MINUS polygons" will remove the edges inside the polygons)
  • Enhancement: Global layout properties supported as well. Layout properties can be edited by selecting
    "User Properties" in "File/Layout Properties". They are written to OASIS. Writing to GDS2 is optional since that may create compatibility issues with other tools.
  • Enhancement: The OASIS writer will now produce some standard properties: "S_TOP_CELL", "S_BOUNDING_BOX",
    "S_CELL_OFFSET", "S_MAX_SIGNED_INTEGER_WIDTH", "S_MAX_UNSIGNED_INTEGER_WIDTH" and "S_BOUNDING_BOXES_AVAILABLE".
  • Enhancement: User properties of cells are available in cell context menu too: this way there can be
    browsed in non-editable mode too.
  • Enhancement: "Degenerated" polygons (one or two points) can be created in scripts now when using "raw" mode.
    Such polygons are useful in the context of Minkowsky sums for example.
  • Bugfix: The application crashed when the macro currently running was deleted.
  • Enhancement: "Search & replace" now is available in viewer mode too, but without the ability to replace or
    delete.
  • Enhancement: In menu paths, appending a "+" to the path means to add something after that item.
  • Bugfix: Guiding shapes are only selected if the PCell corresponding to them is visible.
  • Enhancement: there is a clearer indication now that 'Show layers without fill' is on.
  • Enhancement: a new mode is available in which PCell content can be selected too. When editing things inside
    PCells however, PCell recomputation may revert these edits. The mode is found in "File/Setup", "Application/Selection" page.
  • Enhancement: Edge set boolean operations have been too selective with respect to almost-parallel edges.
    Now a tolerance is applied allowing edges to deviate by ~1 dbu.
  • Enhancement: Search & replace: texts, paths and boxes are exported into report databases.
    Shapes and instances are shown in micron coordinates and as seen in top.
  • Enhancement: "Apply all" in properties dialogs: with this function, a specific change is applied to
    all shapes or instances of the same class. For example a path width change is applied to all other selected paths. The change will be applied smartly (hopefully), so that the intention of the change is preserved. For example a left edge shift for a box will be turned into the same shift for all other selected boxes.
  • Enhancement: multiple categories can be selected in the marker browser now.
  • Enhancement: the instance properties page now shows the cell dimensions (which are not editable of course).
  • Enhancement: box property editing is less tedious - the left and right coordinates will now swap if the order
    changes and the mode (width/center or coordinates) is maintained.
  • Enhancement: Report databases now support "tagged values" (values with a name) which are shown in the marker
    list. The markers can be sorted by these values, provided they are string or numerical values. RVE properties are read as tagged values.

Version 0.23.11

Release date: 2015-05-23

Download links

Features:

  • Bugfix: partial edit mode - a cell could be selected even if not visible
    With the new version, the selection behavior of normal selection and partial selection are somewhat more consistent.
  • Bugfix: The CIF reader was not able to read CIF files with line breaks
    Commands with line breaks separating arguments were not read correctly.
  • Bugfix: Printout now considers global transformation correctly
    Previously, the global transformation was ignored on printout and for screenshots.
  • Enhancement: Partial edit mode now also supports polygons with holes
    Polygons with holes are rare since they cannot be represented in GDS or OASIS files. But they can be generated in DRC scripts. Now, such polygons can be edited in partial edit mode too.
  • Bugfix: LEF/DEF reader now correctly uses half the path width for path extension
    Previously the default value was 0.
  • Bugfix: Library update was not working properly for OASIS reader
    OASIS files with library references had as issue when updating the library cells: cell deleted in the library were not deleted in the layout.
  • Enhancement: Warning, when drawing on invisible layers
    Previously there was not feedback: the shape was drawn, but not visible. Now, a warning pops up when trying to draw on invisible layers. This warning can be disabled.

Version 0.23.10

Release date: 2015-03-07

Download links

Features:

  • Bugfix/Enhancement: CIF compatibility. The reader was not fully
    compatible with the specification. For example, lower-case characters have not been ignored as specified. This has been fixed among other compatibility issues.
  • Enhancement: The CIF writer now has an option to use blank characters
    as x/y separator. Some tools apparently don't like comma characters for separators (that is still the default).
  • Enhancement: The CIF writer now has an option to emit dummy cell
    calls on top level to reference the top cells. The top-level entity is unnamed and does not correspond to a cell. Despite that some tools require these entities not to be empty and hold dummy references to the real top cells at least.
  • Bugfix: Key bindings to default grid menu entries were not working
  • Bugfix: When a layer was deleted and a shape on that layer was
    selected, the application crashed
  • Bugfix: Search and replace sometimes gave an internal error, for
    example with the following query: 'with * do cell.name = "A" + cell.name'
  • Bugfix: Search and replace was crashing when trying to delete
    instances.
  • Bugfix: Net tracer bug: the first selected shape was always taken as
    a whole even if parts were disabled through boolean NOT operations.
  • Bugfix: Net tracer was using the wrong origin when working in
    "descend" mode.
  • Bugfix/Enhancement: The technology setup now features "read all" and
    "add other layers" flags for the reader mapping table and the layer properties. Before, the global flags were used causing some confusion. With the new options the behavior can be configured consistently.
  • Enhancement: The file dialogs now remember the file type chosen.
  • Bugfix: The application issues a error message when trying to
    write very big images instead of crashing
  • Enhancement: Two new Ruby methods to write image files. These new
    methods are LayoutView#save_image_with_options and LayoutView# get_image_with_options. These methods allow configuration of more features for the image generation like box to draw, oversampling etc.
  • Enhancement: DXF reader now converts ATTDEF entities to texts too.
  • Bugfix: The application crashed when the top cell was deleted.

Version 0.23.9

Release date: 2014-12-28

Download links

Features:

  • Bugfix: DEF reader: E and W pin orientation was swapped.
  • Bugfix: DEF reader: PIN definitions are read correctly even if
    the PLACED statement comes before the LAYER statement.
  • Enhancement: LEF reader: deprecated keyword TOPOPSTACKONLY is
    ignored for VIA statements now instead of giving an error.
  • Enhancement: DEF reader: the reader now is able to read BLOCKAGE
    definitions. Currently, routing and placement blockages are supported. The layers they appear on can be configured the in the same fashion than for the other elements.
  • Bugfix: Typing in the Macro Editor was slow if many macros were
    bound to menus.
  • Enhancement: GDS AREF's with pitches not a multiple of the database
    unit are split into individual arrays rather than simply rounding the pitch. The disadvantage of the rounding solution was an accumulation of rounding errors over the array instances leading to a substantial deviation from the target location.
  • Bugfix: Paths have sometimes not been displayed properly,
    specifically paths with a small segment length and sharp bends.
  • Bugfix: DXF reader: bulges have not been ignored on the last vertex
    of a non-closed POLYLINE as they should.

Version 0.23.8

Release date: 2014-11-15

Download links

Features:

  • Bugfix: DRC: "inside", "not_inside", "outside" and "not_outside" were
    broken
  • Bugfix: LEF/DEF reader: VIA PATTERN support was broken
  • Enhancement: LEF/DEF reader: Support for LEF/DEF Version 5.8 syntax
  • Bugfix: The Tab order of certain dialogs was weired
  • Bugfix: Multi-layout layer properties files in technology setups behaved
    strangely. Now, the behavior of layout properties files (.lyp) is the same in the technology context and the usual application context.

Version 0.23.7

Release date: 2014-10-11

Download links

Features:

  • Bugfix: DRC was crashing on second run if it was overwriting an input file.
  • Bugfix: RBA::InputDialog::ask_double was not accepting negative numbers.
  • Bugfix: With a net highlighted in the net tracer, so view zoomed to show
    the whole net if a layer was shown or hidden.
  • Bugfix: Ruler snapping was disabled for moderately complex hierarchies.
    The threshold has been increased. Now snapping of the ruler to objects also works for denser and more complex layouts.
  • Bugfix: Some signals were not available to Ruby (i.e. QIODevice signals).
  • Enhancement: When using "Hide empty layers", the layer list will scroll to
    keep the selected layer visible (unless it is empty and hidden therefore).
  • Enhancement: A "split view" for the cell trees. When multiple layouts are
    loaded in a panel, you can choose split view (right mouse in cell list, check "Split View"). In split view, up to 5 cell trees are shown at the same time.

Version 0.23.6

Release date: 2014-08-20

Download links

Features:

  • Bugfix: A DRC issue was fixed. Sometimes errors were reported too many times.
    This happened for big polygons wrapping smaller ones.
  • Enhancement: Now, macro key bindings can be edited on the key binding page
    of the setup dialog too if the macros are shown in the menu. Before, those changes were reset when the program was closed.
  • Enhancement: The DXF reader now also considers thin (width = 0) POLYLINES
    as mergable edge contributions in the "merge edge" modes if the POLYLINES are closed ones too.
  • Bugfix: The float function in the OASIS writer was fixed.
    This is a code cleanup, and did not have effect on functionality (yet).

Version 0.23.5

Release date: 2014-07-04

Download links

Features:

  • Bugfix: DXF polyline mode could not be set in reader options in Ruby.
    A value of 3 and 4 was not allowed.
  • Enhancement: CIRCLE AND ELLIPSE objects are treated as thin lines in DXF reader's
    "merge edges" mode. Hence they participate in region formation.
  • Enhancement: A warning is displayed when an ambiguous keyboard shortcut is triggered
  • Bugfix: An assertion in the boolean processor was fixed.
  • Bugfix: The following command caused the program to crash on the Ruby console:
    "require 'net/http'; uri = URI('xyz')".
  • Bugfix: The "cell" function in DRC scripts was creating a new cell if is was not existing
    yet. In general, the DRC function is not supposed to change the layout's hierarchy.
  • Bugfix: The macro editor now can distinguish between the same file with different suffixes.
    Before, "test.rb" and "test.lym" were not presented as different files.
  • Enhancement: The marker browser now indicates if the number of markers exceeds the
    specified maximum and the list is shortened.
  • Bugfix: The "browser.rb" sample was not working any longer because of a backward
    compatibility issue.

Version 0.23.4

Release date: 2014-03-15

Download links

Features:

  • Bugfix: UTF8 encoding in XML was ignored - special characters have not been
    read properly. This in particular caused issues in the .lym macro files when UTF8 characters are employed.
  • Bugfix: Backward compatiblity issue: layout files with PCells written with 0.23
    could not be read with 0.22 and vice versa.
  • Bugfix: Label text centering and right-alignment was not working propertly
    with the default font.
  • Bugfix: A segmentation fault occuring when rerunning a PCell macro has been
    fixed.
  • Bugfix: PCell layer parameters can be set to "no layer" now. This was possible
    before, but caused some issues - i.e. creation of dead layers.

Version 0.23.3

Release date: 2014-02-23

Download links

Features:

  • Bugfix: DRC bug fixed: "@x" notation was not working for layout, source and
    target.
  • Bugfix: A boolean processor bug was fixed that cause an internal error in
    some rare cases with certain edge configurations.
  • Bugfix: Image documentation was wrong about the offset meaning: it's the center,
    not the lower left corner.
  • Bugfix: Layer table tab names were lost when sorting or regrouping a layer
    list.
  • Enhancement: The net tracer now can be configured to auto-color the nets with
    a set of predefined colors. 8 colors can be configured in the configuration dialog or the net tracer setup page in the setup dialog.
  • Enhancement: The net tracer now has a "Redo" button which will trace all
    nets in the list again using the original start and stop (for path tracing) locations.

Version 0.23.2

Release date: 2014-01-26

Download links

Features:

  • Bugfix: Build issues fixed for MacOS and some Qt versions.
  • Bugfix: DRC log to file was not working.
  • Bugfix: Ruby script was crashing when using ruby-implemented tiling
    processor receiver and multi-threaded tiling.
  • Bugfix: Layout move function was using database units instead of micron.
  • Bugfix: Search & replace markes where not shown in a reasonable context
    for search in "All cells", instance markers are not shown correctly.
  • Bugfix: DRC now also handles the case of different database units for
    multiple inputs. The database unit of output files is now taken from the input.
  • Enhancement: Search & replace layer selection combo boxes now show display
    string
  • Enhancement: Unexpected elements are ignored in XML files.
  • Enhancement: Options are provided for making boolean operations not
    optimize the "single empty input" case for XOR tool and DRC (strict handling mode).

Version 0.23.1

Release date: 2013-12-07

Download links

Features:

  • Bugfix: RBA SimplePolygon#inside? and Polygon#inside? now work as expected
  • Bugfix: DRC output to marker browser now works as expected
  • Bugfix: HTTP URL's now are written as such into the MRU list
  • Bugfix: A net tracer crash was fixed
  • Bugfix: Net tracer connectivity setup: the move buttons now work as expected
  • Bugfix: a DRC issue was fixed when assigning the output of modifying operations (i.e.
    "layer=layer.move(...)".
  • Enhancement: compatibility with clang 3.3 was established as well as compatibility
    with Ruby 2.0.
  • Bugfix: some memory and static code analysis issues have been fixed after
    analysis with valgrind, clang and Coverity.

Version 0.23

Release date: 2013-11-24

Download links

Features:

  • Enhancement: Net tracer: Nets can now be colored individually.
  • Enhancement: The OASIS writer now uses CBLOCK compression also for tables.
  • Enhancement: Transparency is now supported for images (as a mask only - not a real
    alpha channel, but close to).
  • Enhancement: The layer/datatype assignment for purely named layers originating from
    DXF or CIF has changed. It's now no longer done when reading DXF or CIF but when writing the file. This solution is more general and allows some level of control, i.e. by scripts.
  • Enhancement: "http:..." URLs are now allowed as file names - such files are loaded
    from the URL instead. Such URL's can be used from the command line or within scripts for example. Drag and drop of HTTP URLs is also support. This allows dropping of URLs from the browser into KLayout.
  • Enhancement: Menus have been rearranged:
    The "Tools" menu was split into "Tools" and "Macros", "Verification" menu has been resolved into the "Tools" menu.
  • Enhancement: New command line options are available:
    "-nn" to load .lyt (technology file) on command line. "-b" for batch mode (implies some batch-mode specific options), "-zz" for display-less applications.
  • Enhancement: "Adjust cell origin" now adjusts the cell in their parents as well (optional).
  • Enhancement: Cells can have properties now: Cells can now have user properties as well.
    However, writing these properties to files is subject to some constraints. Cell properties are fully supported on OASIS and optionally supported on GDS using an extension feature.
  • Enhancement: Transformations are now available for whole layout (applied to all cells).
    This is specifically useful for scaling layouts.
  • Enhancement: A function now is available to convert PCell's to normal (static) cells.
  • Enhancement: The printout now has a header and footer.
  • Enhancement: The XOR can now be confined to a region.
  • Enhancement: There is an option now to hide guiding shapes for PCell instances.
  • Enhancement: New option to pan/zoom or do nothing on paste - Option is in "Navigation/Zoom
    and Pan" in setup dialog.
  • Enhancement: Cells can now be copied in "shallow copy" mode without creating copies of the
    child cells.
  • Enhancement: A "Tap" function is provided now. The tap function selectes and changes to the
    layer of the currently selected shape. New shapes will be put on that layer.
  • Enhancement: There now is a function to convert instance arrays to single instances.
  • Enhancement: The instantiation path of an object is now shown in the status bar.
  • Enhancement: An option is now provided for configuring the replacement character for
    OASIS and GDS. The replacement character is used instead of illegal characters.
  • Enhancement: Some unicode support for texts in default font ("ยต" now is available).
  • Enhancement: There is a GDS2 writer option now to eliminate zero-length paths.
  • Enhancement: There are new save options: disable or enable writing of PCell and library cell
    contexts, drop hidden cells, keep instances even if cells are dropped.
  • Enhancement: Layers can now be made invalid. Invalid layers don't participate in selection or
    snapping.
  • Enhancement: Multi-selection on 'open layout' allows to open many files at once.
  • Enhancement: DRC functionality: a rich DRC engine was integrated in the tool. The
    implementation is flat, so performance is limited compared to hierarchical tools. A tiling approach is available to distribute tasks on multiple CPU's to somewhat mitigate that issue.
  • Enhancement: Search and replace feature plus custom queries: the search & replace functionality
    is just the tip of the iceberg. "custom queries" are a powerful feature to perform queries and modifications using a SQL-like language.
  • Enhancement: Some enhancements on LEF/DEF import: i.e. proper default routing rule with octagon
    ends implementedin DEF, NONDEFAULTRULES for LEF reader
  • Enhancement: Auto-import feature for technologies: technologies can now be imported from
    the installation folder automatically.
  • Enhancement: RBA enhancements: Tiling processor, fill tool bindings, regions, edge collections,
    edge pairs and edge pair collections, numerous new methods and classes.
  • Enhancement: More configuration options for macro IDE: stop on exception will ask whether to stop
    in the debugger when an exception is thrown. The editor font can now be configured.
  • Enhancement: The diff tool now has an option to disable smart cell matching and enable
    name-only cell matching.
  • Enhancement: cells can now be dragged and dropped from the cell list to the canvas.
  • Bugfix: Layout diff reported texts as different which are not.
  • Bugfix: Instance editor options problem fixed: magnification could not be edited in some cases.
  • Bugfix: DXF reader: anisotropic scaling of block deletes subcells of that block, error messages
    on coordinate overflow.
  • Bugfix: OASIS output files were corrupt when edge objects were written.
  • Bugfix: Problems with boxes having odd width are solved now.
  • Bugfix: Close function - "Cancel" now works properly on the "which view to close" dialog.
  • Bugfix: Closing the main window while layouts are loaded crashed the application.
  • Bugfix: Net tracer did not work properly with OASIS in viewer mode.
  • Bugfix: Diff tool was not matching cells propertly in some cases

Version 0.22.9

Release date: 2013-09-19

Download links

Features:

  • Bugfixes: LEF/DEF reader: NONDEFAULTRULES, TAPERRULE implemented now,
    correct octagon style for default rules for non-rectangular routing, POLYGON and RECT implemented for routing.
  • Bugfix: DXF reader crash fixed for ARC objects with identical start and end angle,
    polygons have not been read in some cases.
  • Bugfix: It is possible again to use "Show as new top" after "Descend/Ascend hierarchy"
    without clicking at the cell list.

Version 0.22.8

Release date: 2013-06-21

Download links

Features:

  • Enhancement: "gds2" now is recognized as extension of GDS files.
  • Bugfix: CIF reader was broken in some cases. Layers have not been assigned properly
    and sometimes, identical or no GDS layers were assigned.
  • Bugfix: RecursiveShapeIterator (RBA) had an issue when iterating shape arrays.
    This was the case when working on OASIS files in viewer mode for example.
  • Bugfix: DEF reader had some issues (TAPER and RESISTANCE keywords have not been
    supported properly).

Version 0.22.7

Release date: 2013-03-22

Download links

Features:

  • Bugfix: The output mode in the XOR tool dialog was not shown properly. Instead of
    "Report database", "Other layout" was shown etc.
  • Bugfix: When creating a third layout for output of the XOR tool, the database unit
    was not set to the input layout's database unit.
  • Bugfix: Layout numbering was not done correctly when multiple layouts were loaded
    with the same file name.
  • Bugfix: In viewer mode sometimes it was not possible to move to the next selected
    item in the shape properties dialog. A message appeared saying "Shape array members cannot be modified."
  • Enhancement: OASIS writer performance is significantly better now in cases where
    shape compression is relevant. Also, shape arrays are maintained as such which avoids repeated compression.
  • Bugfix: A drawing bug was fixed which caused shape arrays to disappear on certain
    zoom levels.
  • Bugfix: "Add missing layers" now adds all existing layers, not just the ones
    present in the currently selected cell also in viewer mode.

Version 0.22.6

Release date: 2013-03-03

Download links

Features:

  • Bugfix: It was possible for example to add shapes to a PCell. This feature does
    not make sense since PCell's are updated when required. In that case, changes are lost. This feature has been disabled for PCell's.
  • Bugfix: RBA::Application#get_config was crashing in some cases (i.e. in -zz mode)
  • Bugfix: The "create cell variants" function was not working properly if a single
    instance array was present for a cell.
  • Bugfix: The radius was limited too strictly for end segments for the ROUND_PATH
    PCell of the Basic library.
  • Enhancement: Some additional RBA methods have been enabled which disambiguate
    various constructors for Qt objects (i.e RBA::QVariant#new_i allows to create a variant with "int" type)
  • Bugfix: the Ruby-less build was broken.
  • Bugfix: Copy & paste was not working for the layer list. This is an effect of the
    modified key handling in KLayout 0.22. New menu functions are provided in the layer list's context menu to resolve the ambiguities involved in that feature. These menu functions allow to copy, cut and paste parts of the layer list to other windows or tabs.
  • Bugfix: PCell's are now cleared before the production method is called.
  • Enhancement: OASIS layer names are also recognized if the LAYERNAME record
    appears after the layout's body.
  • Bugfix: in previous versions it could happen that the layout panels got
    locked and it was no longer possible to switch between different tabs.
  • Bugfix: a potential crash in the drawing engine was fixed.

Version 0.22.5

Release date: 2013-02-02

Download links

Features:

  • Bugfix: Layer properties file in technology definitions can be given as relative path
    in which case KLayout uses the base path
  • Enhancement: Windows installer now provides a useful default installation path when
    started as non-administrator.
  • Bugfix: GDS reader: a false warning was issued sometimes indicating that an
    AREF might be off-grid.
  • Bugfix: Fixed build for MacOS and some Linux distributions.
  • Bugfix: Fixed a crash that happened when KLayout was closed while a instance
    property form was still open.
  • Enhancement: PCell names are now shown in the status bar
  • Bugfix: Fixed a crash that happened when a macro was run that was already closed.
  • Bugfix: MRU list for macro editor's console was getting huge when the macro editor
    was closed and opened again in the same session.
  • RBA bugfixes: "destroyed?" was not working properly in some cases. Infinite
    recursion happened for for PCell implementation without "get_layers".
  • Enhancement: Better error messages for RBA including class and method names.
  • Bugfix: PCell implementation issue. Some methods were passed a deep copy
    of the layout object which first created a potential performance issue and second made it impossible to modify the layout.
  • Enhancement: DXF writer now provides a header which enables some tools to
    read the generated DXF files.
  • Bugfix: DXF reader: degenerated polygons for HATCH objects don't cause an
    assertion now.

Version 0.22.4

Release date: 2012-12-30

Download links

Features:

  • Bugfix: a drawing problem was fixed which created invalid images in certain
    cases.
  • Bugfix: multi-tab .lyp files could not be used correctly as default layer
    properties files.
  • Bugfix: the macro IDE crashed sometimes when adding a new location.
  • Bugfix: the application crashed when the net tracer window was open and a new
    layout was loaded into the same panel.
  • Bugfix: a memory leak was happening when a boolean operation (in particular
    inside the XOR tool) was cancelled.
  • Bugfix: when inserting an instance using the lower left corner of the bounding
    box as the reference point, rotations have not been handled correctly.
  • Enhancement: the "detailed" view of a net's properties in the net tracer now
    reports area and perimeter of the net's shapes (only available for nets up to ~2000 shapes to avoid timeouts on computation). Thanks to Peter for providing the raw version of that code.
  • DXF reader enhancements:
    Support for "999" comment records. DIMENSION and SPLINE entities are supported now to some extent. "fit" formatting of TEXT objects supported now. Holes are correctly formed now from multiple POLYLINE/LINE items when combining them into polygons.
  • DXF writer: HATCH entries are written in a compatible way now. Text formatting
    flags are fixed (top and bottom formatting was swapped).

Version 0.22.3

Release date: 2012-11-25

Download links

Features:

  • Bugfix: a segmentation fault sometimes happened in the drawing engine
  • DXF reader enhancements:
    Anisotropic scaling of instances is supported. LWPOLYLINES with both common and variable width are handled more gracefully. Closed polylines produce closed shapes now, not closed paths.
  • Selecting of instances with non-orthogonal transformations is easier now
  • The local config files now override the global one again like this was in 0.21.x.
  • A compile problem with older gcc's (namely gcc 4.4) was fixed.
  • Selection of cells in the cell tree now has been fixed (before that sometimes
    cells were selected in addition to current ones instead of being the only one selected).
  • The RVE DB reader was enhanced to read error waivers and certain new forms of the
    RVE file.
  • The align operation now works also if there is not a primary and secondary
    selection (i.e. selection by box)
  • "Layer pollution" does not happen when instantiating a PCell or library cell
    which is instantiated in another panel
  • PCell layer parameters now can be set to any layer which is present in the
    layer list, not just the ones which are created already in the database
  • The round corners function has been fixed for certain cases. In particular
    the limitations are less strict (for example it is possible now to create a donut from a square with a hole). Changing of the radius later now works more reliably.
  • "Shallow copy mode" now works again for copy & paste of instances. Previously
    instances were always copies in deep copy mode which creates new cells.
  • Move of partial selection now works like the move function for other objects:
    select a subset of edges, click on them to start dragging and click again to drop them.
  • Arrow keys don't interfere with move by mouse mode any longer. Previously using
    the arrow keys while moving objects with the mouse had strange effects.

Version 0.22.2

Release date: 2012-11-01

Download links

Features:

  • Copy & and paste of PCell or library instances across layouts did not work
    Instead, the cell was duplicated, but it's no longer a PCell or library cell.
  • "klayout -v" was segmentation faults
    The -v option is supposed to print the version number. After printing it, the executable terminates with a segmentation fault.
  • 'Real' unicode file names could not be used
    Using Unicode filenames (i.e. Chinese) file names did not work properly. In particular these files were not opened on Windows. Unicode file names were not recorded properly in the "recently used" list. In version 0.22.2, unicode files names can be used in all places on Windows and Linux.
  • Some LEF import issues solved
    The outline layer was not always generated correctly. Pin labels were not generated on pin shapes for LEF import.
  • KLayout was crashing on exit when the clipboard contained something
    The application issued a segmentation fault on exit (or "is not working" on Windows) when the clipboard contained data.
  • Ruby debugger crashed in some cases
    In some cases (i.e. breakpoint in a widget callback) the debugger crashed with a "Stack level too deep" message.
  • Instances of leaf cells were always copied "flat" to another layout
    There was no way to copy the instance plus cells before this was fixed.
  • Sometimes PCell variants remain as top level cells
    If the Instance function was cancelled and a PCell was active, a new top cell remained which held the PCell that was about to be placed. These cells could be deleted manually, but that may be annoying.
  • Help index cache was growing large in some cases
    When switching between versions, the help index that KLayout creates once grew larger every time a new program version was used. This increased startup times of the program.
  • An "abs" function was missing expressions
  • Experimental support for 64bit coordinates is provided.
    To enable 64bit coordinates, use "-with-64bit-coord" on the build script. This feature requires gcc >= 4.4 and a 64bit platform. 64bit coordinate support is "experimental" because of some known issues (i.e. it is possible to write corrupt GDS files with such large coordinates). OASIS on the other hand supports 64bit coordinates.

Version 0.22.1

Release date: 2012-10-09

Download links

Features:

  • Edit/Select/Disable All was not working
    This function was supposed to disable all selectable items. Instead, an internal error message was issued.
  • Build problems with gcc 4.0 were solved
  • GDS text size as based on micron instead of user units
    Because of this the text object size were not be correct if the user unit was not micron.
  • Arrow keys behaved differently
    This had annoying effects if one was used to a particular behavior. The operation of the arrow keys was restored in some places but still moving with the keys in move mode is possible.
  • -z option worked differently
    "-z" is not a true "non-GUI" mode, in which no XServer connection is made on Linux. The advantage of this is that KLayout can be used as a engine on display-less servers. In 0.22, some user-interface related objects were not available in Ruby code. Some scripts depending on MainWindow or LayoutView objects were not working because these objects are no longer available. In 0.22.1 the original behavior of "-z" was restored and instead, "-zz" was implemented as a different, true display-less mode
  • KLayout was crashing when using custom key bindings on some platforms
    On some platforms, apparently Linux and recent Qt versions, KLayout crashed when custom key bindings are defined and the respective key is pressed.
  • Some issues with the macro tree solved
    Drag & drop was not working correctly within the macro tree on Windows. KLayout crashed when trying to open a macro file that is not writable.

Version 0.22

Release date: 2012-09-19

Download links

Features:


  • New available features:
  • A script (macro) development environment is now integrated into KLayout.
    It features a simple debugger, a syntax highlighting editor. For details see About Macro Development at http://www.klayout.de/doc/about/macro_editor.html.
  • KLayout now features an integrated help system (available through the "Help/Assistant" menu entry).
  • Support for libraries. See About Libraries for details.
    http://www.klayout.de/doc/about/about_libraries.html
  • KLayout now supports parametrized cells (PCells).
    There is a cool feature called "guiding shapes". Learn more about that here: About PCell's (http://www.klayout.de/doc/about/about_pcells.html).
  • A basic library is provided adding text generation for example to KLayout.
    See About The Basic Library for details.
  • The net tracer now allows to use layer combinations (derived by boolean operations)
    for the conductive and via layers. See The Net Tracing Feature for details.
  • A technology management is integrated into Klayout.
    That allows to switch various settings depending on the chosen technology. See About Technology Management for details about this feature.
  • The drawing can now be rotated or flipped without having to modify the layout.
    This function can be found in the "Display" menu under "Global Transformation".
  • The "background" combination mode allows to erase parts of existing shapes or
    add new parts to existing shapes. The background combination mode is available as a new drop-down button in the toolbar.
  • A "cell variant" generation function simplifies hiearchical editing.
    See Create Cell Variants for details about this feature.
  • General performance improvement of the render.
    This has been achieved by bitmap caching of cells and various optimisation measures.
  • Images now can be aligned with a layout using landmark points.
    The possible image transformations now include shear and perspective distortions. See Using Landmarks To Align Images
  • Images can now be stacked and moved to the bottom and to the top.
    The configuration now is stored along with additional configuration data (i.e. libraries) in a per-user directory in "~/.klayout" on Linux and in the application data path on Windows. The configuration file now is found there and is called "klayoutrc". New locations can be added using $KLAYOUT_PATH.
  • The database unit of the layout can be changed now in the layout properties page
    (menu: "File/Layout Properties").
  • Most numeric input boxes now accept formulas,
    i.e. "1254+3221" instead of a single value.
  • By clicking a on single point multiple times you can now cycle the selection through all objects below the point.
  • Layers can be copied (menu: "Edit/Layer/Copy Layer").
  • The selection can be duplicated (menu: "Edit/Duplicate" or Ctrl+B).
  • The size of the default font can now be adjusted (choose between small (current),
    medium and large on the Display/General page of the setup dialog).
  • The number of points used for circle interpolation can now be adjusted
    on the Application/Circles page of the setup dialog.
  • Some changes to make the user interface more consistent, i.e. "Synchonized views"
    has been moved to "Display" where most users where expecting it to be.
  • The selection now can be moved with the cursor keys in move mode.
  • The cell selection dialog allows to specify glob pattern wildcards in the filter box now.
  • OASIS CBLOCK compression and strict mode writing is supported now.
  • Multiple cells now can be selected in the cell tree. Some functions operate on that set (i.e. delete, copy, hide).
  • KLayout now has a LEF/Def import feature. See About LEF/DEF Import for details.
  • This feature is somewhat experimental. Feedback is welcome about that feature.
    Solved bugs:
  • Edit/Select/Disable All not working
    This function is supposed to disable all selectable items. Instead, an internal error message is issued.
  • Build problems with gcc 4.0
  • GDS text size is based on micron instead of user units
    Because of this the text object size may not be correct if the user unit is not micron.
  • Arrow keys may behave differently
    This can be annoying effects if you are used to a particular behavior. On the other hand, moving with the arrow keys now is possible in move mode.
  • -z option works differently
    "-z" not is a true "non-GUI" mode, in which no XServer connection is made on Linux. The advantage of this is that KLayout can be used as a engine on display-less servers. But some scripts depending on MainWindow or LayoutView objects will not work because these objects are no longer available. The solution will be to restore the original behavior of "-z" and implement a different, true display-less mode (i.e. "-zz").
  • Crash when using custom key bindings on some platforms
    On some platforms, apparently Linux and recent Qt versions, KLayout crashes when custom key bindings are defined and the respective key is pressed.
  • Issues with the macro tree
    Drag & drop does not work correctly within the macro tree on Windows. KLayout crashes when trying to open a macro file that is not writable.

Version 0.21.19

Release date: 2012-06-19

Download links

Features:

  • Gerber file reader enhancements: Negative contrast layers supported now
    with an option to provide a background and 'real' inversion.
  • Gerber reader bugfix: SR command implemented correctly now also for
    negative contrast.
  • Enhancement: transient selection markers are drawn over other markers
    for better visibility.
  • Bugfix: XOR tool can be canceled without crash.
  • Fixed build problems with gcc 4.7.0.
  • Fixed a layout import bug (cells have been deleted which should have been kept).
  • OASIS writer bugfixes: don't accumulate rounding errors when writing type 0
    or type 1 pointlists. Avoid writing invalid type 0 and 1 pointlists in certain cases.

Version 0.21.18

Release date: 2012-05-14

Download links

Features:

  • Gerber file reader enhancements: SR (step-and-repeat) is supported now.
  • Gerber reader bugfix: AM macro expansion was not done correctly sometimes.
  • Gerber reader enhancements: removed some superfluous warnings.
  • CIF writer: convert OASIS circles correctly to "R" round flash primitives.
  • Bugfix: copy & paste of layers in the layers tree now works and the copied
    layers are pasted to the current position.

Version 0.21.17

Release date: 2012-04-12

Download links

Features:

  • The memory footprint of 8-bit images has been reduced significantly.
  • The "Save current cell as" bug (see here) has been fixed: this function now works as expected.

Version 0.21.16

Release date: 2012-03-05

Download links

Features:

  • GDS format readers and writers now support time stamps: by default, the
    current time is written to the files. This option can be turned off in the "Save Layout Options" to simplify comparison of binary files for example. In addition, the timestamp of the BGNLIB record is read and displayed in the "Layout Properties" page.
  • The GDS reader now is somewhat less strict and also accepts certain broken versions
    (i.e. missing ENDEL records).
  • Several bug fixes related to scripting applications: Proc objects are held by the
    application now, Application does not abort in non-GUI mode in operations that take some time and try to display a progress bar.
  • DXF bugfix: layer names now do no longer contain blanks which made files unreadable
    by other tools like AutoCad.
  • Bugfix: foreground objects (i.e. rulers) are now correctly rendered in printout.

Version 0.21.15

Release date: 2012-01-22

Download links

Features:

  • Bugfix: the correct initial cell now is selected. Formerly, the largest
    cell was selected even it is was not a top cell.
  • "Show only selected" in the layer panel does not clear the selection any longer.
  • GDS reader now is less strict with respect to record order of STRANS, MAG and ANGLE.
  • Excellon drill file reader is now conforming to the specification in many respects.
  • Instances are not selected if the cell does not contain shapes in visible layers.
  • Marker browser does now work correctly when layer view transformations are present.
  • DXF reader enhancements: read LAYER table and assign GDS layers in that order,
    except for layer which got a layer name through their name (i.e. L1D100). Bugfix: don't suppress INSERT's if the layer is not mapped. Write TEXT and MTEXT correctly (multi-line support, small chunks for MTEXT, character alignment). New option: keep all cells for DXF reader. Added elliptic interpolation edge type (not really tested yet). HATCH objects with bulges and various edge types are implemented now. MTEXT supported now. New option: convert text to polygon for unicode support.
  • Changed default sorting of layers: always sort by layer number first, even if there
    is a name. If there is no layer number, sort by name.

Version 0.21.14

Release date: 2011-11-28

Download links

Features:

  • "Synchonized views" and "Select top level only" configuration shortcuts
    added to the "Views" menu.
  • Gerber reader bugfixes and enhancements: less strict parsing of aperture
    definitions, rotation of aperture macro elements is not considered correctly. Enhanced drill file reader.
  • Disabled cell copy & paste in viewer mode (was not working correctly).
  • Bugfix: it was possible to create an invalid configuration when removing
    all default stipples (lead to a crash on the next KLayout start).
  • Bugfix: an error appeared when switching the tabs in the layer panel in
    certain configuration involving groups.
  • Correct initialization of ruby interpreter to support Ruby 1.9.2 and
    later.
  • Bugfix: marker browser was only partially reporting collected markers
    for certain categories.
  • XOR now has an option to make use of multiple cores using a configurable
    number of threads.
  • Bugfix: reset of configuration required a restart.
  • Bugfix: OASIS reader now is more robust against overflow for g-deltas.
  • GDS reader enhancement: An invalid angle (outside the range of -360 to
    360 degree) now is no longer an error and the angle is automatically restricted to the valid range.

Version 0.21.13

Release date: 2011-09-19

Download links

Features:

  • A bug in the clip function was fixed which was related to empty cells
    (reported in the forum)
  • By default, the first level of hierarchy is shown now if a new layout
    is opened. That feature can be adjusted using the "Default levels of hierarchy" setting on the "General" page in the setup dialog.
  • For multiple top cells, the cell with the larges footprint is selected
    initially.
  • A simple print function (available in the "File" menu)
  • Support for command 93 in CIF (AREF)
  • Improved handling of single point paths. In particular with round ends.
    They now render a circle in OASIS. In reverse, OASIS circles now render single-point paths with round ends in GDS.
  • Ruby scripts now work more reliably under ruby 1.9 (i.e. Windows binary).
    Formerly, some operations failed due to improper initialization of the encoding system (i.e. Dir.glob).
  • Clean uninstaller under Windows (removes all registry entries).

Version 0.21.12

Release date: 2011-07-29

Download links

Features:

  • Bugfix: GDS2Text format was not recognized correctly in some cases.
  • Texts: strings with line breaks can be edited now (line breaks are shown
    as \n). Text size is shown more realistic now. Alignment flags are supported in GDS2 and can be edited now.
  • Layer and datatype is shown in addition to OASIS layer names in the layer
    list. The old behaviour can be configured by unchecking the "Always show layer and datatype" checkbox on the "Layers" page in the setup dialog.
  • For most file dialogs, the specific filter is the default now (i.e.
    "*.lyp" is default instead of "All files" for the layer properties file dialogs.)
  • There is a "all layout files" filter for the layout file selection dialogs.

Version 0.21.11

Release date: 2011-06-26

Download links

Features:

  • Bugfix: command line option -p was not working correctly.
  • Bugfix: writing layouts with large coordinates was producing invalid OASIS
    files in some cases.
  • The tarkit now contains the files necessary for a build with Visual Studio
    on Windows.

Version 0.21.10

Release date: 2011-05-07

Download links

Features:

  • Bugfix: content of cell was not shown correctly when the cell was moved.
  • Bugfix: PCB import was not working properly (Bottom mounting mode was
    broken, top cell and dbu were not set correctly when a PCB project file was imported directly).
  • Bugfix: RVE reader was not correctly handling check names with a dot.

Version 0.21.9

Release date: 2011-04-20

Download links

Features:

  • Bugfix: Loading of layer files with tabs was not working properly: the
    first tab's name was discarded.

Version 0.21.8

Release date: 2011-04-06

Download links

Features:

  • Bugfix: navigator was broken. It was not functional if KLayout was closed
    with the navigator open.

Version 0.21.7

Release date: 2011-03-24

Download links

Features:

  • DXF bugfixes (arc interpolation of polylines).
  • Performance enhancement of "test for shapes in view" feature of layer list.

Version 0.21.6

Release date: 2011-02-20

Download links

Features:

  • DXF enhancements (support for bulges for polylines).
  • Bugfix: RBA::Edge.intersect? reports intersections correctly also if edges
    are collinear.
  • Performance bugfix: selection was slow for certain cases of hierarchy.

Version 0.21.5

Release date: 2011-02-03

Download links

Features:

  • DXF enhancements (some polylines now have the correct width).
  • An option to select how instances are placed (at origin or lower left
    corner of bounding box).
  • Bugfix: when placing an instance at the lower left bounding box corner,
    it is guaranteed that the origin is on grid.
  • Stable operation on UTF-8 filesystems and with non-english locales on
    Linux (i.e. consistent use of dot as decimal point). However, UTF-8 file names are not correctly displayed although the file is opened correctly. This will be fixed in the next major release.

Version 0.21.4

Release date: 2011-01-19

Download links

Features:

  • Correct installation of the image reader plugins for the Windows packages.
  • Bugfix: rotate counterclockwise was clockwise and vice versa.
  • Bugfix: "draw border instances of arrays" feature was broken.
  • Fixed a ruby crash on some systems (related to an initial 'require' on a
    ruby module loaded with -rm).
  • CIF reader enhancement: "DS" statements are now accepted with a single
    value also.
  • The Windows installation now also includes the standard Ruby modules.

Version 0.21.3

Release date: 2010-12-27

Download links

Features:

  • DXF reader and writer enhancements. The reader now allows to specify how
    POLYLINE entities are read. In most cases, the "Automatic" mode will be appropriate. The writer was enhanced by providing an option which determines how to write polygons. The default method is POLYLINE. A comprehensive description of the DXF format, as KLayout understands it, together with a description of the modes, is given here.

Version 0.21.2

Release date: 2010-12-19

Download links

Features:

  • RBA bugfix: RdbItem.each_value was not working on const references.
  • DXF reader and writer enhancements for improved interoperability with
    other tools.
  • Unit option for DXF input (to specify the units of the drawing).
  • Bugfix: layer mapping was not working correctly for DXF and CIF output.

Version 0.21.1

Release date: 2010-12-06

Download links

Features:

  • Added cell margins for fill utility.
  • A couple of bugs fixed (related to Diff tool, marker database reader,
    Ruby scripting).
  • Source is compatible with earlier versions of Qt now (down to 4.2.3).
  • Bugfix: persistency of reader options was broken.
  • Enhanced DXF and CIF reader and writer functionality with improved
    compatibility with other systems.

Version 0.21

Release date: 2010-11-28

Download links

Features:

  • Support for DXF format (reading and writing).
    ASCII and binary format are supported. There is an open issue how to represent layouts with multiple top cells. Currently, the ENTITY section is always empty and all cells are put into BLOCKS sections. DXF units will be micron and the database unit must be selected manually when layouts are read.
  • Support for CIF format (reading and writing).
    There is an open issue how to deal with paths. By default, CIF states that paths are supposed to have round ends. Obviously that interpretation is not commonly used. Options are provided which control how path objects are read and written.
  • Tabs for the layer panel. This feature is explained here.
  • Flat cell list and cell list sorting modes. The feature is explained here.
  • Dockable tool boxes.
    Layer list, cell list, layer toolbox and navigator are now dockable and can be dragged to another location, torn off the main window or closed with Qt's standard dockable window controls. The position and the state of the dockable windows is saved in the settings and session files.
  • A ruler embedded in the background image.
    Now, a small ruler is embedded into the background which shows the dimension scale similar to a map. It can be disabled in the setup dialog on the "Display/Background" page.
  • Image quality enhancement by oversampling. The feature is explained here.
  • The "Diff" tool. The Diff tool produces a marker database containing a
    description of the differences. A detailed description can be found here.
  • Snapping to objects is provided as an option for edit mode. In this mode,
    the mouse snaps to vertices and edges of visible objects. This mode can be enabled with the "Objects" checkbox on the "Editor Options" page (F3 key or "Edit/Editor Options" menu).
  • The reference point for the placement of instances now is the lower left
    point of the placed cell's bounding box, not the origin.
  • Dialog geometry persistent now.
    Marker, shape and instance browsers now save their geometries and splitter pane configurations when the application exits.
  • Instance placement now uses bbox origin, not cell origin.
    This simplifies placement of cells with their origin not aligned with the content.
  • Fill (tiling) tool. The tool is found in "Edit/Utilities/Fill Tool". A
    detailed description can be found here.
  • In some places, particular in the ruler display string, expressions can
    be used. For rulers, the previous display string placeholder scheme is replaced by the more powerful expression expansion scheme (see Ruler properties for details).
  • Build support for VC++ and Visual Studio 2010. The Windows 64bit build
    now is based on that environment. Note: Visual Studio 2010 no longer supports Windows 2000. To use KLayout on Windows 2000, a legacy build based on MinGW is provided.

Version 0.20.2

Release date: 2010-05-25

Download links

Features:

  • Bugfix: marker browser crashed when opened from menu and the maximum
    number of markers was set differently from default.

Version 0.20.1

Release date: 2010-05-23

Download links

Features:

  • Navigator now allows to drag a zoom box in the usual way.
  • Paths with odd width (in database units) are shown correctly.
  • Some bugfixes (for a list of fixed bugs see Known bugs in version 0.20)
    concerning the net tracer and the Gerber import feature.
  • Support for Ruby 1.9 (experimental).
  • Support for 64 bit Windows (experimental).

Version 0.20

Release date: 2010-05-01

Download links

Features:

  • Import option for Gerber PCB data ("File/Import" menu entry). Details
    about this function can be found in the Importing Gerber PCB files section in the advanced features manual.
  • A function to import another stream file into the current file.
    This avoids having to use copy & paste and provides a couple of nice options. Details about this function can be found in the Importing other layout files section in the advanced features manual.
  • A simple XOR tool providing a flat XOR between two layouts. A tolerance
    can be set to suppress small deviations. A tiling option is provided to reduce memory requirements for large layouts. The flat approach probably limits the application to "almost flat", small to medium sized layouts. Details about this function can be found in the The XOR tool section in the advanced features manual.
  • A net tracing tool to trace single nets of conductive layers connected
    through via shapes. The function is intended for extracting single small nets and it's not performance optimized for the case of huge power nets. Details about this function can be found in the The net tracing feature section in the advanced features manual.
  • A navigator window that shows current view's rectangle and allows to
    control the rectangle by dragging or resizing it.
  • Multi threading support for drawing increases the drawing performance on
    multi-core CPU's by rendering different layers on different CPU's. The number of threads to use can be set in the setup dialog in the "Display" group under "Optimizations". By default, a single thread is used.
  • "Make array" method ("Edit/Selection" menu) to multiply the selection
    into an array arrangement.
  • A function to add a layout already loaded to a view ("File/Pull In
    Other Layout").
  • A function to scan a layer's geometry and create a marker database from
    that. The menu function is found in the "Tools/Verification" menu. It will scan all selected layers either flat or hierarchical and create a marker database containing the shapes as markers.
  • Layer mapping on input: the reader options now allow to specify a
    mapping together with a layer specification. In addition to specifying the layers to read, a target can be given which specifies which layer the shapes will be stored under (See "Reader Options" dialog found in the "File" menu).
  • A couple of new display options:
    o Abstract mode (shows only the outer interfacing shapes of child cells. o Child hierarchy level layout can be configured to be shown in different brightness, hollow fill or static neutral color to differentiate top level from bottom level layout. o Enhancements for the hierarchy level specifications in the layer source notation.
  • A log viewer is provided to catch warning messages. The menu entry to open
    the log viewer is found in the "File" menu.
  • The setup dialog has been reorganized to make room for more property pages.
  • Instances now show the cell's content when being moved instead just a
    rectangle. This feature can be disabled.
  • Various usability enhancements (i.e. mouse cursor now shows activity,
    status bar shows short shape statistics etc.).
  • An option to not write empty cells.
  • Support for missing cells in the input layout: those cells get marked and
    are not produced in the output unless they have received content. That allows to load and save layouts with missing cells without producing empty cells for those missing cells.
  • Some new functions in the layer list context menu ("Show All", "Hide All",
    "Show Only Selected").
  • Various bug fixes (i.e. for clip function).
  • A couple of new RBA methods.

Version 0.19.3

Release date: 2009-12-17

Download links

Features:

  • Some bugfixes (for a list of fixed bugs see Known bugs in version 0.19.2).
  • To specify the installation path (where the ".rbm" files are looked up),
    a new environment variable "KLAYOUT_PATH" is provided. This variable currently supports a single entry only. In that sense it's not a "path" right now.

Version 0.19.2

Release date: 2009-12-05

Download links

Features:

  • Some bugfixes (for a list of fixed bugs see Known bugs in version 0.19.1).

Version 0.19.1

Release date: 2009-11-30

Download links

Features:

  • Some bugfixes (for a list of fixed bugs see Known bugs in version 0.19).

Version 0.19

Release date: 2009-11-21

Download links

Features:

  • Images: it is possible now to load image files (JPG, GIF, TIFF etc.) and
    display them below the drawn layout. The display of the images can be adjusted in many ways, i.e. placement, scaling, rotation, mirroring, color/contrast/brightness adjustments and false color mapping for gray level images. Images are fully supported by RBA. The feature is described in detail in Adding images.
  • Marker browser: the marker browser is based on the report database (RDB).
    This is a new concept that has been introduced as a container for report items, in particular marker objects but also for a number of additional annotations including screenshots for documentation. An import of Calibre DRC databases is provided. The RDB is fully supported by RBA. The feature is described in detail in The marker browser.
  • Some enhancements for the layer views: invisible layers are now shown
    differently in a "collapsed" way. Thus, the layer's colors and styles are still recognizable. The new features are described in detail in Telling used from unused layers.
  • In the layer list, unused layers can now be hidden and layers without
    shapes in view can be marked unused or hidden. The normal mode of marking layers unused when the cell does not contain any shapes at all is still available. Both modes are available as checkable items in the layer list's context menu.
  • A "View" menu has been added with fast access to certain display options,
    i.e. turn grid on an off. A number of default grids can be defined for quick selection in the "View" menu. On request, the tool bar can now be hidden as well as the layer and hierarchy lists.
  • A key binding editor is provided. This way, all menu functions can be
    assigned arbitrary key shortcuts in a more comfortable ways.
  • The mid mouse button can be used to pan (drag) the view window now.
  • Various RBA enhancements, i.e. a method to compute the intersection point
    between edges.

Version 0.18.2

Release date: 2009-11-05

Download links

Features:

  • Enhancements for building with gcc 4.4.x and Qt 4.5.x.
  • OASIS reader now also supports text objects with forward references to
    text string definitions.

Version 0.18.1

Release date: 2009-08-02

Download links

Features:

  • Some bugfixes (for a list of fixed bugs see Known bugs in version 0.18)
    in particular for MacOS users.

Version 0.18

Release date: 2009-07-07

Download links

Features:

  • Some bugfixes (for a list of fixed bugs see Known bugs in version 0.17.2).
  • Added support for the GDS2 text format. This is a contribution by
    Romain Gauci from Oscillated Recall Technology (http://www.or-tech.co.jp).
  • Session persistence: sessions (files, layers, bookmarks, setup) can be
    saved and restored. Details for this feature can be found here.
  • Reader options can be specified in a dialog now (File menu). Some GDS2
    specific reader options are available: allow multi XY, allow big records and several box record handling modes. Details for this feature can be found here.
  • GDS2 specific writer options (max vertex option, multi XY record option,
    max cell name length).
  • The stipple palette now is editable. A corresponding page has been added
    in the setup dialog.
  • Flatten cell function. A cell can be flattened which will remove the cell
    and all the subcells unless not specified otherwise. This function can be found in the cell's context menu. Details for this feature can be found here.
  • The 'Make Cell' operation provides a nice origin now. Before, the origin
    of the new cell was far off sometimes.
  • Accept drag & drop of .lyb, .lys, .lyp, .rb, .rbm and layout files.
  • Switched to standard file dialogs where this has not been the case yet.
    In particular on the Windows platform, the application will behave somewhat more consistent.
  • Added an option to draw only border instances of arrays. This option can be
    found on the 'Misc.' tab of the setup dialog.
  • Added the capability to define global ruby modules using the ".rbm"
    extension and putting them into the installation directory.
  • Full cell copy & paste functions can now be found in hierarchy panel
    context menu.
  • Enhancement of grid snapping in partial mode. Before, a offgrid vertex could
    not be brought on-grid because movement was confined to grid steps.
  • Number of points for polygons is shown now in the polygon property dialog.
  • Hole resolution for GDS2 and OASIS writer. Before, polygons with holes
    (which can be produced by scripts) were rejected.
  • Some bugfixes for clip, using booleans for clip to overcome some problems
    with hole connectors and spikes - slow but safe..
  • '#' character is not longer used when creating cell variants - instead '$'
    is used to enhance the compatibility with other tools which do not allow the "#" character as part of cell names.
  • On paste, a 'fit selection' is done to show what has been pasted.
  • Mouse wheel mode is configurable now (shift/ctrl modifier behaviour).
    The 'alternative mode' can be found on the 'Misc.' tab in the setup dialog.
  • Option to clear all rulers when cell is changed. This option can be found
    on the 'Misc.' tab in the setup dialog in the 'On Cell Change' group. RBA enhancements:
  • A new class: ICplxTrans and related functions.
  • A recursive shape iterator simplifies hierarchical region queries and
    "as if flat" traversal of cells.
  • Polygon: hull and hole can be assigned now, compress method, point accessors.
  • The installation path now is available.
  • Added a method which allows to display a message in the status bar.
  • The transient selection now is available for RBA procedures.
  • New events are generated if selection and transient selection changes.
  • Added a generic assign method for copyable objects.
  • Added new classes 'LayerMap' and 'LoadLayoutOptions'.
  • Added two 'read' methods to Layout class.
  • Added a couple of methods to 'LayerInfo' (constructors, compare, ...).
  • Added a 'load_layout' method to LayoutView.
  • Added more cm_* methods to MainWindow.

Version 0.17.2

Release date: 2009-04-20

Download links

Features:

  • Some bugs are fixed now (for a list of fixed bugs see Known bugs in
    version 0.17.1).
  • The GDS2 writer now normalizes AREF records. This way compatibility with
    other EDA systems is enhanced.

Version 0.17.1

Release date: 2009-03-27

Download links

Features:

  • The display freezing bug on Windows is fixed now (i.e. see Known bugs
    in version 0.17).

Version 0.17

Release date: 2009-03-23

Download links

Features:

  • Various layer operations are now available: boolean operations (AND, XOR,
    NOT), layer merge and sizing. For a detailed description see Layer boolean operations and Layer sizing. These operations are also available in RBA (see RBA::EdgeProcessor and RBA::ShapeProcessor).
  • Boolean and sizing operations are also available Shapewise boolean
    operations and Shapewise sizing.
  • Objects can now be aligned. For a detailed description of the alignment
    function see Object alignment.
  • The cell origin can be adjusted relative to the cell's bounding box.
    For a detailed description see Cell origin adjustment.
  • A 'corner rounding' function has been implemented to support
    soft-cornered layout which is common in power applications. For a detailed description see Corner rounding.
  • Various layer operations are now implemented in edit mode: clear layer,
    delete layer and edit layer properties. For a detailed description see Layer operations: clear, delete, edit specification.
  • The selection can now be scaled (The "Scale" function is available in the
    "Selection" submenu of the "Edit" menu).
  • An option is available that allows to select all hierarchy levels
    automatically when a cell is opened (found in the "Misc." tab of the setup dialog: "Select all hierarchy levels" must be checked).
  • Various bug fixes (i.e. see Known bugs in version 0.16.1).

Version 0.16.1

Release date: 2009-01-07

Download links

Features:

  • Various bug fixes (i.e. see Known bugs in version 0.16).

Version 0.16

Release date: 2008-12-27

Download links

Features:

  • Some new editing capabilities: flatten, make cell, clear layer and a clip
    function.
  • Some RBA extensions, in particular the ability to modify layout by deleting
    shapes and instances, replacing and transforming them, changing property handles etc.
  • Support for global preset of configuration (through a file called "layviewrc"
    beside the executable binary) and a global RBA initialisation file (a file called "rbainit" beside the executable binary).
  • Transient selection: indicates by a faint selection marker what object is
    below the mouse (can be disabled).
  • The layer specification (layer, datatype, name) can be now be edited which
    allows to move a complete layer to a different one.
  • Undo buffering can now be disabled on the command line with the '-i' option.
    This saves the memory otherwise required for storing the replay information.
  • Directional constraints can be modified by using the Shift and Ctrl modifiers
    on various operations such as rulers, movement, drawing etc.
  • Now there is a 'most recently used' list ("Open Recent" in the "File" menu)
    which shows the last layouts opened for easy re-opening.
  • Reduced memory requirements for particular OASIS constructs (random repetitions)
  • The instance browser now has a "Choose cell" button where the cell can be
    chosen whose instances will be presented.
  • For most editing operations, the status bar will now indicate more detailed
    information such as move distance.
  • Pasted shapes and instances now are selected initially.
  • Enhanced OASIS compression mode (can be chosen from the options dialog on
    saving). Reduces file size considerably by creating regular shape arrays if possible at the cost of higher memory consumption and longer writing times.
  • Various bug fixes (i.e. see Known bugs in version 0.15).

Version 0.15

Release date: 2008-08-16

Download links

Features:

  • Editing capabilities. "klayout" in it's basic form still operates as pure
    viewer. However, a mode is available that enables editing capabilities. See Editor mode quickstart manual for a more detailed description
  • Some RBA extensions: i.e. conversion from "double" type polygons to "integer"
    type ones.
  • A default layer table can be configured in the "Application" tab of the
    setup dialog. This table will be loaded whenever a layout is opened or created.
  • A installer for Windows is provided now.
  • Properties are supported on instances now as well.
  • Code is compatible with gcc 4.3.0 now.
  • Enhanced compatibility with SunStudio 11 compiler (in particular in RBA).
  • Various bug fixes (i.e. in GDS reader and OASIS writer).

Version 0.14

Release date: 2008-04-04

Download links

Features:

  • Several RBA extensions: i.e. alternative methods replacing different 'new'
    variants by one 'new'. Markers now can be filled.
  • Fixes for the bugs mentioned in the issues list.
  • OASIS and GDS writing capabilities. Menu functions are provided to save a
    layout and single cells as well as RBA extensions that allow to write a layout. See Saving a layout or parts of it for details.
  • Rulers and markers are drawn with a thin halo in background color to
    enhance their visibility. This can be switched off in the setup dialog if this is not desired. The screenshots illustrate the differences.

Version 0.13

Release date: 2008-01-16

Download links

Features:

  • A couple of RBA extensions: API's for shape properties, rulers and geometry
    selections.
  • A bugfix for the OASIS reader (sometimes crashing the reader on
    CBLOCK-compressed input)
  • A function to descend into a cell in the hierarchy but keeping the context,
    which is shown in dimmed colors. This function can be found in the "Display" menu and is called "Descend". To use this function, select a shape or instance inside the cell into which to descend. "Descend" then enters the next cell along the path that leads to the selected shape or instance.
  • The mouse wheel can be used to zoom in and out.
  • Shift+right mouse button pressed now allows to "drag" layout in a "Google maps" fashion.
  • Copy & paste now is available for layers as well.
  • A ruby console is provided where ruby commands can be executed interactively.
  • The way how the selection is displayed can be configured now (color, line width
    and vertex size).
  • The interrupt signal now is enabled again even if Ruby is activated (Ctrl+C
    now works again).

Version 0.12

Release date: 2007-11-02

Download links

Features:

  • Support for arbitrary angles on cell instances.
  • A bugfix for the OASIS reader (CTRAPEZOIDS have not been read in some
    cases). The OASIS reader now uses shape arrays to achieve are smaller memory footprint in some cases.
  • Multiple transformations are now allowed on layer source expressions
    (see Transforming views and property selectors for a detailed description).
  • Rulers now are configurable to a large extent. Multiple ruler templates may
    be defined from which a certain ruler type can be chosen. Some of the new ruler styles are no longer "rulers" but rather "annotations". See Ruler properties for a description of that feature.
  • Last, but not least: KLayout now can be scripted to some extend using Ruby
    as the scripting language. For more information about this feature, see RBA introduction.

Version 0.11

Release date: 2007-06-26

Download links

Features:

  • Some bugs were fixed in the OASIS implementation. CBLOCK compression now
    is supported. Forward cell name references (numerical ID is used before being associated with a string) are supported as now. File global properties are now read correctly. A bug reading certain CTRAPEZOID objects was fixed. (Still, forward references are not allowed for text/property strings or property names).
  • A layout properties dialog has been added that shows basic properties of
    the layout such as top cells, layers and others.
  • The "Select Cell" dialog has been enhanced with the capability to hide
    and show multiple cells in the cell list.
  • A "zoom fit" mouse gesture was implemented: moving the mouse up and right
    with the right mouse button pressed now fits the current cell into the window. Moving up and left still zooms out.
  • A bug in the GDS2 reader, dropping polygon points in rare cases, was fixed

Version 0.10

Release date: 2007-05

Download links

Features:

  • The build script has been enhanced and supports Qt installations with
    different locations for binaries, libraries and headers. See the Build section for details about this.
  • OASIS files can be read as well now. The reader automatically determines
    the kind of file. OASIS layer names are supported. Due to the complexity of the OASIS specification, or more precisely the effort required to test a reader for meeting the specification, OASIS support currently is regarded to be in "beta" state.
  • Layers can now be organized hierarchically. Layers can be grouped which
    allows to control visibility and other properties for the group as a whole. Layers can be removed from the layer view list or new layer views can be created.
  • The layout can be transformed (rotated, shifted, mirrored) now. This
    transformation is specified in the layer panel as a part of the layer source specification. An optional transformation can be applied per layer or layer group. This way for example, different layouts can be aligned over each other.
  • Shape properties now are supported. Each shape may carry optional
    properties that are read from GDS or OASIS files. A property selector can be applied per layer view, so that a layer only shows these shapes that match the given property selection.
  • As an experimental feature, the inverse layout tree can be visualised
    by allowing the minimum hierarchy level to go into the negative range. The effect of this is, that a cell is shown in the context of all of it's direct parents, if the first hierarchy level is set to -1. If set to -2, the cell is shown in the context of all of it's parents and grandparents and so on. Since there is no particular optimization for this feature, performance may be poor, if a cell must be painted in a huge number of contexts. In addition, the context displayed does not participate in selection or ruler snapping.

Version 0.9

Release date: 2006-04

Download links

Features:

  • This was the first official release