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 

Contents
Additional Resources