From 898d7bab89aebf8c308d608be461992487247431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Mon, 21 Jan 2019 00:38:00 +0100 Subject: [PATCH] Updated 2019 01 07 (markdown) --- 2019-01-07.md | 66 ++++++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/2019-01-07.md b/2019-01-07.md index 8ad7c9a..ab0fc0b 100644 --- a/2019-01-07.md +++ b/2019-01-07.md @@ -21,22 +21,22 @@ l2n = RBA::LayoutToNetlist::new(RBA::RecursiveShapeIterator::new(ly, tc, [])) puts "Making layers ..." -rpoly = l2n.make_polygon_layer( ly.layer(1, 0 ) ) # GDS #1 -> poly -rcont = l2n.make_polygon_layer( ly.layer(2, 0 ) ) # GDS #2 -> contact (poly or diff) -rmetal1 = l2n.make_polygon_layer( ly.layer(3, 0 ) ) # GDS #3 -> metal 1 -rmetal1_lbl = l2n.make_text_layer( ly.layer(103,0 ) ) # GDS #103 -> metal 1 labels -rvia1 = l2n.make_polygon_layer( ly.layer(4, 0 ) ) # GDS #4 -> via 1 -rmetal2 = l2n.make_polygon_layer( ly.layer(5, 0 ) ) # GDS #5 -> metal 2 -rmetal2_lbl = l2n.make_text_layer( ly.layer(105,0 ) ) # GDS #105 -> metal 2 labels -rvia2 = l2n.make_polygon_layer( ly.layer(6, 0 ) ) # GDS #6 -> via 2 -rmetal3 = l2n.make_polygon_layer( ly.layer(7, 0 ) ) # GDS #7 -> metal 3 -rmetal3_lbl = l2n.make_text_layer( ly.layer(107,0 ) ) # GDS #107 -> metal 3 labels -rvia3 = l2n.make_polygon_layer( ly.layer(8, 0 ) ) # GDS #8 -> via 3 -rmetal4 = l2n.make_polygon_layer( ly.layer(9, 0 ) ) # GDS #9 -> metal 4 -rmetal4_lbl = l2n.make_text_layer( ly.layer(109,0 ) ) # GDS #109 -> metal 4 labels -rvia4 = l2n.make_polygon_layer( ly.layer(10, 0 ) ) # GDS #10 -> via 4 -rmetal5 = l2n.make_polygon_layer( ly.layer(11, 0 ) ) # GDS #11 -> metal 5 -rmetal5_lbl = l2n.make_text_layer( ly.layer(111,0 ) ) # GDS #111 -> metal 5 labels +rpoly = l2n.make_polygon_layer( ly.layer(1, 0 ), "poly" ) # GDS #1 -> poly +rcont = l2n.make_polygon_layer( ly.layer(2, 0 ), "cont" ) # GDS #2 -> contact (poly or diff) +rmetal1 = l2n.make_polygon_layer( ly.layer(3, 0 ), "metal1" ) # GDS #3 -> metal 1 +rmetal1_lbl = l2n.make_text_layer( ly.layer(103,0 ), "metal1_lbl" ) # GDS #103 -> metal 1 labels +rvia1 = l2n.make_polygon_layer( ly.layer(4, 0 ), "via1" ) # GDS #4 -> via 1 +rmetal2 = l2n.make_polygon_layer( ly.layer(5, 0 ), "metal2" ) # GDS #5 -> metal 2 +rmetal2_lbl = l2n.make_text_layer( ly.layer(105,0 ), "metal2_lbl" ) # GDS #105 -> metal 2 labels +rvia2 = l2n.make_polygon_layer( ly.layer(6, 0 ), "via2" ) # GDS #6 -> via 2 +rmetal3 = l2n.make_polygon_layer( ly.layer(7, 0 ), "metal3" ) # GDS #7 -> metal 3 +rmetal3_lbl = l2n.make_text_layer( ly.layer(107,0 ), "metal3_lbl" ) # GDS #107 -> metal 3 labels +rvia3 = l2n.make_polygon_layer( ly.layer(8, 0 ), "via3" ) # GDS #8 -> via 3 +rmetal4 = l2n.make_polygon_layer( ly.layer(9, 0 ), "metal4" ) # GDS #9 -> metal 4 +rmetal4_lbl = l2n.make_text_layer( ly.layer(109,0 ), "metal4_lbl" ) # GDS #109 -> metal 4 labels +rvia4 = l2n.make_polygon_layer( ly.layer(10, 0 ), "via4" ) # GDS #10 -> via 4 +rmetal5 = l2n.make_polygon_layer( ly.layer(11, 0 ), "metal5" ) # GDS #11 -> metal 5 +rmetal5_lbl = l2n.make_text_layer( ly.layer(111,0 ), "metal5_lbl" ) # GDS #111 -> metal 5 labels puts "Connecting ..." @@ -133,20 +133,20 @@ ly.read(File.join("testdata", "algo", "device_extract_l3.gds")) l2n = RBA::LayoutToNetlist::new(RBA::RecursiveShapeIterator::new(ly, ly.top_cell, [])) -rbulk = l2n.make_polygon_layer( ly.layer ) -rnwell = l2n.make_polygon_layer( ly.layer(1, 0) ) -ractive = l2n.make_polygon_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) ) -rpplus = l2n.make_polygon_layer( ly.layer(10, 0) ) -rnplus = l2n.make_polygon_layer( ly.layer(11, 0) ) +rbulk = l2n.make_polygon_layer( ly.layer , "bulk" ) +rnwell = l2n.make_polygon_layer( ly.layer(1, 0), "nwell" ) +ractive = l2n.make_polygon_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" ) +rpplus = l2n.make_polygon_layer( ly.layer(10, 0), "pplus" ) +rnplus = l2n.make_polygon_layer( ly.layer(11, 0), "nplus" ) ractive_in_nwell = ractive & rnwell rpactive = ractive_in_nwell & rpplus @@ -154,12 +154,18 @@ rntie = ractive_in_nwell & rnplus rpgate = rpactive & rpoly rpsd = rpactive - rpgate +l2n.register(rntie, "ntie") +l2n.register(rpsd, "psd") + ractive_outside_nwell = ractive - rnwell rnactive = ractive_outside_nwell & rnplus rptie = ractive_outside_nwell & rpplus rngate = rnactive & rpoly rnsd = rnactive - rngate +l2n.register(rptie, "ptie") +l2n.register(rnsd, "nsd") + # PMOS transistor device extraction pmos_ex = RBA::DeviceExtractorMOS4Transistor::new("PMOS") l2n.extract_devices(pmos_ex, { "SD" => rpsd, "G" => rpgate, "P" => rpoly, "W" => rnwell })