From 94e7f0dbd3778065c750f5ac0875d697982eddd6 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Tue, 25 May 2021 23:30:43 +0200 Subject: [PATCH] Updated test data, fixed DRC/LVS doc. --- src/drc/drc/built-in-macros/_drc_layer.rb | 19 ++++++++++--------- src/drc/drc/built-in-macros/_drc_netter.rb | 19 +++++++++++++++++++ testdata/lvs/double_height2.lvsdb | 2 +- testdata/lvs/double_height2_texts.lvsdb | 2 +- testdata/lvs/floating.lvsdb | 4 ++-- 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/drc/drc/built-in-macros/_drc_layer.rb b/src/drc/drc/built-in-macros/_drc_layer.rb index 5b92d538d..646dc91cc 100644 --- a/src/drc/drc/built-in-macros/_drc_layer.rb +++ b/src/drc/drc/built-in-macros/_drc_layer.rb @@ -1335,7 +1335,7 @@ CODE # %DRC% # @name collect_to_region # @brief Transforms a layer into polygon objects - # @synopsis layer.collect { |object| ... } + # @synopsis layer.collect_to_region { |object| ... } # This method is similar to \collect, but creates a polygon layer. It expects the block to # deliver objects that can be converted into polygons. Such objects are of class RBA::DPolygon, # RBA::DBox, RBA::DPath, RBA::Polygon, RBA::Path, RBA::Box and RBA::Region. @@ -1343,7 +1343,7 @@ CODE # %DRC% # @name collect_to_edges # @brief Transforms a layer into edge objects - # @synopsis layer.collect { |object| ... } + # @synopsis layer.collect_to_edges { |object| ... } # This method is similar to \collect, but creates an edge layer. It expects the block to # deliver objects that can be converted into edges. If polygon-like objects are returned, their # contours will be turned into edge sequences. @@ -1351,7 +1351,7 @@ CODE # %DRC% # @name collect_to_edge_pairs # @brief Transforms a layer into edge pair objects - # @synopsis layer.collect { |object| ... } + # @synopsis layer.collect_to_edge_pairs { |object| ... } # This method is similar to \collect, but creates an edge pair layer. It expects the block to # deliver RBA::EdgePair, RBA::DEdgePair or RBA::EdgePairs objects. @@ -3347,15 +3347,15 @@ CODE # %DRC% # @name isolated - # @brief An isolation check + # @brief An inter-polygon isolation check # @synopsis layer.isolated(value [, options]) # @synopsis layer.iso(value [, options]) # # @b Note: @/b "isolated" and "iso" are available as operators for the "universal DRC" function \Layer#drc within # the \DRC framework. These variants have more options and are more intuitive to use. See \global#isolated for more details. # - # See \space for a description of this method. - # In contrast to \space, this + # See \space for a description of this method. "isolated" is the space check variant which checks different polygons only. + # In contrast to \space, the "isolated" # method is available for polygon layers only, since only on such layers # different polygons can be identified. # @@ -3371,14 +3371,15 @@ CODE # %DRC% # @name notch - # @brief An intra-region spacing check + # @brief An intra-polygon spacing check # @synopsis layer.notch(value [, options]) # # @b Note: @/b "notch" is available as an operator for the "universal DRC" function \Layer#drc within # the \DRC framework. This variant has more options and is more intuitive to use. See \global#notch for more details. # - # See \space for a description of this method. - # In contrast to \space, this + # See \space for a description of this method. + # "notch" is the space check variant which finds space violations within a single polygon, but not against other polygons. + # In contrast to \space, the "notch" # method is available for polygon layers only, since only on such layers # different polygons can be identified. Also, opposite and rectangle error # filtering is not available for this method. diff --git a/src/drc/drc/built-in-macros/_drc_netter.rb b/src/drc/drc/built-in-macros/_drc_netter.rb index 5664485b1..978e6c723 100644 --- a/src/drc/drc/built-in-macros/_drc_netter.rb +++ b/src/drc/drc/built-in-macros/_drc_netter.rb @@ -385,6 +385,25 @@ module DRC # errors = antenna_check(gate, metal1, 50.0) # @/code # + # Usually antenna checks apply to multiple metal layers. In this case, + # the connectivity needs to be extended after the first check to include + # the next metal layers. This can be achieved with incremental connects: + # + # @code + # # provide connections up to metal1 + # connect(gate, poly) + # connect(poly, contact) + # connect(contact, metal1) + # metal1_errors = antenna_check(gate, metal1, 50.0) + # + # # now *add* connections up to metal2 + # connect(metal1, via1) + # connect(via1, metal2) + # metal2_errors = antenna_check(gate, metal2, 50.0) + # + # ... continue this scheme with further metal layers ... + # @/code + # # Plasma induced damage can be rectified by including diodes # which create a safe current path for discharging the metal # islands. Such diodes can be identified with a recognition layer diff --git a/testdata/lvs/double_height2.lvsdb b/testdata/lvs/double_height2.lvsdb index b75ed63bc..6922163e3 100644 --- a/testdata/lvs/double_height2.lvsdb +++ b/testdata/lvs/double_height2.lvsdb @@ -5,7 +5,7 @@ J( L(l3 '3/0') L(l11 '3/1') L(l6 '4/0') - L(l7 '2/0') + L(l7) L(l8 '6/0') L(l12 '6/1') L(l9 '7/0') diff --git a/testdata/lvs/double_height2_texts.lvsdb b/testdata/lvs/double_height2_texts.lvsdb index d62e4e90c..4aab34e12 100644 --- a/testdata/lvs/double_height2_texts.lvsdb +++ b/testdata/lvs/double_height2_texts.lvsdb @@ -5,7 +5,7 @@ J( L(l3 '3/0') L(l11 '3/1') L(l6 '4/0') - L(l7 '2/0') + L(l7) L(l8 '6/0') L(l12 '6/1') L(l9 '7/0') diff --git a/testdata/lvs/floating.lvsdb b/testdata/lvs/floating.lvsdb index e57702118..29042b22a 100644 --- a/testdata/lvs/floating.lvsdb +++ b/testdata/lvs/floating.lvsdb @@ -13,8 +13,8 @@ layout( layer(l4 '5/0') layer(l8 '8/0') layer(l11 '9/0') - layer(l12 '5/0') - layer(l13 '5/0') + layer(l12) + layer(l13) layer(l7) layer(l2) layer(l9)