poly_hole_count()
Selects polygons based upon the number of holes. Returns: A polygon layer.
See also: dve_drc()
Syntax
dve_drc (poly_hole_count (inLayer) operator numHoles);
where:
| inLayer | A polygon layer |
| operator | < Less than <= Less than or equal to == Equal to > Greater than >= Greater than or equal to |
| numHoles | An integer value representing the number of holes |
Example
Consider a clearance check which is applied only between polygons on layer cond2 that are contained in the same polygon on layer cond:

We create new polygons by subtracting layer cond2 from layer cond. Polygons with > 1 hole are selected using poly_hole_count(). Polygons with no or 1 hole are not selected because they contain no or 1 polygon on cond2.
lyrPoly = dve_bool_not(cond, cond2); lyrPolyHole = dve_drc(poly_hole_count(lyrPoly) > 1);

We use a clearance rule to select the inner edges. Qualifiers instruct the checker to direct the search between edges of same polygon and toward outside the polygon.
lyrEdges = dve_drc(single_clearance(lyrPolyHole)> 1, DVE_RN_EDGE_ANGLES, DVE_RV_PARALLEL, DVE_RN_POLARITY, DVE_RV_OUTSIDE, DVE_RN_TEMPLATE, DVE_RV_OPPOSITE, DVE_RN_STRUCTURE, DVE_RV_SAME_POLYGON);

Polygons are extracted with the quadout command.
lyrPolyCmp = dve_quadout(lyrEdges);

Finally, cond2 is subtracted from the new polygon layer and a clearance rule is applied. This time, the search is directed toward inside the polygons.
lyrPoly = dve_bool_not(lyrPolyCmp, cond2); error= dve_drc(single_clearance(lyrPoly )> 100, "spacing between cond2 and cond2 inside cond is > 100.0um", DVE_RN_EDGE_ANGLES, DVE_RV_PARALLEL, DVE_RN_POLARITY, DVE_RV_INSIDE, DVE_RN_TEMPLATE, DVE_RV_OPPOSITE, DVE_RN_STRUCTURE, DVE_RV_SAME_POLYGON);

Privacy
Statement
|
Terms of Use
|
Legal |
Contact Us
|
© Agilent 2000-2008 ![]()