From 7e1d3b2465172f59ca75f9f0311c63791d2408a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Sat, 2 Feb 2019 23:57:34 +0100 Subject: [PATCH] Updated 2018 12 31 (markdown) --- 2018-12-31.md | 59 +++++++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/2018-12-31.md b/2018-12-31.md index 3f2f483..e54cb97 100644 --- a/2018-12-31.md +++ b/2018-12-31.md @@ -29,18 +29,21 @@ l2n = RBA::LayoutToNetlist::new(RBA::RecursiveShapeIterator::new(ly, ly.top_cell # only plain connectivity -ractive = l2n.make_layer( ly.layer(2, 0) ) -rpoly = l2n.make_polygon_layer( ly.layer(3, 0) ) -rpoly_lbl = l2n.make_text_layer( ly.layer(3, 1) ) -rdiff_cont = l2n.make_polygon_layer( ly.layer(4, 0) ) -rpoly_cont = l2n.make_polygon_layer( ly.layer(5, 0) ) -rmetal1 = l2n.make_polygon_layer( ly.layer(6, 0) ) -rmetal1_lbl = l2n.make_text_layer( ly.layer(6, 1) ) -rvia1 = l2n.make_polygon_layer( ly.layer(7, 0) ) -rmetal2 = l2n.make_polygon_layer( ly.layer(8, 0) ) -rmetal2_lbl = l2n.make_text_layer( ly.layer(8, 1) ) +ractive = l2n.make_layer( ly.layer(2, 0), "active" ) +rpoly = l2n.make_polygon_layer( ly.layer(3, 0), "poly" ) +rpoly_lbl = l2n.make_text_layer( ly.layer(3, 1), "poly_lbl" ) +rdiff_cont = l2n.make_polygon_layer( ly.layer(4, 0), "diff_cont" ) +rpoly_cont = l2n.make_polygon_layer( ly.layer(5, 0), "poly_cont" ) +rmetal1 = l2n.make_polygon_layer( ly.layer(6, 0), "metal1" ) +rmetal1_lbl = l2n.make_text_layer( ly.layer(6, 1), "metal1_lbl" ) +rvia1 = l2n.make_polygon_layer( ly.layer(7, 0), "via1" ) +rmetal2 = l2n.make_polygon_layer( ly.layer(8, 0), "metal2" ) +rmetal2_lbl = l2n.make_text_layer( ly.layer(8, 1), "metal2_lbl" ) +# compute the source/drain shapes and register +# the layer (this will make it persisted) rsd = ractive - rpoly +l2n.register(rsd, "sd") # Intra-layer l2n.connect(rsd) @@ -98,25 +101,31 @@ ly.read("testdata/algo/device_extract_l1.gds") l2n = RBA::LayoutToNetlist::new(RBA::RecursiveShapeIterator::new(ly, ly.top_cell, [])) -rnwell = l2n.make_layer( ly.layer(1, 0) ) -ractive = l2n.make_layer( ly.layer(2, 0) ) -rpoly = l2n.make_polygon_layer( ly.layer(3, 0) ) -rpoly_lbl = l2n.make_text_layer( ly.layer(3, 1) ) -rdiff_cont = l2n.make_polygon_layer( ly.layer(4, 0) ) -rpoly_cont = l2n.make_polygon_layer( ly.layer(5, 0) ) -rmetal1 = l2n.make_polygon_layer( ly.layer(6, 0) ) -rmetal1_lbl = l2n.make_text_layer( ly.layer(6, 1) ) -rvia1 = l2n.make_polygon_layer( ly.layer(7, 0) ) -rmetal2 = l2n.make_polygon_layer( ly.layer(8, 0) ) -rmetal2_lbl = l2n.make_text_layer( ly.layer(8, 1) ) +rnwell = l2n.make_layer( ly.layer(1, 0), "nwell" ) +ractive = l2n.make_layer( ly.layer(2, 0), "active" ) +rpoly = l2n.make_polygon_layer( ly.layer(3, 0), "poly" ) +rpoly_lbl = l2n.make_text_layer( ly.layer(3, 1), "poly_lbl" ) +rdiff_cont = l2n.make_polygon_layer( ly.layer(4, 0), "diff_cont" ) +rpoly_cont = l2n.make_polygon_layer( ly.layer(5, 0), "poly_cont" ) +rmetal1 = l2n.make_polygon_layer( ly.layer(6, 0), "metal1" ) +rmetal1_lbl = l2n.make_text_layer( ly.layer(6, 1), "metal1_lbl" ) +rvia1 = l2n.make_polygon_layer( ly.layer(7, 0), "via1" ) +rmetal2 = l2n.make_polygon_layer( ly.layer(8, 0), "metal2" ) +rmetal2_lbl = l2n.make_text_layer( ly.layer(8, 1), "metal2_lbl" ) +# compute the PMOS source/drain areas and register +# these layers so they become persisted rpactive = ractive & rnwell rpgate = rpactive & rpoly rpsd = rpactive - rpgate +l2n.register(rpsd, "psd") +# compute the NMOS source/drain areas and register +# these layers so they become persisted rnactive = ractive - rnwell rngate = rnactive & rpoly rnsd = rnactive - rngate +l2n.register(rnsd, "nsd") # PMOS transistor device extraction pmos_ex = RBA::DeviceExtractorMOS3Transistor::new("PMOS") @@ -174,8 +183,8 @@ Circuit RINGO (): XINV2 $9 (IN=$I6,$2=(null),OUT=$I7,$4=VSS,$5=VDD) XINV2 $10 (IN=$I7,$2=(null),OUT=$I8,$4=VSS,$5=VDD) Circuit INV2 (IN=IN,$2=$2,OUT=OUT,$4=$4,$5=$5): - DPMOS $1 (S=$2,G=IN,D=$5) [L=0.25,W=0.95,AS=0.49875,AD=0.26125] - DPMOS $2 (S=$5,G=$2,D=OUT) [L=0.25,W=0.95,AS=0.26125,AD=0.49875] - DNMOS $3 (S=$2,G=IN,D=$4) [L=0.25,W=0.95,AS=0.49875,AD=0.26125] - DNMOS $4 (S=$4,G=$2,D=OUT) [L=0.25,W=0.95,AS=0.26125,AD=0.49875] + DPMOS $1 (S=$2,G=IN,D=$5) [L=0.25,W=0.95,AS=0.49875,AD=0.26125,PS=2.95,PD=1.5] + DPMOS $2 (S=$5,G=$2,D=OUT) [L=0.25,W=0.95,AS=0.26125,AD=0.49875,PS=1.5,PD=2.95] + DNMOS $3 (S=$2,G=IN,D=$4) [L=0.25,W=0.95,AS=0.49875,AD=0.26125,PS=2.95,PD=1.5] + DNMOS $4 (S=$4,G=$2,D=OUT) [L=0.25,W=0.95,AS=0.26125,AD=0.49875,PS=1.5,PD=2.95] ```