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, square)", "drc_width3.png"
|
||||||
run_demo gen, "input.width(1.2, whole_edges)", "drc_width4.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
|
class Gen
|
||||||
def produce(s1, s2)
|
def produce(s1, s2)
|
||||||
pts = [
|
pts = [
|
||||||
|
|
@ -381,6 +412,45 @@ run_demo gen, "input1.sep(input2, 1.0, projection,\n" +
|
||||||
" one_side_allowed,\n" +
|
" one_side_allowed,\n" +
|
||||||
" two_opposite_sides_allowed)", "drc_separation11.png"
|
" 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
|
class Gen
|
||||||
|
|
|
||||||
|
|
@ -3270,17 +3270,18 @@ gsi::Enum<db::collinear_mode_type> decl_CollinearMode ("db", "CollinearMode",
|
||||||
) +
|
) +
|
||||||
gsi::enum_const ("AlwaysIncludeCollinear", db::AlwaysIncludeCollinear,
|
gsi::enum_const ("AlwaysIncludeCollinear", db::AlwaysIncludeCollinear,
|
||||||
"@brief Specifies that check functions should always include collinear edges\n"
|
"@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,
|
gsi::enum_const ("IncludeCollinearWhenTouch", db::IncludeCollinearWhenTouch,
|
||||||
"@brief Specifies that check functions should include collinear edges when they touch\n"
|
"@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. "
|
"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,
|
gsi::enum_const ("IncludeCollinearWhenOverlap", db::IncludeCollinearWhenOverlap,
|
||||||
"@brief Specifies that check functions should include collinear edges when they overlap\n"
|
"@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. "
|
"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"
|
"@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 "
|
"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>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</p><p>
|
</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>
|
</p><p>
|
||||||
The options for the separation check are those available for the <a href="#width">width</a> or <a href="#space">space</a>
|
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.
|
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
|
but is more intuitive, as "projecting" is written with a condition, like
|
||||||
"projecting < 2.um". Available operators are: "==", "<", "<=", ">" and ">=".
|
"projecting < 2.um". Available operators are: "==", "<", "<=", ">" and ">=".
|
||||||
Double-bounded ranges are also available, like: "0.5 <= projecting < 2.0". </li>
|
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>without_touching </b>: With this option present, touching corners (aka "kissing
|
||||||
<li><b>shielded </b>: performs the check with shielding (polygon layers only) </li>
|
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) -
|
<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>
|
</ul>
|
||||||
</p><p>
|
</p><p>
|
||||||
Note that without the angle_limit, acute corners will always be reported, since two
|
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_not_connected = metal1_nets.space(0.4.um, props_ne + props_copy)
|
||||||
space_connected = metal1_nets.space(0.4.um, props_eq + props_copy)
|
space_connected = metal1_nets.space(0.4.um, props_eq + props_copy)
|
||||||
</pre>
|
</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>
|
</p>
|
||||||
<a name="with_angle"/><h2>"with_angle" - Selects edges by their angle</h2>
|
<a name="with_angle"/><h2>"with_angle" - Selects edges by their angle</h2>
|
||||||
<keyword name="with_angle"/>
|
<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_width2.png">doc/images/drc_width2.png</file>
|
||||||
<file alias="drc_width3.png">doc/images/drc_width3.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_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_width1u.png">doc/images/drc_width1u.png</file>
|
||||||
<file alias="drc_width2u.png">doc/images/drc_width2u.png</file>
|
<file alias="drc_width2u.png">doc/images/drc_width2u.png</file>
|
||||||
<file alias="drc_width3u.png">doc/images/drc_width3u.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_separation9.png">doc/images/drc_separation9.png</file>
|
||||||
<file alias="drc_separation10.png">doc/images/drc_separation10.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_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_raw1.png">doc/images/drc_raw1.png</file>
|
||||||
<file alias="drc_raw2.png">doc/images/drc_raw2.png</file>
|
<file alias="drc_raw2.png">doc/images/drc_raw2.png</file>
|
||||||
<file alias="drc_raw3.png">doc/images/drc_raw3.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
|
# 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.
|
# 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
|
# @table
|
||||||
# @tr
|
# @tr
|
||||||
|
|
@ -3963,8 +3965,8 @@ CODE
|
||||||
#
|
#
|
||||||
# @table
|
# @table
|
||||||
# @tr
|
# @tr
|
||||||
|
# @td @img(/images/drc_separation12.png) @/td
|
||||||
# @td @img(/images/drc_separation14.png) @/td
|
# @td @img(/images/drc_separation14.png) @/td
|
||||||
# @td @img(/images/drc_separation15.png) @/td
|
|
||||||
# @/tr
|
# @/tr
|
||||||
# @/table
|
# @/table
|
||||||
#
|
#
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue