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))

-

"^" - Boolean XOR between the results of two expressions

- -

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. -

"angle" - Selects edges based on their angle

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 @@ DRC Reference: Global Functions +

"angle (in condition)" - In universal DRC context: selects edges based on their orientation

+ +

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. +

"antenna_check" - Performs an antenna check

Usage:

@@ -17,7 +28,7 @@

See Netter#antenna_check for a description of that function.

-

"area" - Selects the primary shape if the area is meeting the condition

+

"area" - Computes the total area or in universal DRC context: selects the primary shape if the area is meeting the condition

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).

"bbox_height" - Selects primary shapes based on their bounding box height

@@ -330,14 +343,21 @@ See
Netter#connect_implicit

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.

"covering" - Selects shapes entirely covering other shapes

@@ -409,6 +429,19 @@ implied always. Sometimes cell variants will be created.

Deep mode can be cancelled with tiles or flat.

+

"deep_reject_odd_polygons" - Gets or sets a value indicating whether the reject odd polygons in deep mode

+ +

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. +

"device_scaling" - Specifies a dimension scale factor for the geometrical device properties

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.

"error" - Prints an error

@@ -829,6 +866,20 @@ l2 = layout("second_layout.gds")

For further methods on the source object see Source.

+

"length (in condition)" - Computes the total edge length of an edge layer or in universal DRC context: selects edges based on a length condition

+ +

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. +

"log" - Outputs as message to the logger window

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 the DPath constructors.

-

"perimeter" - Selects the primary shape if the perimeter is meeting the condition

+

"perimeter" - Computes the total perimeter or in universal DRC context: selects the primary shape if the perimeter is meeting the condition

Usage:

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).

"polygon" - Creates a polygon object

@@ -1518,9 +1571,10 @@ out = in.drc(width == 0.2.um) out = in.drc(0.1.um <= width < 0.2.um)

-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.

"write_spice" - Defines SPICE output format (with options)

diff --git a/src/lay/lay/doc/about/drc_ref_layer.xml b/src/lay/lay/doc/about/drc_ref_layer.xml index bb69973b0..d230f7ddb 100644 --- a/src/lay/lay/doc/about/drc_ref_layer.xml +++ b/src/lay/lay/doc/about/drc_ref_layer.xml @@ -1436,6 +1436,9 @@ The following image shows the effect of the notch check:

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.

"ongrid" - Checks for on-grid vertices

diff --git a/src/lay/lay/doc/images/drc_shielded3.png b/src/lay/lay/doc/images/drc_shielded3.png index d6e675371..d7c3abf0b 100644 Binary files a/src/lay/lay/doc/images/drc_shielded3.png and b/src/lay/lay/doc/images/drc_shielded3.png differ