With this patch, empty layers can be used to place device
terminals on and these shapes are visible on those layers.
This allows splitting the terminal shapes and used those
shapes to connect down to different substrates.
The patch turns EmptyLayer into a DeepLayer when used
as terminal layer for device extraction.
Problem was that "to_s" did not deliver a parsable string for the
properties. This is fixed, but the format of the properties part
of the string changes.
* Layout#delete_cells with a list of cell object
* Layout#delete_cell_rec with a cell object
* Layout#prune_cell with a cell object
* Layout#prune_cells for pruning multiple cells in one call
* Layout#prune_subcells with a cell object
* Layout#prune_subcells with multiple root cells
* Layout#flatten with a cell object
* Layout#flatten_into with cell objects
* Layout#delete_cell with a cell object
* Default value "all" for "levels" argument in "prune_subcells" and "prune_cell"
* Default value "all" for "levels" and "true" for "prune" argument in "flatten"
* Default value "all" for "levels" and "unity" for "trans" argument in "flatten_into"
The two convenience methods are
Library#library_from_file
Library#library_from_files
Both create and register a Library object tied to a file.
This object supports proper reloading and re-mapping on
"refresh".
Most tools and functions now allow to explicitly
specify a format for input and output. On input,
the format is usually detected, but for some
cases, this is not possible (e.g. DEF). So you can
specify the format attached to the file name in
square brackets:
e.g. file.defok[def]
"def" is the intended suffix, "defok" is the given one.
On output, the same is possible, specifically in strmxor
and strmclip:
strmxor a.gds b.gds out.xor[oas]
The idea is to use broken regions for certain operations
such as booleans in deep mode (local operations). These polygons are
more efficient. To support this, a "broken polygon" view
is supplied similar for "merged" view. The translation is
handled automatically.
As a side effect, regions may appear to be composed in broken
polygons now when they have been merged before.
The solution is to introduce a new object, the layout handle.
A layout handle is a reference counting pointer to a layout.
It can be obtained from a cell view and stored somewhere.
If the cell view is closed, the layout will still exists
as long as a layout handle exists. A layout handle can be
used in LayoutView#show_layout in addition to the Layout
object to re-open a layout that existed in a closed view.
1. The script API "map_file" attribute has been changed
to accept and supply nil (for no file), a string (for
a file, empty is equivalent to "no file") and a list
for multiple files which are merged. The split at "+"
or "," has been dropped.
2. The strm* tools option ("--lefdef-map") has been changed
to allow multiple occurances instead of split at "+" or ",".