Klayout

Latest version: v0.29.11

Safety actively analyzes 706267 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 13 of 24

0.24.5

* 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::LayerPropertiesid was not always unique as stated
by the documentation. Specifically not after a file was loaded.

0.24.4

* 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::TilingProcessthreads 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).

0.24.3

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

0.24.2

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

0.24.1

* 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: "Pathwidth=" does no longer reset the round end flag.
* Enhancement: the "Show All" mode of the marker browser is persisted now.

0.24

* 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, "QTreeWidgetinsertItem" 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.
- Annotationid
- Cellchange_pcell_parameters
- Cellpcell_parameters_by_name
- DPolygonassign_hull (raw argument)
- DPolygonassign_hole (raw argument)
- DPolygoneach_edge (with contour argument)
- DPolygoninsert_hole (raw argument)
- DPolygontransform
- DSimplePolygoninitialize (raw parameter)
- DSimplePolygoninitialize (raw parameter)
- DSimplePolygonset_points
- DSimplePolygontransform
- EdgePairs+
- Edges& (with Region)
- Edges&= (with Region)
- Edges- (with Region)
- Edges-= (with Region)
- Edgesinside_part
- Edgesselect_inside_part
- Edgesoutside_part
- Edgesselect_outside_part
- Instancechange_pcell_parameter
- Instancechange_pcell_parameters
- Instanceconvert_to_static
- Instanceflatten
- Instanceis_pcell?
- Instancepcell_declaration
- Instancepcell_parameters
- Instancepcell_parameters_by_name
- Layoutbegin_shapes (with cell ref)
- Layoutbegin_shapes_overlapping (with cell ref)
- Layoutbegin_shapes_touching (with cell ref)
- Layoutcreate_cell (with PCell parameters and/or lib name)
- Layoutdelete_property
- Layoutflatten_into
- Layouthas_prop_id?
- Layoutpcell_ids
- Layoutpcell_names
- Layoutprop_id
- Layoutprop_id=
- LayoutViewclear_object_selection
- LayoutViewobject_selection
- LayoutViewobject_selection=
- LayoutViewreplace_annotation
- LayoutViewselect_object
- LayoutViewunselect_object
- MainWindowcm_close_all
- MainWindowcm_save_all
- MainWindowcm_sel_move_to
- MainWindowinstance
- MainWindowmanager
- ObjectInstPath==
- ObjectInstPath!=
- ObjectInstPath<
- ObjectInstPathappend_path
- ObjectInstPathclear_path
- ObjectInstPathcv_index=
- ObjectInstPathlayer=
- ObjectInstPathseq=
- ObjectInstPathshape=
- ObjectInstPathtop
- ObjectInstPathtop=
- RdbItemValueinitialize (with float argument)
- RdbItemValuefloat
- RdbItemValueis_float?
- RdbItemValuetag_id
- RdbItemValuetag_id=
- SaveLayoutOptionsgds_write_file_properties
- SaveLayoutOptionsgds_write_file_properties=
- SaveLayoutOptionsoasis_write_std_properties
- SaveLayoutOptionsoasis_write_std_properties=
- Shapeeach_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.

Page 13 of 24

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.