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).
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.
* It's possible to specify the fill cell origin now
(this is the point where the first cell's lower left is placed)
* margin is taken into account when no step vectors are specified
* "No exclude" is default
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 ",".