From 111b49f0ef5a8bd79914a7bc7de42804baf7aa42 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Fri, 15 Jan 2021 19:01:32 +0100 Subject: [PATCH] Updated DRC documentation --- scripts/create_drc_samples.rb | 25 ++++++++++++++++++ .../built-in-macros/_drc_cop_integration.rb | 21 ++++++++++++++- src/drc/drc/built-in-macros/_drc_layer.rb | 15 +++++++++++ src/lay/lay/doc/about/drc_ref_global.xml | 20 +++++++++++++- src/lay/lay/doc/about/drc_ref_layer.xml | 15 +++++++++++ src/lay/lay/doc/images/drc_width1u.png | Bin 0 -> 7113 bytes src/lay/lay/doc/images/drc_width2u.png | Bin 0 -> 6809 bytes src/lay/lay/doc/images/drc_width3u.png | Bin 0 -> 6381 bytes src/lay/lay/doc/images/drc_width4u.png | Bin 0 -> 6683 bytes src/lay/lay/doc/images/drc_width5u.png | Bin 0 -> 6869 bytes src/lay/lay/doc/images/drc_width6u.png | Bin 0 -> 7031 bytes src/lay/lay/layDRCLVSHelpResources.qrc | 6 +++++ 12 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 src/lay/lay/doc/images/drc_width1u.png create mode 100644 src/lay/lay/doc/images/drc_width2u.png create mode 100644 src/lay/lay/doc/images/drc_width3u.png create mode 100644 src/lay/lay/doc/images/drc_width4u.png create mode 100644 src/lay/lay/doc/images/drc_width5u.png create mode 100644 src/lay/lay/doc/images/drc_width6u.png diff --git a/scripts/create_drc_samples.rb b/scripts/create_drc_samples.rb index 0306bda9f..4eac57da5 100644 --- a/scripts/create_drc_samples.rb +++ b/scripts/create_drc_samples.rb @@ -177,6 +177,31 @@ run_demo gen, "input.width(1.2, projection)", "drc_width2.png" run_demo gen, "input.width(1.2, square)", "drc_width3.png" run_demo gen, "input.width(1.2, whole_edges)", "drc_width4.png" +class Gen + def produce(s1, s2) + pts = [ + RBA::Point::new(0, 0), + RBA::Point::new(3000, 0), + RBA::Point::new(3000, 4000), + RBA::Point::new(5000, 4000), + RBA::Point::new(5000, 7000), + RBA::Point::new(2000, 7000), + RBA::Point::new(2000, 2000), + RBA::Point::new(0, 2000) + ]; + s1.insert(RBA::Polygon::new(pts)) + end +end + +gen = Gen::new + +run_demo gen, "input.drc(width < 2.0)", "drc_width1u.png" +run_demo gen, "input.drc(width(projection) < 2.0)", "drc_width2u.png" +run_demo gen, "input.drc(width(projection) > 2.0)", "drc_width3u.png" +run_demo gen, "input.drc(width(projection) == 2.0)", "drc_width4u.png" +run_demo gen, "input.drc(width(projection) != 2.0)", "drc_width5u.png" +run_demo gen, "input.drc(1.0 < width(projection) <= 3.0)", "drc_width6u.png" + class Gen def produce(s1, s2) pts = [ diff --git a/src/drc/drc/built-in-macros/_drc_cop_integration.rb b/src/drc/drc/built-in-macros/_drc_cop_integration.rb index 8e0fa287f..9e3a3fe2f 100644 --- a/src/drc/drc/built-in-macros/_drc_cop_integration.rb +++ b/src/drc/drc/built-in-macros/_drc_cop_integration.rb @@ -1048,11 +1048,30 @@ CODE # out = in.drc(0.1.um <= width < 0.2.um) # @/code # - # With a lower and upper limit, the results are edges marking the positions on the + # @table + # @tr + # @td @img(/images/drc_width1u.png) @/td + # @td @img(/images/drc_width2u.png) @/td + # @/tr + # @/table + # + # With a lower and upper limit or with the "equal" condition, the results are edges marking the positions on the # primary shape where the condition is met. # With a lower limit alone, these markers are formed by two, identical but opposite edges attached to # the primary shape. Without an upper limit only, both edges are attached to different sides of the primary # shape. + # + # @table + # @tr + # @td @img(/images/drc_width3u.png) @/td + # @td @img(/images/drc_width4u.png) @/td + # @/tr + # @tr + # @td @img(/images/drc_width5u.png) @/td + # @td @img(/images/drc_width6u.png) @/td + # @/tr + # @/table + # # %DRC% # @name space diff --git a/src/drc/drc/built-in-macros/_drc_layer.rb b/src/drc/drc/built-in-macros/_drc_layer.rb index fb83a5830..6b083d325 100644 --- a/src/drc/drc/built-in-macros/_drc_layer.rb +++ b/src/drc/drc/built-in-macros/_drc_layer.rb @@ -2983,6 +2983,8 @@ CODE # On polygon layers, the polygons on each layer are checked for locations where their # width is less than the specified value. In that case, an edge pair error shape is generated. # + # @h3 Options @/h3 + # # The options available are: # # @ul @@ -3029,6 +3031,8 @@ CODE # markers = in.width(20.nm) # @/code # + # @h3 Examples @/h3 + # # The following images show the effect of various forms of the width check: # # @table @@ -3042,6 +3046,17 @@ CODE # @/tr # @/table # + # @h3 Universal DRC function @/h3 + # + # There is an alternative notation for the check using the "universal DRC" function ("\Layer#drc"). + # This notation is more intuitive and allows checking for widths bigger than a certain value + # or within a certain range. + # + # Apart from that it provides the same options than the plain width check. + # Follow this link for the documentation of this feature: \global#width. + # + # @h3 Shielding @/h3 + # # "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 diff --git a/src/lay/lay/doc/about/drc_ref_global.xml b/src/lay/lay/doc/about/drc_ref_global.xml index 06053c151..56a9ebb8c 100644 --- a/src/lay/lay/doc/about/drc_ref_global.xml +++ b/src/lay/lay/doc/about/drc_ref_global.xml @@ -1591,11 +1591,29 @@ out = in.drc(width != 0.2.um) out = in.drc(0.1.um <= width < 0.2.um)

-With a lower and upper limit, the results are edges marking the positions on the + + + + + +
+

+With a lower and upper limit or with the "equal" condition, the results are edges marking the positions on the primary shape where the condition is met. With a lower limit alone, these markers are formed by two, identical but opposite edges attached to the primary shape. Without an upper limit only, both edges are attached to different sides of the primary shape. +

+ + + + + + + + + +

"write_spice" - Defines SPICE output format (with options)

diff --git a/src/lay/lay/doc/about/drc_ref_layer.xml b/src/lay/lay/doc/about/drc_ref_layer.xml index 4a914024a..16206d347 100644 --- a/src/lay/lay/doc/about/drc_ref_layer.xml +++ b/src/lay/lay/doc/about/drc_ref_layer.xml @@ -2804,6 +2804,8 @@ value, an error shape is generated for that edge pair. On polygon layers, the polygons on each layer are checked for locations where their width is less than the specified value. In that case, an edge pair error shape is generated.

+

Options

+

The options available are: