mirror of https://github.com/KLayout/klayout.git
Updated 2019 01 07 (markdown)
parent
458cb7a4c8
commit
898d7bab89
|
|
@ -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 })
|
||||
|
|
|
|||
Loading…
Reference in New Issue