Date: Tue, 2 Jul 2024 21:10:11 +0200
Subject: [PATCH] Stepwise sizing: had to rename options
"inside" and "outside" was already taken. Now it is called
"size_inside" and "size_outside".
---
scripts/drc_lvs_doc/create_drc_samples.rb | 8 ++---
src/doc/doc/about/drc_ref_layer.xml | 34 ++++++++++-----------
src/doc/doc/about/drc_ref_netter.xml | 8 +++++
src/doc/doc/images/drc_sized_inside1.png | Bin 6696 -> 6736 bytes
src/doc/doc/images/drc_sized_inside2.png | Bin 6900 -> 6942 bytes
src/doc/doc/images/drc_sized_inside3.png | Bin 7080 -> 7124 bytes
src/doc/doc/images/drc_sized_inside4.png | Bin 6697 -> 6740 bytes
src/drc/drc/built-in-macros/_drc_engine.rb | 4 +--
src/drc/drc/built-in-macros/_drc_layer.rb | 34 ++++++++++-----------
testdata/drc/drcSimpleTests_130.drc | 20 ++++++------
10 files changed, 58 insertions(+), 50 deletions(-)
diff --git a/scripts/drc_lvs_doc/create_drc_samples.rb b/scripts/drc_lvs_doc/create_drc_samples.rb
index 5a9c1c332..18450e1df 100644
--- a/scripts/drc_lvs_doc/create_drc_samples.rb
+++ b/scripts/drc_lvs_doc/create_drc_samples.rb
@@ -939,10 +939,10 @@ def produce(s1, s2)
gen = Gen::new
-run_demo gen, "input1.sized(1.um, steps(1), inside(input2))", "drc_sized_inside1.png"
-run_demo gen, "input1.sized(2.um, steps(2), inside(input2))", "drc_sized_inside2.png"
-run_demo gen, "input1.sized(3.um, steps(3), inside(input2))", "drc_sized_inside3.png"
-run_demo gen, "input1.sized(10.um, steps(10), inside(input2))", "drc_sized_inside4.png"
+run_demo gen, "input1.sized(1.um, steps(1), size_inside(input2))", "drc_sized_inside1.png"
+run_demo gen, "input1.sized(2.um, steps(2), size_inside(input2))", "drc_sized_inside2.png"
+run_demo gen, "input1.sized(3.um, steps(3), size_inside(input2))", "drc_sized_inside3.png"
+run_demo gen, "input1.sized(10.um, steps(10), size_inside(input2))", "drc_sized_inside4.png"
class Gen
def produce(s1, s2)
diff --git a/src/doc/doc/about/drc_ref_layer.xml b/src/doc/doc/about/drc_ref_layer.xml
index 1ebe933d4..4a3f99e18 100644
--- a/src/doc/doc/about/drc_ref_layer.xml
+++ b/src/doc/doc/about/drc_ref_layer.xml
@@ -3056,11 +3056,11 @@ The following images shows the effect of some rectangle filter modes:
Usage:
- layer.size(d [, mode])
-- layer.size(d, inside(l) [, steps(n)] [, mode])
-- layer.size(d, outside(l) [, steps(n)] [, mode])
+- layer.size(d, size_inside(l) [, steps(n)] [, mode])
+- layer.size(d, size_outside(l) [, steps(n)] [, mode])
- layer.size(dx, dy [, mode])
-- layer.size(dx, dy, inside(l) [, steps(n)] [, mode])
-- layer.size(dx, dy, outside(l) [, steps(n)] [, mode])
+- layer.size(dx, dy, size_inside(l) [, steps(n)] [, mode])
+- layer.size(dx, dy, size_outside(l) [, steps(n)] [, mode])
See sized for a description of the options.
@@ -3071,12 +3071,12 @@ it is called on. The input layer is returned and available for further processin
Usage:
-- layer.sized(d [, mode] [, inside(l) [, steps(n)]])
-- layer.sized(d, inside(l) [, steps(n)] [, mode])
-- layer.sized(d, outside(l) [, steps(n)] [, mode])
+- layer.sized(d [, mode] [, size_inside(l) [, steps(n)]])
+- layer.sized(d, size_inside(l) [, steps(n)] [, mode])
+- layer.sized(d, size_outside(l) [, steps(n)] [, mode])
- layer.sized(dx, dy [, mode])
-- layer.sized(dx, dy, inside(l) [, steps(n)] [, mode])
-- layer.sized(dx, dy, outside(l) [, steps(n)] [, mode])
+- layer.sized(dx, dy, size_inside(l) [, steps(n)] [, mode])
+- layer.sized(dx, dy, size_outside(l) [, steps(n)] [, mode])
This method requires a polygon layer. It will apply a bias per edge of the polygons
@@ -3128,32 +3128,32 @@ The following images show the effect of various forms of the "sized" method:
-The "inside" option and the "steps" option implement incremental size. Incremental
+The "size_inside" option and the "steps" option implement incremental size. Incremental
size means that the sizing value is applied in n steps. Between the steps, the sized
-shape is confined to the "inside" layer by means of a boolean "AND" operation.
+shape is confined to the "size_inside" layer by means of a boolean "AND" operation.
This scheme is used to implement latch-up rules where a device active region has to
-be close to a well tap. By using the well layer as the "inside" layer, the size function
+be close to a well tap. By using the well layer as the "size_inside" layer, the size function
follows the well contours. The steps have to selected such that the per-step size value
is smaller than the minimum space of the well shapes. With that, the sized shapes will
not cross over to neighbor well regions. Specifically, the per-step size has to be less
than about 70% of the minimum space to account for the minimum corner-to-corner case
with Euclidian space measurements.
-"inside" and "steps" can be used with positive sizing values only.
+"size_inside" and "steps" can be used with positive sizing values only.
A steps value of 0 will not execute any sizing at all.
-"outside" acts like "inside", but instead of confining the sized region to the
+"size_outside" acts like "size_inside", but instead of confining the sized region to the
inside of the given layer, it is confined to be outside of that layer. Technically,
a boolean "NOT" is performed instead of a boolean "AND".
-An example for the "inside" option is this:
+An example for the "size_inside" option is this:
-ntap.sized(30.um, inside(nwell), steps(100))
+ntap.sized(30.um, size_inside(nwell), steps(100))