poly_edge_code()
Select polygons based upon edge code information computed during a merge operation. Select only polygons with have all the given path types. Input layer must be the result of a merge command. Returns: A polygon layer.
See also: dve_drc()
Syntax
dve_drc (poly_edge_code (inLayer) [,qualifierName,qualifierValue]);
where:
| inLayer | A polygon layer produced by a merge operation between two layers |
| qualifierName, qualifierValue | A name, value pair that qualifies the selection |
Selection Qualifier: DVE_RN_EDGE_SELECT
Qualifier Resource Value
| DVE_RV_ACCEPT_ANY | Select polygon if any path codes are found |
| DVE_RV_ACCEPT_ALL | (default) Select polygon if all path codes are found |
| DVE_RV_REJECT_ANY | Reject polygon if any one of the path codes are found |
| DVE_RV_REJECT_ALL | Reject polygon if exactly all the path codes are found |
If both accept and reject values are specified then a polygon passes the test only if it does have the edge codes specified in the accept command, and does not have the codes in the reject command.
Edge Code Qualifiers
Example 1
decl lyrCond = dve_import_layer ("cond"); decl lyrCond2 = dve_import_layer ("cond2"); decl lyrError101 = dve_export_layer ("error101"); decl lyrPolyCombine = NULL; decl lyrPolyOverlap = NULL; decl lyrPolyMerge = NULL; decl lyrPoly = NULL; lyrPolyCombine = dve_bool_or (lyrCond, lyrCond2); lyrPolyOverlap = dve_bool_and (lyrCond, lyrCond2); lyrPolyMerge = dve_bool_and (lyrPolyCombine, lyrPolyOverlap); lyrPoly = dve_drc (poly_edge_code (lyrPolyMerge), DVE_RN_EDGE_SELECT, DVE_RV_ACCEPT_ANY, DVE_RN_PATH_CODE, DVE_RV_INT); lyrError101 += dve_drc (all_edges (lyrPoly), "Conductive metal overlaps");
Example 2
Consider the recognition of a MOS gate:
decl lyrGate = dve_bool_and(lyrPoly, lyrDiff);
But suppose there is a section of the gate where a lyrPoly internally butts diffusion:

The problem is how to distinguish between gates G1 (legal) and G2 (illegal). The solution is to consider the edge codes that make up the polygon. Internally, a bit is set for each type of edge included in the polygon. So that
- Gate G1 has codes TIB and BIT
- Gate G2 has codes TIB, BIT, INT
The gates can be selected by accepting/rejecting polygons containing the edge code INT:lyrGate = dve_bool_and(lyrPoly, lyrDiff); lyrGoodGate = dve_drc(poly_edge_code(lyrGate), DVE_RN_EDGE_SELECT, DVE_RV_REJECT_ANY, DVE_RN_PATH_CODE, DVE_RV_INT); lyrBadGate = dve_drc(poly_edge_code(lyrGate), DVE_RN_EDGE_SELECT, DVE_RV_ACCEPT_ANY, DVE_RN_PATH_CODE, DVE_RV_INT); lyrError101 += dve_drc(all_edges(lyrGoodGate ), "Good Gate"); lyrError102 += dve_drc(all_edges(lyrBadGate ), "Bad Gate");

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