diff --git a/src/lay/lay/doc/about/drc_ref_drc.xml b/src/lay/lay/doc/about/drc_ref_drc.xml index 6b0b4a6df..680493491 100644 --- a/src/lay/lay/doc/about/drc_ref_drc.xml +++ b/src/lay/lay/doc/about/drc_ref_drc.xml @@ -86,6 +86,16 @@ of two expressions. The NOT operation is defined for polygons, edges and polygons subtracted from edges (first argument edge, second argument polygon).
+CAUTION: be careful not to take secondary input for the +first argument. This will not render the desired results. +Remember that the "drc" function will walk over all primary +shapes and present single primaries to the NOT operation together +the the secondaries of that single shape. So when you use +secondary shapes as the first argument, they will not see all +all the primaries required to compute the correct result. +That's also why a XOR operation cannot be provided in the +context of a generic DRC function. +
The following example will produce edge markers where the width of is less then 0.3 micron but not inside polygons on the "waive" layer: @@ -94,17 +104,6 @@ the "waive" layer: out = in.drc((width < 0.3).edges - secondary(waive))
-Usage:
--The ^ operator will compute the XOR (symmetric difference) between the results -of two expressions. The XOR operation is defined for polygons and edges. -Both expressions must be of the same type. -
Usage:
diff --git a/src/lay/lay/doc/about/drc_ref_global.xml b/src/lay/lay/doc/about/drc_ref_global.xml index 9d9bd3cb5..72866dcdd 100644 --- a/src/lay/lay/doc/about/drc_ref_global.xml +++ b/src/lay/lay/doc/about/drc_ref_global.xml @@ -8,6 +8,17 @@Usage:
++"angle" represents the edge orientation filter on the primary shape edges in +DRC expressions (see Layer#drc and DRC#angle for more details). In this context, +the operation acts similar to Layer#with_angle. +
Usage:
@@ -17,7 +28,7 @@See Netter#antenna_check for a description of that function.
-Usage:
This function can be used with a layer argument in which case it -is equivalent to "layer.area" (see Layer#area). Without a layer -argument, "area" represents an area filter for primary shapes in +is equivalent to "layer.area" (see Layer#area) and returns the total area of the +polygons in the layer. +
+Without a layer argument, "area" represents an area filter for primary shapes in DRC expressions (see Layer#drc and DRC#area for more details).
Usage:
This function can be used with a layer argument in which case it is equivalent to "layer.corners" (see Layer#corners). Without a layer argument, "corners" represents the corner generator/filter in primary shapes for DRC expressions (see Layer#drc and DRC#corners for more details). +
+Like the layer-based version, the "corners" operator accepts the +output type option: "as_dots" for dot-like edges and "as_boxes" for +small (2x2 DBU) box markers. +
+The "corners" operator can be put into a condition which means it's +applied to coners meeting a particular angle constraint.
Deep mode can be cancelled with tiles or flat.
+Usage:
++In deep mode, non-orientable (e.g. "8"-shaped) polygons may not be resolved properly. +By default the interpretation of such polygons is undefined - they may even vanish entirely. +By setting this flag to true, the deep mode layout processor will reject such polygons with +an error. +
Usage:
@@ -537,9 +570,13 @@ out = in.drc(enclosing(other) == 0.2.um) out = in.drc(0.1.um <= enclosing(other) < 0.2.um)-The result of the enclosing check are edge pairs forming the violation -markers. With a lower limit, these markers are formed by two, identical but opposite edges attached to -the primary shape. Without a lower limit, the first edge of the marker is attached to the +The result of the enclosing check are edges or edge pairs forming the markers. +These markers indicate the presence of the specified condition. +
+With a lower and upper limit, the results are edges marking the positions on the +primary shape where the condition is met. +With a lower limit alone, these markers are formed by two, identical but opposite edges attached to +the primary shape. Without an upper limit only, the first edge of the marker is attached to the primary shape while the second edge is attached to the shape of the "other" layer.
For further methods on the source object see Source.
+Usage:
++This function can be used with a layer argument in which case it +is equivalent to "layer.length" (see Layer#length). Without a layer +argument, "length" represents the edge length filter on the primary shape edges in +DRC expressions (see Layer#drc and DRC#length for more details). In this context, +the operation acts similar to Layer#with_length. +
Usage:
@@ -1073,7 +1124,7 @@ x.insert(polygon([ p(0, 0), p(16.0, 0), p(8.0, 8.0) ])) This function creates a path object. The arguments are the same than for theUsage:
This function can be used with a layer argument in which case it -is equivalent to "layer.perimeter" (see Layer#perimeter). Without a layer -argument, "perimeter" represents a perimeter filter for primary shapes in +is equivalent to "layer.perimeter" (see Layer#perimeter) and returns the +total perimeter of all polygons in the layer. +
+Without a layer argument, "perimeter" represents a perimeter filter for primary shapes in DRC expressions (see Layer#drc and DRC#perimeter for more details).
-The result of the width check are edge pairs forming the violation -markers. With a lower limit, these markers are formed by two, identical but opposite edges attached to -the primary shape. Without a lower limit, both edges are attached to different sides of the primary +With a lower and upper limit, the results are edges marking the positions on the +primary shape where the condition is met. +With a lower limit alone, these markers are formed by two, identical but opposite edges attached to +the primary shape. Without an upper limit only, both edges are attached to different sides of the primary shape.
Returns the parts of the polygons which are not orientable (i.e. "8" configuration) or self-overlapping. Merged semantics does not apply for this method. Always the raw polygons are taken (see raw). +
+The odd_polygons check is not available in deep mode currently. See deep_reject_odd_polygons for +an alternative.