diff --git a/scripts/create_drc_samples.rb b/scripts/create_drc_samples.rb
index b8ea6665a..fbf37b8b5 100644
--- a/scripts/create_drc_samples.rb
+++ b/scripts/create_drc_samples.rb
@@ -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
diff --git a/scripts/klayoutrc_drc_samples b/scripts/klayoutrc_drc_samples
index e00122048..4bdf2fb62 100644
--- a/scripts/klayoutrc_drc_samples
+++ b/scripts/klayoutrc_drc_samples
@@ -102,7 +102,7 @@
#404040
0.1
true
- lines
+ invisible
dots
tenths-dotted-lines
true
diff --git a/src/drc/drc/built-in-macros/_drc_engine.rb b/src/drc/drc/built-in-macros/_drc_engine.rb
index c575b7577..ed44c0a24 100644
--- a/src/drc/drc/built-in-macros/_drc_engine.rb
+++ b/src/drc/drc/built-in-macros/_drc_engine.rb
@@ -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
diff --git a/src/drc/drc/built-in-macros/_drc_layer.rb b/src/drc/drc/built-in-macros/_drc_layer.rb
index 161d9f897..1c1b4ba49 100644
--- a/src/drc/drc/built-in-macros/_drc_layer.rb
+++ b/src/drc/drc/built-in-macros/_drc_layer.rb
@@ -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
diff --git a/src/drc/drc/built-in-macros/_drc_tags.rb b/src/drc/drc/built-in-macros/_drc_tags.rb
index 4cbe21533..30f460f2f 100644
--- a/src/drc/drc/built-in-macros/_drc_tags.rb
+++ b/src/drc/drc/built-in-macros/_drc_tags.rb
@@ -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
diff --git a/src/lay/lay/doc/about/drc_ref_layer.xml b/src/lay/lay/doc/about/drc_ref_layer.xml
index fe5f8f27c..96e0a164f 100644
--- a/src/lay/lay/doc/about/drc_ref_layer.xml
+++ b/src/lay/lay/doc/about/drc_ref_layer.xml
@@ -2176,6 +2176,8 @@ make the check only consider edges enclosing angles of less than 45 degree. projection_limits(min, max) or projection_limits(min .. max) :
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
+
transparent : performs the check without shielding (polygon layers only)
+shielded : performs the check with shielding (polygon layers only)
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:
 |
+
+"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.
+
+Shielding is enabled by default, but can be switched off with the "transparent" option.
"with_angle" - Selects edges by their angle
diff --git a/src/lay/lay/doc/images/drc_and1.png b/src/lay/lay/doc/images/drc_and1.png
index a0c736476..8f480bfe7 100644
Binary files a/src/lay/lay/doc/images/drc_and1.png and b/src/lay/lay/doc/images/drc_and1.png differ
diff --git a/src/lay/lay/doc/images/drc_and2.png b/src/lay/lay/doc/images/drc_and2.png
index 8c99cc75e..5b8511d14 100644
Binary files a/src/lay/lay/doc/images/drc_and2.png and b/src/lay/lay/doc/images/drc_and2.png differ
diff --git a/src/lay/lay/doc/images/drc_and3.png b/src/lay/lay/doc/images/drc_and3.png
index 4078a55a3..607deea18 100644
Binary files a/src/lay/lay/doc/images/drc_and3.png and b/src/lay/lay/doc/images/drc_and3.png differ
diff --git a/src/lay/lay/doc/images/drc_centers1.png b/src/lay/lay/doc/images/drc_centers1.png
index 9f7318210..909553ab4 100644
Binary files a/src/lay/lay/doc/images/drc_centers1.png and b/src/lay/lay/doc/images/drc_centers1.png differ
diff --git a/src/lay/lay/doc/images/drc_centers2.png b/src/lay/lay/doc/images/drc_centers2.png
index 949971f74..69c7ecb7f 100644
Binary files a/src/lay/lay/doc/images/drc_centers2.png and b/src/lay/lay/doc/images/drc_centers2.png differ
diff --git a/src/lay/lay/doc/images/drc_corners1.png b/src/lay/lay/doc/images/drc_corners1.png
index f5782c1a6..d1557f3a2 100644
Binary files a/src/lay/lay/doc/images/drc_corners1.png and b/src/lay/lay/doc/images/drc_corners1.png differ
diff --git a/src/lay/lay/doc/images/drc_corners2.png b/src/lay/lay/doc/images/drc_corners2.png
index 36de46255..b595ea398 100644
Binary files a/src/lay/lay/doc/images/drc_corners2.png and b/src/lay/lay/doc/images/drc_corners2.png differ
diff --git a/src/lay/lay/doc/images/drc_corners3.png b/src/lay/lay/doc/images/drc_corners3.png
index f0224dba8..00b978bb3 100644
Binary files a/src/lay/lay/doc/images/drc_corners3.png and b/src/lay/lay/doc/images/drc_corners3.png differ
diff --git a/src/lay/lay/doc/images/drc_enc1.png b/src/lay/lay/doc/images/drc_enc1.png
index c0c25dc5f..2bef4ab3c 100644
Binary files a/src/lay/lay/doc/images/drc_enc1.png and b/src/lay/lay/doc/images/drc_enc1.png differ
diff --git a/src/lay/lay/doc/images/drc_enc2.png b/src/lay/lay/doc/images/drc_enc2.png
index 93c1b4c14..df854246d 100644
Binary files a/src/lay/lay/doc/images/drc_enc2.png and b/src/lay/lay/doc/images/drc_enc2.png differ
diff --git a/src/lay/lay/doc/images/drc_end_segments1.png b/src/lay/lay/doc/images/drc_end_segments1.png
index 0c2c424ae..71fbae69e 100644
Binary files a/src/lay/lay/doc/images/drc_end_segments1.png and b/src/lay/lay/doc/images/drc_end_segments1.png differ
diff --git a/src/lay/lay/doc/images/drc_end_segments2.png b/src/lay/lay/doc/images/drc_end_segments2.png
index cd56d40ec..63f6feee9 100644
Binary files a/src/lay/lay/doc/images/drc_end_segments2.png and b/src/lay/lay/doc/images/drc_end_segments2.png differ
diff --git a/src/lay/lay/doc/images/drc_extended1.png b/src/lay/lay/doc/images/drc_extended1.png
index 12db6370d..3ff0f23f4 100644
Binary files a/src/lay/lay/doc/images/drc_extended1.png and b/src/lay/lay/doc/images/drc_extended1.png differ
diff --git a/src/lay/lay/doc/images/drc_extended2.png b/src/lay/lay/doc/images/drc_extended2.png
index 90816d5f8..8860625aa 100644
Binary files a/src/lay/lay/doc/images/drc_extended2.png and b/src/lay/lay/doc/images/drc_extended2.png differ
diff --git a/src/lay/lay/doc/images/drc_extended3.png b/src/lay/lay/doc/images/drc_extended3.png
index 330ed208a..a585d84c2 100644
Binary files a/src/lay/lay/doc/images/drc_extended3.png and b/src/lay/lay/doc/images/drc_extended3.png differ
diff --git a/src/lay/lay/doc/images/drc_extended4.png b/src/lay/lay/doc/images/drc_extended4.png
index 8caea794f..47a09728b 100644
Binary files a/src/lay/lay/doc/images/drc_extended4.png and b/src/lay/lay/doc/images/drc_extended4.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs1.png b/src/lay/lay/doc/images/drc_extent_refs1.png
index c32c46129..d3c89b5f9 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs1.png and b/src/lay/lay/doc/images/drc_extent_refs1.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs10.png b/src/lay/lay/doc/images/drc_extent_refs10.png
index 2771cae38..fd1785e21 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs10.png and b/src/lay/lay/doc/images/drc_extent_refs10.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs11.png b/src/lay/lay/doc/images/drc_extent_refs11.png
index f1feb7337..ba28f7c6f 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs11.png and b/src/lay/lay/doc/images/drc_extent_refs11.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs12.png b/src/lay/lay/doc/images/drc_extent_refs12.png
index 1a9dae0b8..ee0848fe8 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs12.png and b/src/lay/lay/doc/images/drc_extent_refs12.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs13.png b/src/lay/lay/doc/images/drc_extent_refs13.png
index 4543ee821..90eb6e900 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs13.png and b/src/lay/lay/doc/images/drc_extent_refs13.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs20.png b/src/lay/lay/doc/images/drc_extent_refs20.png
index 4b3a2c2e3..c5c7384a8 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs20.png and b/src/lay/lay/doc/images/drc_extent_refs20.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs21.png b/src/lay/lay/doc/images/drc_extent_refs21.png
index cbb4fd30d..cd7ba9a21 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs21.png and b/src/lay/lay/doc/images/drc_extent_refs21.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs22.png b/src/lay/lay/doc/images/drc_extent_refs22.png
index 0def07a46..5864bfd3f 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs22.png and b/src/lay/lay/doc/images/drc_extent_refs22.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs23.png b/src/lay/lay/doc/images/drc_extent_refs23.png
index 4e44e294d..753dfadcf 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs23.png and b/src/lay/lay/doc/images/drc_extent_refs23.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs24.png b/src/lay/lay/doc/images/drc_extent_refs24.png
index 35b36f9ae..dada72737 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs24.png and b/src/lay/lay/doc/images/drc_extent_refs24.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs25.png b/src/lay/lay/doc/images/drc_extent_refs25.png
index b90e4bfcc..97a3e4ffe 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs25.png and b/src/lay/lay/doc/images/drc_extent_refs25.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs26.png b/src/lay/lay/doc/images/drc_extent_refs26.png
index c61984c21..a281ba6ad 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs26.png and b/src/lay/lay/doc/images/drc_extent_refs26.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs27.png b/src/lay/lay/doc/images/drc_extent_refs27.png
index eee91b62a..580ee7363 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs27.png and b/src/lay/lay/doc/images/drc_extent_refs27.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs30.png b/src/lay/lay/doc/images/drc_extent_refs30.png
index 1d76c687d..8971fe0f2 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs30.png and b/src/lay/lay/doc/images/drc_extent_refs30.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs31.png b/src/lay/lay/doc/images/drc_extent_refs31.png
index c490f81e5..0c1273866 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs31.png and b/src/lay/lay/doc/images/drc_extent_refs31.png differ
diff --git a/src/lay/lay/doc/images/drc_extents1.png b/src/lay/lay/doc/images/drc_extents1.png
index 5f9c37e02..494f98de6 100644
Binary files a/src/lay/lay/doc/images/drc_extents1.png and b/src/lay/lay/doc/images/drc_extents1.png differ
diff --git a/src/lay/lay/doc/images/drc_extents2.png b/src/lay/lay/doc/images/drc_extents2.png
index 29608ac31..849ef4b8f 100644
Binary files a/src/lay/lay/doc/images/drc_extents2.png and b/src/lay/lay/doc/images/drc_extents2.png differ
diff --git a/src/lay/lay/doc/images/drc_holes.png b/src/lay/lay/doc/images/drc_holes.png
index c56f83164..f8d0d5767 100644
Binary files a/src/lay/lay/doc/images/drc_holes.png and b/src/lay/lay/doc/images/drc_holes.png differ
diff --git a/src/lay/lay/doc/images/drc_hulls.png b/src/lay/lay/doc/images/drc_hulls.png
index e3f6fd16e..a86927915 100644
Binary files a/src/lay/lay/doc/images/drc_hulls.png and b/src/lay/lay/doc/images/drc_hulls.png differ
diff --git a/src/lay/lay/doc/images/drc_in.png b/src/lay/lay/doc/images/drc_in.png
index b3017edb3..d490a4a25 100644
Binary files a/src/lay/lay/doc/images/drc_in.png and b/src/lay/lay/doc/images/drc_in.png differ
diff --git a/src/lay/lay/doc/images/drc_inside.png b/src/lay/lay/doc/images/drc_inside.png
index 03cf210a6..61b9f0385 100644
Binary files a/src/lay/lay/doc/images/drc_inside.png and b/src/lay/lay/doc/images/drc_inside.png differ
diff --git a/src/lay/lay/doc/images/drc_inside_part.png b/src/lay/lay/doc/images/drc_inside_part.png
index 0d407c4dd..632836c75 100644
Binary files a/src/lay/lay/doc/images/drc_inside_part.png and b/src/lay/lay/doc/images/drc_inside_part.png differ
diff --git a/src/lay/lay/doc/images/drc_interacting.png b/src/lay/lay/doc/images/drc_interacting.png
index 9feceacdc..b0ca9711d 100644
Binary files a/src/lay/lay/doc/images/drc_interacting.png and b/src/lay/lay/doc/images/drc_interacting.png differ
diff --git a/src/lay/lay/doc/images/drc_join1.png b/src/lay/lay/doc/images/drc_join1.png
index 93422273d..b5acb1b0a 100644
Binary files a/src/lay/lay/doc/images/drc_join1.png and b/src/lay/lay/doc/images/drc_join1.png differ
diff --git a/src/lay/lay/doc/images/drc_join2.png b/src/lay/lay/doc/images/drc_join2.png
index b0dfc41d8..b3d66c286 100644
Binary files a/src/lay/lay/doc/images/drc_join2.png and b/src/lay/lay/doc/images/drc_join2.png differ
diff --git a/src/lay/lay/doc/images/drc_merged1.png b/src/lay/lay/doc/images/drc_merged1.png
index d6c2d3e6d..ff025981e 100644
Binary files a/src/lay/lay/doc/images/drc_merged1.png and b/src/lay/lay/doc/images/drc_merged1.png differ
diff --git a/src/lay/lay/doc/images/drc_merged2.png b/src/lay/lay/doc/images/drc_merged2.png
index c5aec6c9d..c66432764 100644
Binary files a/src/lay/lay/doc/images/drc_merged2.png and b/src/lay/lay/doc/images/drc_merged2.png differ
diff --git a/src/lay/lay/doc/images/drc_merged3.png b/src/lay/lay/doc/images/drc_merged3.png
index 12bc538b5..24d14f99c 100644
Binary files a/src/lay/lay/doc/images/drc_merged3.png and b/src/lay/lay/doc/images/drc_merged3.png differ
diff --git a/src/lay/lay/doc/images/drc_merged4.png b/src/lay/lay/doc/images/drc_merged4.png
index e744c80fe..f66a7a02c 100644
Binary files a/src/lay/lay/doc/images/drc_merged4.png and b/src/lay/lay/doc/images/drc_merged4.png differ
diff --git a/src/lay/lay/doc/images/drc_middle1.png b/src/lay/lay/doc/images/drc_middle1.png
index 335793134..109ee09ad 100644
Binary files a/src/lay/lay/doc/images/drc_middle1.png and b/src/lay/lay/doc/images/drc_middle1.png differ
diff --git a/src/lay/lay/doc/images/drc_moved1.png b/src/lay/lay/doc/images/drc_moved1.png
index 40319a781..9fbd96ea1 100644
Binary files a/src/lay/lay/doc/images/drc_moved1.png and b/src/lay/lay/doc/images/drc_moved1.png differ
diff --git a/src/lay/lay/doc/images/drc_not1.png b/src/lay/lay/doc/images/drc_not1.png
index dad0049f2..c44c4d55e 100644
Binary files a/src/lay/lay/doc/images/drc_not1.png and b/src/lay/lay/doc/images/drc_not1.png differ
diff --git a/src/lay/lay/doc/images/drc_not2.png b/src/lay/lay/doc/images/drc_not2.png
index e3f229224..2e4c3784f 100644
Binary files a/src/lay/lay/doc/images/drc_not2.png and b/src/lay/lay/doc/images/drc_not2.png differ
diff --git a/src/lay/lay/doc/images/drc_not3.png b/src/lay/lay/doc/images/drc_not3.png
index 4a4553a3d..3a51db056 100644
Binary files a/src/lay/lay/doc/images/drc_not3.png and b/src/lay/lay/doc/images/drc_not3.png differ
diff --git a/src/lay/lay/doc/images/drc_not_in.png b/src/lay/lay/doc/images/drc_not_in.png
index a2556074c..784aab798 100644
Binary files a/src/lay/lay/doc/images/drc_not_in.png and b/src/lay/lay/doc/images/drc_not_in.png differ
diff --git a/src/lay/lay/doc/images/drc_not_inside.png b/src/lay/lay/doc/images/drc_not_inside.png
index 48398c45a..16146f7aa 100644
Binary files a/src/lay/lay/doc/images/drc_not_inside.png and b/src/lay/lay/doc/images/drc_not_inside.png differ
diff --git a/src/lay/lay/doc/images/drc_not_interacting.png b/src/lay/lay/doc/images/drc_not_interacting.png
index 3455d262b..66f1d8478 100644
Binary files a/src/lay/lay/doc/images/drc_not_interacting.png and b/src/lay/lay/doc/images/drc_not_interacting.png differ
diff --git a/src/lay/lay/doc/images/drc_not_outside.png b/src/lay/lay/doc/images/drc_not_outside.png
index 738af1cb8..f2519219a 100644
Binary files a/src/lay/lay/doc/images/drc_not_outside.png and b/src/lay/lay/doc/images/drc_not_outside.png differ
diff --git a/src/lay/lay/doc/images/drc_not_overlapping.png b/src/lay/lay/doc/images/drc_not_overlapping.png
index 254bac8c6..9909a7f36 100644
Binary files a/src/lay/lay/doc/images/drc_not_overlapping.png and b/src/lay/lay/doc/images/drc_not_overlapping.png differ
diff --git a/src/lay/lay/doc/images/drc_or1.png b/src/lay/lay/doc/images/drc_or1.png
index a14ec27eb..7357a705c 100644
Binary files a/src/lay/lay/doc/images/drc_or1.png and b/src/lay/lay/doc/images/drc_or1.png differ
diff --git a/src/lay/lay/doc/images/drc_or2.png b/src/lay/lay/doc/images/drc_or2.png
index 76fa8b7e4..0aa51b9fa 100644
Binary files a/src/lay/lay/doc/images/drc_or2.png and b/src/lay/lay/doc/images/drc_or2.png differ
diff --git a/src/lay/lay/doc/images/drc_outside.png b/src/lay/lay/doc/images/drc_outside.png
index c12dfb826..0345e4258 100644
Binary files a/src/lay/lay/doc/images/drc_outside.png and b/src/lay/lay/doc/images/drc_outside.png differ
diff --git a/src/lay/lay/doc/images/drc_outside_part.png b/src/lay/lay/doc/images/drc_outside_part.png
index 8e3552e70..34cc504d2 100644
Binary files a/src/lay/lay/doc/images/drc_outside_part.png and b/src/lay/lay/doc/images/drc_outside_part.png differ
diff --git a/src/lay/lay/doc/images/drc_overlap1.png b/src/lay/lay/doc/images/drc_overlap1.png
index 8a3653124..f58070e79 100644
Binary files a/src/lay/lay/doc/images/drc_overlap1.png and b/src/lay/lay/doc/images/drc_overlap1.png differ
diff --git a/src/lay/lay/doc/images/drc_overlap2.png b/src/lay/lay/doc/images/drc_overlap2.png
index dbcea6cf9..4da4a00ab 100644
Binary files a/src/lay/lay/doc/images/drc_overlap2.png and b/src/lay/lay/doc/images/drc_overlap2.png differ
diff --git a/src/lay/lay/doc/images/drc_overlapping.png b/src/lay/lay/doc/images/drc_overlapping.png
index 33ebb1460..d3f803281 100644
Binary files a/src/lay/lay/doc/images/drc_overlapping.png and b/src/lay/lay/doc/images/drc_overlapping.png differ
diff --git a/src/lay/lay/doc/images/drc_raw1.png b/src/lay/lay/doc/images/drc_raw1.png
index 3fea7103b..81d56369b 100644
Binary files a/src/lay/lay/doc/images/drc_raw1.png and b/src/lay/lay/doc/images/drc_raw1.png differ
diff --git a/src/lay/lay/doc/images/drc_raw2.png b/src/lay/lay/doc/images/drc_raw2.png
index 3391b35e5..2803f371f 100644
Binary files a/src/lay/lay/doc/images/drc_raw2.png and b/src/lay/lay/doc/images/drc_raw2.png differ
diff --git a/src/lay/lay/doc/images/drc_raw3.png b/src/lay/lay/doc/images/drc_raw3.png
index f4146586e..f335740ad 100644
Binary files a/src/lay/lay/doc/images/drc_raw3.png and b/src/lay/lay/doc/images/drc_raw3.png differ
diff --git a/src/lay/lay/doc/images/drc_rotated1.png b/src/lay/lay/doc/images/drc_rotated1.png
index 40bff10aa..10f561f25 100644
Binary files a/src/lay/lay/doc/images/drc_rotated1.png and b/src/lay/lay/doc/images/drc_rotated1.png differ
diff --git a/src/lay/lay/doc/images/drc_rounded_corners.png b/src/lay/lay/doc/images/drc_rounded_corners.png
index c0c8e3228..49dfb4495 100644
Binary files a/src/lay/lay/doc/images/drc_rounded_corners.png and b/src/lay/lay/doc/images/drc_rounded_corners.png differ
diff --git a/src/lay/lay/doc/images/drc_scaled1.png b/src/lay/lay/doc/images/drc_scaled1.png
index e29d4ecbf..10595dfee 100644
Binary files a/src/lay/lay/doc/images/drc_scaled1.png and b/src/lay/lay/doc/images/drc_scaled1.png differ
diff --git a/src/lay/lay/doc/images/drc_separation1.png b/src/lay/lay/doc/images/drc_separation1.png
index 4b370a1da..1dfa0e9f3 100644
Binary files a/src/lay/lay/doc/images/drc_separation1.png and b/src/lay/lay/doc/images/drc_separation1.png differ
diff --git a/src/lay/lay/doc/images/drc_sized1.png b/src/lay/lay/doc/images/drc_sized1.png
index cfb54b87e..445a60538 100644
Binary files a/src/lay/lay/doc/images/drc_sized1.png and b/src/lay/lay/doc/images/drc_sized1.png differ
diff --git a/src/lay/lay/doc/images/drc_sized2.png b/src/lay/lay/doc/images/drc_sized2.png
index 6803ba021..db23995c6 100644
Binary files a/src/lay/lay/doc/images/drc_sized2.png and b/src/lay/lay/doc/images/drc_sized2.png differ
diff --git a/src/lay/lay/doc/images/drc_sized3.png b/src/lay/lay/doc/images/drc_sized3.png
index 090f30393..247bda8b2 100644
Binary files a/src/lay/lay/doc/images/drc_sized3.png and b/src/lay/lay/doc/images/drc_sized3.png differ
diff --git a/src/lay/lay/doc/images/drc_sized4.png b/src/lay/lay/doc/images/drc_sized4.png
index 35bb940f4..5e180f7d2 100644
Binary files a/src/lay/lay/doc/images/drc_sized4.png and b/src/lay/lay/doc/images/drc_sized4.png differ
diff --git a/src/lay/lay/doc/images/drc_sized5.png b/src/lay/lay/doc/images/drc_sized5.png
index 5efc64543..7caace4de 100644
Binary files a/src/lay/lay/doc/images/drc_sized5.png and b/src/lay/lay/doc/images/drc_sized5.png differ
diff --git a/src/lay/lay/doc/images/drc_sized6.png b/src/lay/lay/doc/images/drc_sized6.png
index 17cdf1f57..83677eef9 100644
Binary files a/src/lay/lay/doc/images/drc_sized6.png and b/src/lay/lay/doc/images/drc_sized6.png differ
diff --git a/src/lay/lay/doc/images/drc_space1.png b/src/lay/lay/doc/images/drc_space1.png
index 0665068bb..96caf65c2 100644
Binary files a/src/lay/lay/doc/images/drc_space1.png and b/src/lay/lay/doc/images/drc_space1.png differ
diff --git a/src/lay/lay/doc/images/drc_space2.png b/src/lay/lay/doc/images/drc_space2.png
index 65d1c9dc9..5b7b015c6 100644
Binary files a/src/lay/lay/doc/images/drc_space2.png and b/src/lay/lay/doc/images/drc_space2.png differ
diff --git a/src/lay/lay/doc/images/drc_space3.png b/src/lay/lay/doc/images/drc_space3.png
index 5ac751bc3..9273739f0 100644
Binary files a/src/lay/lay/doc/images/drc_space3.png and b/src/lay/lay/doc/images/drc_space3.png differ
diff --git a/src/lay/lay/doc/images/drc_start_segments1.png b/src/lay/lay/doc/images/drc_start_segments1.png
index 12ba8a091..377a6ac57 100644
Binary files a/src/lay/lay/doc/images/drc_start_segments1.png and b/src/lay/lay/doc/images/drc_start_segments1.png differ
diff --git a/src/lay/lay/doc/images/drc_start_segments2.png b/src/lay/lay/doc/images/drc_start_segments2.png
index 806eb05ef..ad269e32d 100644
Binary files a/src/lay/lay/doc/images/drc_start_segments2.png and b/src/lay/lay/doc/images/drc_start_segments2.png differ
diff --git a/src/lay/lay/doc/images/drc_textpoly1.png b/src/lay/lay/doc/images/drc_textpoly1.png
index 537997008..487cfcc9c 100644
Binary files a/src/lay/lay/doc/images/drc_textpoly1.png and b/src/lay/lay/doc/images/drc_textpoly1.png differ
diff --git a/src/lay/lay/doc/images/drc_textpoly2.png b/src/lay/lay/doc/images/drc_textpoly2.png
index 6294f9f6d..e6eec02b4 100644
Binary files a/src/lay/lay/doc/images/drc_textpoly2.png and b/src/lay/lay/doc/images/drc_textpoly2.png differ
diff --git a/src/lay/lay/doc/images/drc_texts1.png b/src/lay/lay/doc/images/drc_texts1.png
index af37d9f6f..a3c5eabf2 100644
Binary files a/src/lay/lay/doc/images/drc_texts1.png and b/src/lay/lay/doc/images/drc_texts1.png differ
diff --git a/src/lay/lay/doc/images/drc_texts2.png b/src/lay/lay/doc/images/drc_texts2.png
index 125fc17a7..2e672d4ce 100644
Binary files a/src/lay/lay/doc/images/drc_texts2.png and b/src/lay/lay/doc/images/drc_texts2.png differ
diff --git a/src/lay/lay/doc/images/drc_transformed1.png b/src/lay/lay/doc/images/drc_transformed1.png
index fd0ec2828..1c8f240f0 100644
Binary files a/src/lay/lay/doc/images/drc_transformed1.png and b/src/lay/lay/doc/images/drc_transformed1.png differ
diff --git a/src/lay/lay/doc/images/drc_width1.png b/src/lay/lay/doc/images/drc_width1.png
index 75cfa7f14..e603ea2ec 100644
Binary files a/src/lay/lay/doc/images/drc_width1.png and b/src/lay/lay/doc/images/drc_width1.png differ
diff --git a/src/lay/lay/doc/images/drc_width2.png b/src/lay/lay/doc/images/drc_width2.png
index 6708ebf7d..adbd23e3e 100644
Binary files a/src/lay/lay/doc/images/drc_width2.png and b/src/lay/lay/doc/images/drc_width2.png differ
diff --git a/src/lay/lay/doc/images/drc_width3.png b/src/lay/lay/doc/images/drc_width3.png
index 3848ce744..b6e4f245d 100644
Binary files a/src/lay/lay/doc/images/drc_width3.png and b/src/lay/lay/doc/images/drc_width3.png differ
diff --git a/src/lay/lay/doc/images/drc_width4.png b/src/lay/lay/doc/images/drc_width4.png
index 9b281830f..10024dbfd 100644
Binary files a/src/lay/lay/doc/images/drc_width4.png and b/src/lay/lay/doc/images/drc_width4.png differ
diff --git a/src/lay/lay/doc/images/drc_with_angle1.png b/src/lay/lay/doc/images/drc_with_angle1.png
index dadeb6727..77e234653 100644
Binary files a/src/lay/lay/doc/images/drc_with_angle1.png and b/src/lay/lay/doc/images/drc_with_angle1.png differ
diff --git a/src/lay/lay/doc/images/drc_with_angle2.png b/src/lay/lay/doc/images/drc_with_angle2.png
index fe3b022a8..c122a281b 100644
Binary files a/src/lay/lay/doc/images/drc_with_angle2.png and b/src/lay/lay/doc/images/drc_with_angle2.png differ
diff --git a/src/lay/lay/doc/images/drc_with_angle3.png b/src/lay/lay/doc/images/drc_with_angle3.png
index b3c8c978d..1e04a839b 100644
Binary files a/src/lay/lay/doc/images/drc_with_angle3.png and b/src/lay/lay/doc/images/drc_with_angle3.png differ
diff --git a/src/lay/lay/doc/images/drc_with_angle4.png b/src/lay/lay/doc/images/drc_with_angle4.png
index 30aa5e33d..2fc74b3c7 100644
Binary files a/src/lay/lay/doc/images/drc_with_angle4.png and b/src/lay/lay/doc/images/drc_with_angle4.png differ
diff --git a/src/lay/lay/doc/images/drc_xor1.png b/src/lay/lay/doc/images/drc_xor1.png
index 5ca89f97b..d33f65b84 100644
Binary files a/src/lay/lay/doc/images/drc_xor1.png and b/src/lay/lay/doc/images/drc_xor1.png differ
diff --git a/src/lay/lay/doc/images/drc_xor2.png b/src/lay/lay/doc/images/drc_xor2.png
index d67542b76..ec9da5c2b 100644
Binary files a/src/lay/lay/doc/images/drc_xor2.png and b/src/lay/lay/doc/images/drc_xor2.png differ
diff --git a/src/lay/lay/doc/manual/drc_runsets.xml b/src/lay/lay/doc/manual/drc_runsets.xml
index 4af5bbddd..3b2927d78 100644
--- a/src/lay/lay/doc/manual/drc_runsets.xml
+++ b/src/lay/lay/doc/manual/drc_runsets.xml
@@ -70,6 +70,7 @@
Including other files
+
The DRC script language is based on Ruby which delivers many native language
@@ -506,6 +507,8 @@ output(w, "width violations")
Polygon and edge layers
+
+
KLayout knows four layer types: polygon, edge, edge pair and text layers.
@@ -573,6 +576,7 @@ output(w, "width violations")
Text collections
+
Starting with version 0.27, KLayout offers support for text layers.
@@ -618,6 +622,8 @@ output(w, "width violations")
Edge pairs and edge pair collections
+
+
Edge pairs are objects consisting of two edges. Edge pairs are handy when discribing a DRC check violation,
@@ -641,6 +647,8 @@ output(w, "width violations")
Raw and clean layer mode
+
+
KLayout's DRC engine supports two basic ways to interpret geometrical information on a layer:
@@ -711,7 +719,56 @@ overlaps = layer.size(0.2).raw.merged(2)
+
Shielding
+
+
+
+ "Shielding" is a concept where DRC measurements do not "look through" layout features.
+ With shielding, a DRC violation is skipped when another feature would (fully) block
+ the violation marker's path. Shielding is available and enabled by default for the (internal or external)
+ distance-based DRC functions:
+ width,
+ space,
+ separation (sep),
+ notch,
+ isolated (iso),
+ enclosure (enc) or
+ overlap.
+ Shielding is turned off using the "transparent" option or turned on using "shielded". The latter
+ is only for clarity, but is not required as shielding is enabled by default.
+
+
+
+ The following examples demonstrate the effect of shielding: in the right example, shielding is turned off.
+ Hence, the violation between the upper box on the right and the lower bar is no longer shielded by the
+ small bar between them and this additional violation is reported too.
+
+
+
+
+  |
+  |
+
+
+
+
+ Although shielding feels more natural, it can have an adverse effect as it is effective at zero
+ distance already. In the following example, the second layer is a subset of the first. When
+ testing the distance between second and first, the overlapping first layer shapes will block
+ the separation measurement in shielded mode. Hence, only transparent mode will render the
+ actual distance violation. The bottom right blue box is not shielded by the overlaying red box:
+
+
+
+
+  |
+  |
+
+
+
+
Logging and verbosity
+
While the runset is executed, a log is written that lists the methods and their execution times.
@@ -752,6 +809,7 @@ overlaps = layer.size(0.2).raw.merged(2)
The tiling option
+
Tiling is a method to reduce the memory requirements for an operation. For big layouts, pulling a whole layer
@@ -831,6 +889,8 @@ no_borders
Hierarchical mode
+
+
Alternatively to the tiling option, hierarchical mode is available. In hierarchical
diff --git a/src/lay/lay/layDRCLVSHelpResources.qrc b/src/lay/lay/layDRCLVSHelpResources.qrc
index 39a37e95b..e6f2f319e 100644
--- a/src/lay/lay/layDRCLVSHelpResources.qrc
+++ b/src/lay/lay/layDRCLVSHelpResources.qrc
@@ -95,5 +95,9 @@
doc/images/drc_texts2.png
doc/images/drc_textpoly1.png
doc/images/drc_textpoly2.png
+ doc/images/drc_shielded1.png
+ doc/images/drc_shielded2.png
+ doc/images/drc_shielded3.png
+ doc/images/drc_shielded4.png