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