mirror of https://github.com/KLayout/klayout.git
Updating documentation
This commit is contained in:
parent
1b887dbbb3
commit
be00f308f9
|
|
@ -177,6 +177,37 @@ run_demo gen, "input.width(1.2, projection)", "drc_width2.png"
|
|||
run_demo gen, "input.width(1.2, square)", "drc_width3.png"
|
||||
run_demo gen, "input.width(1.2, whole_edges)", "drc_width4.png"
|
||||
|
||||
class Gen
|
||||
def produce(s1, s2)
|
||||
pts = [
|
||||
RBA::Point::new(0, 0),
|
||||
RBA::Point::new(2000, 0),
|
||||
RBA::Point::new(2000, 2000),
|
||||
RBA::Point::new(0, 2000)
|
||||
];
|
||||
s1.insert(RBA::Polygon::new(pts))
|
||||
pts = [
|
||||
RBA::Point::new(2000, 2000),
|
||||
RBA::Point::new(4000, 2000),
|
||||
RBA::Point::new(4000, 4000),
|
||||
RBA::Point::new(2000, 4000)
|
||||
];
|
||||
s1.insert(RBA::Polygon::new(pts))
|
||||
pts = [
|
||||
RBA::Point::new( 500, 4000),
|
||||
RBA::Point::new(2500, 4000),
|
||||
RBA::Point::new(2500, 6000),
|
||||
RBA::Point::new( 500, 6000)
|
||||
];
|
||||
s1.insert(RBA::Polygon::new(pts))
|
||||
end
|
||||
end
|
||||
|
||||
gen = Gen::new
|
||||
|
||||
run_demo gen, "input.width(1.0)", "drc_width5.png"
|
||||
run_demo gen, "input.width(1.0, without_touching)", "drc_width6.png"
|
||||
|
||||
class Gen
|
||||
def produce(s1, s2)
|
||||
pts = [
|
||||
|
|
@ -381,6 +412,45 @@ run_demo gen, "input1.sep(input2, 1.0, projection,\n" +
|
|||
" one_side_allowed,\n" +
|
||||
" two_opposite_sides_allowed)", "drc_separation11.png"
|
||||
|
||||
class Gen
|
||||
def produce(s1, s2)
|
||||
pts = [
|
||||
RBA::Point::new(0, 0),
|
||||
RBA::Point::new(2000, 0),
|
||||
RBA::Point::new(2000, 1500),
|
||||
RBA::Point::new(0, 1500)
|
||||
];
|
||||
s2.insert(RBA::Polygon::new(pts))
|
||||
pts = [
|
||||
RBA::Point::new(2000, 1500),
|
||||
RBA::Point::new(3500, 1500),
|
||||
RBA::Point::new(3500, 3500),
|
||||
RBA::Point::new(2000, 3500)
|
||||
];
|
||||
s1.insert(RBA::Polygon::new(pts))
|
||||
pts = [
|
||||
RBA::Point::new(1000, 3500),
|
||||
RBA::Point::new(3000, 3500),
|
||||
RBA::Point::new(3000, 5000),
|
||||
RBA::Point::new(1000, 5000)
|
||||
];
|
||||
s2.insert(RBA::Polygon::new(pts))
|
||||
pts = [
|
||||
RBA::Point::new(1000, 5500),
|
||||
RBA::Point::new(3000, 5500),
|
||||
RBA::Point::new(3000, 7000),
|
||||
RBA::Point::new(1000, 7000)
|
||||
];
|
||||
s1.insert(RBA::Polygon::new(pts))
|
||||
end
|
||||
end
|
||||
|
||||
gen = Gen::new
|
||||
|
||||
run_demo gen, "input1.sep(input2, 1.0)", "drc_separation12.png"
|
||||
run_demo gen, "input1.sep(input2, 1.0, without_touching)", "drc_separation13.png"
|
||||
run_demo gen, "input1.sep(input2, 1.0, without_coincident)", "drc_separation14.png"
|
||||
|
||||
# ...
|
||||
|
||||
class Gen
|
||||
|
|
|
|||
|
|
@ -3270,17 +3270,18 @@ gsi::Enum<db::collinear_mode_type> decl_CollinearMode ("db", "CollinearMode",
|
|||
) +
|
||||
gsi::enum_const ("AlwaysIncludeCollinear", db::AlwaysIncludeCollinear,
|
||||
"@brief Specifies that check functions should always include collinear edges\n"
|
||||
"With this specification, the check functions will also check edges which are collinear."
|
||||
"With this specification, the check functions will also check edges which are collinear (in line). "
|
||||
"This also checks edges that are not connected - i.e. do not touch."
|
||||
) +
|
||||
gsi::enum_const ("IncludeCollinearWhenTouch", db::IncludeCollinearWhenTouch,
|
||||
"@brief Specifies that check functions should include collinear edges when they touch\n"
|
||||
"With this specification, the check functions will also check edges which are collinear, but only if they share at least one point. "
|
||||
"This is the mode that allows checking the 'kissing corner' cases."
|
||||
"This is the mode that includes checking the 'kissing corner' cases."
|
||||
) +
|
||||
gsi::enum_const ("IncludeCollinearWhenOverlap", db::IncludeCollinearWhenOverlap,
|
||||
"@brief Specifies that check functions should include collinear edges when they overlap\n"
|
||||
"With this specification, the check functions will also check edges which are collinear, but only if they share more than a single point. "
|
||||
"This is the mode that allows checking the 'kissing corner' cases."
|
||||
"This is the mode that excludes the 'kissing corner' cases."
|
||||
),
|
||||
"@brief This class represents the collinear_mode type for \\Region#width and related checks.\n"
|
||||
"This mode determines how collinear edges are treated in the DRC checks. Formally these edges do neither represent "
|
||||
|
|
|
|||
|
|
@ -2894,7 +2894,45 @@ The following image shows the effect of the separation check (input1: red, input
|
|||
</tr>
|
||||
</table>
|
||||
</p><p>
|
||||
<h3>opposite and rectangle error filtering </h3>
|
||||
<h3>Touching shapes </h3>
|
||||
</p><p>
|
||||
Like <a href="#width">width</a> and <a href="#space">space</a>, the separation check also supports the "without_touching" option.
|
||||
</p><p>
|
||||
This option will turn off errors that arise due to
|
||||
collinear edges touching in one corner (the "kissing corners" configuration).
|
||||
By default, such edges will yield an error, as they
|
||||
form a zero-distance situation. With this option in place, no errors will be reported.
|
||||
</p><p>
|
||||
The following images illustrate the effect of the "without_touching" option.
|
||||
The white line at the top of the bottom red shape is actually an edge pair indicating
|
||||
the zero-distance violation of the separation check:
|
||||
</p><p>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="/images/drc_separation12.png"/></td>
|
||||
<td><img src="/images/drc_separation13.png"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</p><p>
|
||||
Another option is "without_coincident" which turns off errors that arise
|
||||
at coincident edges. Formally such edges represent a zero-distance situation, hence
|
||||
are flagged by default. Turning off the check in this case can be helpful when
|
||||
separating a layer into two parts (e.g. thin/wide metal separation) and an error
|
||||
between touching regions is not desired.
|
||||
</p><p>
|
||||
The "without_coincident" option is a stronger version of "without_touching" and
|
||||
makes sense only for two-layer checks.
|
||||
</p><p>
|
||||
The following images illustrate the effect of the "without_coincident" option:
|
||||
</p><p>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="/images/drc_separation12.png"/></td>
|
||||
<td><img src="/images/drc_separation14.png"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</p><p>
|
||||
<h3>Opposite and rectangle error filtering </h3>
|
||||
</p><p>
|
||||
The options for the separation check are those available for the <a href="#width">width</a> or <a href="#space">space</a>
|
||||
method plus opposite and rectangle error filtering.
|
||||
|
|
@ -3405,10 +3443,15 @@ each other is more or equal than min and less than max </li>
|
|||
but is more intuitive, as "projecting" is written with a condition, like
|
||||
"projecting < 2.um". Available operators are: "==", "<", "<=", ">" and ">=".
|
||||
Double-bounded ranges are also available, like: "0.5 <= projecting < 2.0". </li>
|
||||
<li><b>transparent </b>: performs the check without shielding (polygon layers only) </li>
|
||||
<li><b>shielded </b>: performs the check with shielding (polygon layers only) </li>
|
||||
<li><b>without_touching </b>: With this option present, touching corners (aka "kissing
|
||||
corners") will not yield errors. The default is to produce errors in these cases. </li>
|
||||
<li><b>without_coincident </b>: With this option present, coincident edges will not yield errors.
|
||||
This is a stronger version of "without_touching" and makes sense only for two-layer checks
|
||||
or raw-mode input layers. It is listed here for completeness. </li>
|
||||
<li><b>transparent </b>: Performs the check without shielding (polygon layers only) </li>
|
||||
<li><b>shielded </b>: Performs the check with shielding (polygon layers only) </li>
|
||||
<li><b>props_eq </b>, <b>props_ne </b>, <b>props_copy </b>: (only props_copy applies to width check) -
|
||||
see "Properties constraints" below. </li>
|
||||
See "Properties constraints" below. </li>
|
||||
</ul>
|
||||
</p><p>
|
||||
Note that without the angle_limit, acute corners will always be reported, since two
|
||||
|
|
@ -3509,6 +3552,22 @@ shape's properties to the output too:
|
|||
space_not_connected = metal1_nets.space(0.4.um, props_ne + props_copy)
|
||||
space_connected = metal1_nets.space(0.4.um, props_eq + props_copy)
|
||||
</pre>
|
||||
</p><p>
|
||||
<h3>Touching shapes </h3>
|
||||
</p><p>
|
||||
The "without_touching" option will turn off errors that arise due to
|
||||
the "kissing corner" configuration (or "checkerboard pattern"). Formally
|
||||
this is a width violation across the diagonal, but when considering this
|
||||
configuration as disconnected boxes, no error should be reported.
|
||||
</p><p>
|
||||
The following images illustrate the effect of the "without_touching" option:
|
||||
</p><p>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="/images/drc_width5.png"/></td>
|
||||
<td><img src="/images/drc_width6.png"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
<a name="with_angle"/><h2>"with_angle" - Selects edges by their angle</h2>
|
||||
<keyword name="with_angle"/>
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 5.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.3 KiB |
|
|
@ -4,6 +4,8 @@
|
|||
<file alias="drc_width2.png">doc/images/drc_width2.png</file>
|
||||
<file alias="drc_width3.png">doc/images/drc_width3.png</file>
|
||||
<file alias="drc_width4.png">doc/images/drc_width4.png</file>
|
||||
<file alias="drc_width5.png">doc/images/drc_width5.png</file>
|
||||
<file alias="drc_width6.png">doc/images/drc_width6.png</file>
|
||||
<file alias="drc_width1u.png">doc/images/drc_width1u.png</file>
|
||||
<file alias="drc_width2u.png">doc/images/drc_width2u.png</file>
|
||||
<file alias="drc_width3u.png">doc/images/drc_width3u.png</file>
|
||||
|
|
@ -29,6 +31,9 @@
|
|||
<file alias="drc_separation9.png">doc/images/drc_separation9.png</file>
|
||||
<file alias="drc_separation10.png">doc/images/drc_separation10.png</file>
|
||||
<file alias="drc_separation11.png">doc/images/drc_separation11.png</file>
|
||||
<file alias="drc_separation12.png">doc/images/drc_separation12.png</file>
|
||||
<file alias="drc_separation13.png">doc/images/drc_separation13.png</file>
|
||||
<file alias="drc_separation14.png">doc/images/drc_separation14.png</file>
|
||||
<file alias="drc_raw1.png">doc/images/drc_raw1.png</file>
|
||||
<file alias="drc_raw2.png">doc/images/drc_raw2.png</file>
|
||||
<file alias="drc_raw3.png">doc/images/drc_raw3.png</file>
|
||||
|
|
|
|||
|
|
@ -3941,7 +3941,9 @@ CODE
|
|||
# By default, such edges will yield an error, as they
|
||||
# form a zero-distance situation. With this option in place, no errors will be reported.
|
||||
#
|
||||
# The following images illustrate the effect of the "without_touching" option:
|
||||
# The following images illustrate the effect of the "without_touching" option.
|
||||
# The white line at the top of the bottom red shape is actually an edge pair indicating
|
||||
# the zero-distance violation of the separation check:
|
||||
#
|
||||
# @table
|
||||
# @tr
|
||||
|
|
@ -3963,8 +3965,8 @@ CODE
|
|||
#
|
||||
# @table
|
||||
# @tr
|
||||
# @td @img(/images/drc_separation12.png) @/td
|
||||
# @td @img(/images/drc_separation14.png) @/td
|
||||
# @td @img(/images/drc_separation15.png) @/td
|
||||
# @/tr
|
||||
# @/table
|
||||
#
|
||||
|
|
|
|||
Loading…
Reference in New Issue