Problem was that the OASIS writer was simply ignoring
all top level proxy cells (PCells, Library references).
The original bug #1835 fixed that by changing the
reader behavior, so it would keep top level proxies.
However, doing the spin through the writer got them
removed and in addition, the cleanup happing during
editing would also remove them.
Solution is to centralize the strategy of cleaning
cells. The cleanup now is changed to not remove
proxy top cells if they are the only ones. This is
consistent with the previous reader-only behavior.
The writer implements the same behavior by means
dropping cells marked for cleanup, instead of simply
skipping all proxy cells.
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.
- Split binary and regular streams
- Binary serialization of tl::Variant
- Fixing tl::Variant parsable string representation for byte arrays and char
(Format is '...'b for byte arrays and '.'c for chars).
- tl::to_quoted_string now allows 0 characters in the string
(escapes to '\000')
* 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"
1.) Safeguard against missing cells
2.) Use topological order during refresh
This avoid child-first issues
3.) Use cell names and basic names for mapping
(cell names may be disambiguated while
basic names are not)
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".