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 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.
Problem was that while properly implementing the reverse
cluster connection during cluster merges, cluster connection
propagation suffered a complexity explosion during generation
of the cluster interactions.
Solution is to postpone the cluster joining step until
a cell is finished connecting the clusters. To mitigate the
performance effect of that, some optimizations are
introduced (e.g. using a more efficient unordered_map).