mirror of https://github.com/KLayout/klayout.git
Updated 2018 12 31 (markdown)
parent
71e86fd7fa
commit
7e1d3b2465
|
|
@ -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]
|
||||
```
|
||||
|
|
|
|||
Loading…
Reference in New Issue