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