dve_segsize()
Expands or contracts an error segment on an edge. This command is particularly useful when used with the compensate command.
See also: compensate().
Syntax
edgeLayerOut = dve_segsize(errorEdgeLayer, distance);
where
| edgeLayerOut | An edge layer |
| errorEdgeLayer | A layer with error segments |
| distance | A real value |
For a positive distance the expansion stops at a vertex. For a negative distance a segment that ends at a vertex remains "pinned" to that vertex.
Example
A requirement to compensate error segments, based on some clearance operation:
decl lyrMetal = dve_import_layer("Metal1"); decl lyrError101 = dve_export_layer("Error101"); lyrError101= dve_drc(single_clearance(lyrMetal ) < 20.0, DVE_RN_EDGE_ANGLES, DVE_RV_PARALLEL, DVE_RN_POLARITY, DVE_RV_OUTSIDE, DVE_RN_STRUCTURE,DVE_RV_DIFF_POLYGON, DVE_RN_TEMPLATE, DVE_RV_OPPOSITE);

Now, perform compensation:
decl lyrEdges, lyrEdgesCmp, lyrPolyCmp;
lyrEdges = dve_drc(single_clearance(lyrMetal ) < 20.0, ...);
lyrEdgesCmp = dve_drc(compensate(lyrEdges, 4));
lyrPolyCmp = dve_quadout(lyrEdgesCmp);
lyrError101 += dve_drc(all_edges(lyrPolyCmp), "clearance < 20");

This may produce undesirably narrow notches between the sections on the left. Eliminate these notches with the segsize operation, which expands or contracts every error segments by a specified amount:
decl lyrEdges, lyrEdgesSized, lyrEdgesCmp, lyrPolyCmp;
lyrEdges = dve_drc(single_clearance(lyrMetal ) < 20.0,...);
lyrEdgesSized = dve_segsize(lyrEdges, 20 );
lyrEdgesCmp = dve_drc(compensate(lyrEdgesSized, 4));
lyrPolyCmp = dve_quadout(lyrEdgesCmp);
lyrError101 += dve_drc(all_edges(lyrPolyCmp), "clearance < 20");

Note that the results of the segsize operation merge together. Now, perform a segsize with a negative distance:
decl lyrEdges, lyrEdgesSized, lyrEdgesUnderSized, lyrEdgesCmp, lyrPolyCmp;
lyrEdges = dve_drc(single_clearance(lyrMetal ) < 20.0,...);
lyrEdgesSized = dve_segsize(lyrEdges , 20 );
lyrEdgesUnderSized = dve_segsize(lyrEdgesSized , -20 );
lyrEdgesCmp = dve_drc(compensate(lyrEdgesUnderSized , 4));
lyrPolyCmp = dve_quadout(lyrEdgesCmp );
lyrError101 += dve_drc(all_edges(lyrPolyCmp), "clearance < 20");

Edges that contain error segments can be extracted by specifying a distance larger than the edge length (edgeout operation):
lyrEdgesSized = dve_segsize(lyrEdges, 500);

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