Updated DRC doc and enhanced generation of DRC doc somewhat (bigger images, no exaes etc.)

This commit is contained in:
Matthias Koefferlein 2020-09-16 23:45:26 +02:00
parent 3043418f8a
commit db9f43f576
103 changed files with 162 additions and 5 deletions

View File

@ -102,7 +102,7 @@ def run_demo(gen, cmd, out)
gen.produce(cell.shapes(l1), cell.shapes(l2))
view.zoom_box(RBA::DBox::new(-2.0, -1.0, 8.0, 9.0))
view.zoom_box(RBA::DBox::new(-2.0, -2.0, 8.0, 9.0))
view.max_hier
t = RBA::Text::new(cmd, -1500, 8500)
@ -144,7 +144,7 @@ SCRIPT
end
view.update_content
view.save_image(res_path + "/" + img_path + "/" + out, 400, 400)
view.save_image(res_path + "/" + img_path + "/" + out, 500, 500)
puts "---> written #{res_path}/#{img_path}/#{out}"
@ -709,5 +709,36 @@ run_demo gen, "labels & input2", "drc_textpoly1.png"
run_demo gen, "labels - input2", "drc_textpoly2.png"
class Gen
def produce(s1, s2)
s1.insert(RBA::Polygon::new(RBA::Box::new(0, 0, 6000, 2000)))
s2.insert(RBA::Polygon::new(RBA::Box::new(3500, 3000, 6000, 4000)))
s2.insert(RBA::Polygon::new(RBA::Box::new(0, 5000, 2500, 7000)))
s2.insert(RBA::Polygon::new(RBA::Box::new(3500, 5000, 6000, 7000)))
end
end
gen = Gen::new
run_demo gen, "input1.separation(input2, 3.5.um, projection, \n shielded)", "drc_shielded1.png"
run_demo gen, "input1.separation(input2, 3.5.um, projection, \n transparent)", "drc_shielded2.png"
class Gen
def produce(s1, s2)
s1.insert(RBA::Polygon::new(RBA::Box::new(0, 0, 2500, 2000)))
s1.insert(RBA::Polygon::new(RBA::Box::new(3500, 0, 6000, 2000)))
s2.insert(RBA::Polygon::new(RBA::Box::new(3500, 0, 6000, 2000)))
s2.insert(RBA::Polygon::new(RBA::Box::new(0, 5000, 2500, 7000)))
s2.insert(RBA::Polygon::new(RBA::Box::new(3500, 5000, 6000, 7000)))
end
end
gen = Gen::new
run_demo gen, "input1.separation(input2, 3.5.um, projection, \n shielded)", "drc_shielded3.png"
run_demo gen, "input1.separation(input2, 3.5.um, projection, \n transparent)", "drc_shielded4.png"
QRCGenerator::instance.finish

View File

@ -102,7 +102,7 @@
<grid-color>#404040</grid-color>
<grid-micron>0.1</grid-micron>
<grid-show-ruler>true</grid-show-ruler>
<grid-style0>lines</grid-style0>
<grid-style0>invisible</grid-style0>
<grid-style1>dots</grid-style1>
<grid-style2>tenths-dotted-lines</grid-style2>
<grid-visible>true</grid-visible>

View File

@ -83,6 +83,14 @@ module DRC
DRCSizingMode::new(4)
end
def shielded
DRCShielded::new(true)
end
def transparent
DRCShielded::new(false)
end
def projection_limits(*args)
DRCProjectionLimits::new(*args)
end

View File

@ -2471,6 +2471,8 @@ CODE
# @li @b projection_limits(min, max) or projection_limits(min .. max) @/b:
# this option makes the check only consider edge pairs whose projected length on
# each other is more or equal than min and less than max @/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
# @/ul
#
# Note that without the angle_limit, acute corners will always be reported, since two
@ -2508,6 +2510,18 @@ CODE
# @td @img(/images/drc_width4.png) @/td
# @/tr
# @/table
#
# "shielding" is a concept where an internal or external distance is measured only
# if the opposite edge is not blocked by other edges between. Shielded mode makes
# a difference if very large distances are to be checked and the minimum distance
# is much smaller: in this case, a large distance violation may be blocked by features
# located between the edges which are checked. With shielding, large distance violations
# are not reported in this case. Shielding is also effective at zero distance which has
# an adverse effect: Consider a case, where one layer A is a subset of another layer B. If
# you try to check the distance between features of B vs. A, you cannot use shielding,
# because B features which are identical to A features will shield those entirely.
#
# Shielding is enabled by default, but can be switched off with the "transparent" option.
# %DRC%
# @name space
@ -2685,6 +2699,7 @@ CODE
alim = nil
whole_edges = false
other = nil
shielded = nil
n = 1
args.each do |a|
@ -2699,6 +2714,8 @@ CODE
elsif a.is_a?(DRCProjectionLimits)
minp = @engine._prep_value(a.min)
maxp = @engine._prep_value(a.max)
elsif a.is_a?(DRCShielded)
shielded = a.value
elsif a.is_a?(Float) || a.is_a?(1.class)
value && raise("Value already specified")
value = @engine._prep_value(a)
@ -2711,6 +2728,15 @@ CODE
if !value
raise("#{f}: A check value must be specified")
end
args = [ value, whole_edges, metrics, alim, minp, maxp ]
if shielded != nil
if self.data.is_a?(RBA::Region)
args << shielded
else
raise("#{f}: shielding can only be used for polygon layers")
end
end
border = (metrics == RBA::Region::Square ? value * 1.5 : value)
@ -2718,13 +2744,13 @@ CODE
if other
raise("No other layer must be specified for single-layer checks (i.e. width)")
end
DRCLayer::new(@engine, @engine._tcmd(self.data, border, RBA::EdgePairs, :#{f}_check, value, whole_edges, metrics, alim, minp, maxp))
DRCLayer::new(@engine, @engine._tcmd(self.data, border, RBA::EdgePairs, :#{f}_check, *args))
else
if !other
raise("The other layer must be specified for two-layer checks (i.e. overlap)")
end
requires_same_type(other, "#{f}")
DRCLayer::new(@engine, @engine._tcmd(self.data, border, RBA::EdgePairs, :#{f}_check, other.data, value, whole_edges, metrics, alim, minp, maxp))
DRCLayer::new(@engine, @engine._tcmd(self.data, border, RBA::EdgePairs, :#{f}_check, other.data, *args))
end
end
@ -3177,6 +3203,10 @@ CODE
@data
end
def data=(d)
@data = d
end
def requires_region(f)
self.data.is_a?(RBA::Region) || raise("#{f}: Requires a polygon layer")
end

View File

@ -126,5 +126,15 @@ module DRC
end
end
# A wrapper for specifying shielded mode
class DRCShielded
def initialize(f)
@value = f
end
def value
@value
end
end
end

View File

@ -2176,6 +2176,8 @@ make the check only consider edges enclosing angles of less than 45 degree. </li
<li><b>projection_limits(min, max) or projection_limits(min .. max) </b>:
this option makes the check only consider edge pairs whose projected length on
each other is more or equal than min and less than max </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>
</ul>
</p><p>
Note that without the angle_limit, acute corners will always be reported, since two
@ -2213,6 +2215,18 @@ The following images show the effect of various forms of the width check:
<td><img src="/images/drc_width4.png"/></td>
</tr>
</table>
</p><p>
"shielding" is a concept where an internal or external distance is measured only
if the opposite edge is not blocked by other edges between. Shielded mode makes
a difference if very large distances are to be checked and the minimum distance
is much smaller: in this case, a large distance violation may be blocked by features
located between the edges which are checked. With shielding, large distance violations
are not reported in this case. Shielding is also effective at zero distance which has
an adverse effect: Consider a case, where one layer A is a subset of another layer B. If
you try to check the distance between features of B vs. A, you cannot use shielding,
because B features which are indentical to A features will shield those entirely.
</p><p>
Shielding is enabled by default, but can be switched off with the "transparent" option.
</p>
<a name="with_angle"/><h2>"with_angle" - Selects edges by their angle</h2>
<keyword name="with_angle"/>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Some files were not shown because too many files have changed in this diff Show More