The fix implements a dynamic buffer for the InflateFilter
which is dynamically enlarged if needed. That fix is universal
and does not only apply to OASIS.
@abdelq Thanks for the test case
The "make array" dialog now has a tab where you can
select "spaced mode". In spaced mode, the bounding box
of the selection is used to compute the array pitch.
You can add a space between the columns and rows and
decide whether to use all layers for the instance
bounding boxes or only the visible ones.
You can generate paths from net, device, circuit or subcircuit
objects. To generate a path for an object from the first netlist
of a pair (layout netlist in LVS case), use
NetlistObjectsPath#from_first
e.g.
path = RBA::NetlistObjectsPath::from_first(net)
For an object from the second netlist (schematic in the LVS case)
use "from_second".
First of all, NetlistBrowserDialog#current_path now has a setter.
Changing the selection will navigate to the location of the
selected object, but not issue an "on_selection_changed" event.
In addition, the following features have been added:
* NetlistBrowserDialog#db_index
* NetlistBrowserDialog#view
The way to specify them is through the following
environment variables:
$KLAYOUT_LEF_FORMAT - LEF suffixes (default: "*.lef *.LEF *.lef.gz *.LEF.gz")
$KLAYOUT_DEF_FORMAT - DEF suffixes (default: "*.def *.DEF *.def.gz *.DEF.gz")
The string is a space-separated list of simple
match pattern. Only "*.xyz"-style pattern are allowed
currently.
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 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.
This patch moves a lock inside the thread finishing
code such that a race condition of the finish sequence
and a random restart of the threads becomes impossible.
This problem has been observed while randomly zooming
with multiple drawing threads present. It's hard to
reproduce.
Problem was pushing of the results into the cell hierarchy
somehow lead to thread stalling. Likely due to bbox invalidation
and related effects. Solution is to store the results of
the operations inside the context structure (along with the
propagation information) and push it to the layout later in
a single step.