Selects polygons based upon the total length of the outside edges. Returns: A polygon layer.
See also: dve_drc()
dve_drc (poly_perimeter (inLayer) operator distance);
|inLayer||A polygon layer|
|operator||< Less than
<= Less than or equal to
== Equal to
> Greater than
>= Greater than or equal to
|distance||A real value in layout units|
decl lyrCond = dve_import_layer ("cond"); decl lyrError101 = dve_export_layer ("error101"); decl lyrPoly = NULL; lyrPoly = dve_drc (poly_perimeter (lyrCond) < 20.0); lyrError101 += dve_drc (all_edges (lyrPoly), "Polygon perimeter < 20.0");
Polygon merge qualifier commands constrain the selection of edges based upon a specified edge code. All of the commands in this section are based upon edge information computed during a merge operation.
Some of the notation in this section depends on a naming convention. The first mentioned layer is called the TOP layer and the second mentioned layer is called the BOTTOM layer. For example,
lyrPoly = dve_bool_and(cond, cond2);
Layer cond is TOP, layer cond2 is BOTTOM.
This is an arbitrary, rather than a descriptive designation. For example the TOP layer might be "metal" and the BOTTOM layer might be "contact".
When polygon TOP and polygon BOTTOM merge, a set of vertices consisting of the intersection points is derived. Each resultant edge between pairs of these vertices has a unique `edge_code' that describe its relationship to other edges.
Consider two polygons on the TOP and BOTTOM levels (vertices at the intersection are shown as asterisks '*'):
Merging the two polygons produces a merged database containing six types of edges. Each type is shown with a different character:
|TOP_OUTSIDE_BOTTOM (T)||polygon TOP outside polygon BOTTOM|
|BOTTOM_OUTSIDE_TOP (B)||polygon BOT outside polygon TOP|
|TOP_INSIDE_BOTTOM (t)||polygon TOP inside polygon BOTTOM|
|BOTTOM_INSIDE_TOP (b)||polygon BOT inside polygon BOTTOM|
|INTERNAL (I)||edges of TOP and BOTTOM butting internally|
|EXTERNAL (E)||edges of TOP and BOTTOM butting externally|
A side effect of the algorithm is that corner-to-edge and corner-to-corner interactions are not evaluated. For instance, when checking to see if two polygons touch, a contact between a corner and an edge, or between two corners is not counted.
For example, these polygons are not classified as touching:
The following qualifier is used extensively in polygon selection commands:
Qualifier Resource Value:
|DVE_RV_TOP||(default) Select edges on top that are outside bottom|
|DVE_RV_BOT||Select edges on bottom that are outside top|
|DVE_RV_TIB||Select edges on top that are inside bottom|
|DVE_RV_BIT||Select edges on bottom that are inside top|
|DVE_RV_INT||Select edges on top and bottom that are butting internally|
|DVE_RV_EXT||Select edges on top and bottom that are butting externally|
A "path" is a set of coincident edges of a polygon, all of the same type. Other paths of the polygon which do not satisfy the requested path type are called the "anti-paths" of the polygon.