Ellen Wood
11/18/2022, 3:10 PMMitch Bailey
11/18/2022, 4:24 PMsky130_ef_io_gpiov2_pad
sky130A/libs.ref/sky130_fd_io/spice/sky130_fd_io.spice
and sky130A/libs.ref/sky130_fd_io/spice/sky130_ef_io.spice
Tim Edwards
11/18/2022, 4:26 PMjohn wood
11/30/2022, 5:10 PMjohn wood
11/30/2022, 5:34 PMjohn wood
11/30/2022, 5:35 PMTim Edwards
11/30/2022, 6:16 PMjohn wood
11/30/2022, 6:18 PMjohn wood
11/30/2022, 6:41 PMTim Edwards
11/30/2022, 10:04 PMcp /usr/local/share/pdk/sky130B/libs.tech/ngspice/spinit ./.spiceinit
. . . This sets the right compatibility mode for ngspice, and greatly speeds up its reading of the models.
(2) ext2spice lvs
incorporates ext2spice scale off
and ext2spice hierarchy on
, so those two lines in your script are not doing anything.
I did not have the same issue with the PAD being missing from the subcircuit definition. However, I did get the same error result from the extracted layout, and I'm looking into it.Tim Edwards
11/30/2022, 10:23 PMsky130_fd_pr__esd_nfet_g5v0d10v5
has a "flanged gate" that spreads out at the ends and crosses the diffusion at a 45-degree angle. Needless to say, the size of the device is somewhat questionable. The end-to-end width is 5.4um. Magic, having been taught to extract length and width from unusual layouts like annular FETs, has probably tried to estimate an equivalent width for a constant length, and has arrived at the measurement of 5.75um. Unfortunately, the SkyWater devices are "micro-binned", and the model bins have minimum and maximum width and length tightly bound around a specifc device width and length. So their model for the 5V ESD nFET specifies that the width is supposed to be 5.4um and cannot be as wide as 5.75um, and so ngspice throws an error (unfortunately, ngspice just says "can't find model" instead of something more useful like "model parameter W is not inside any model bin boundary"). So to get the simulation to work, I went in and hand-edited the one instance of sky130_fd_pr__esd_nfet_g5v0d10v5
in the netlist and changed its width from 5.75um to 5.4um, and ngspice was happy and it simulates just fine.
However, as I said, I got all of the pins I expected and PAD was in the list, so I could do plot PAD
at the ngspice prompt and get the same graph output as for the netlists_only
example. So I'm not sure what happened there.Matt Venn
12/01/2022, 12:30 PMjohn wood
12/01/2022, 2:28 PMTim Edwards
12/01/2022, 2:35 PMTim Edwards
12/01/2022, 2:37 PMjohn wood
12/01/2022, 2:41 PMTim Edwards
12/01/2022, 2:44 PMsky130_ef_io__gpiov2_pad_wrapped.spice
? Looking at your instance call to the subcircuit, the only port that is missing is PAD. I have no idea why that would happen.john wood
12/01/2022, 2:47 PMTim Edwards
12/01/2022, 2:48 PMPAD
pin all the way back through sky130_ef_io__gpiov2_pad
to sky130_fd_io__top_gpiov2
to sky130_fd_io__gpio_opathv2
.Tim Edwards
12/01/2022, 2:55 PMPAD
has been merged with PAD_A_NOESD_H
.john wood
12/01/2022, 2:55 PMjohn wood
12/01/2022, 2:56 PMTim Edwards
12/01/2022, 3:01 PMPAD
and PAD_A_NOESD_H
are supposed to be separated in the layout by a metal4 resistor at (7.300um, 117.550um), (7.335um, 129.920um). For me, this device shows up in sky130_fd_io__top_gpiov2.ext
:
device devres sky130_fd_pr__res_generic_m4 1460 21317 1461 21318 7 2474 "m4_1460_21317#" 0 0 "PAD_A_NOESD_H" 2474 0 "m2_1694_29447#" 2474 0
Tim Edwards
12/01/2022, 3:02 PMPAD_A_NOESD_H
instead of PAD
, but I'd sure like to know how and why these two extracted netlists diverge. . .john wood
12/01/2022, 3:11 PMTim Edwards
12/01/2022, 3:41 PMsky130_fd_pr__res_generic_m4
resistor went missing. Presumably the rm4
layer disappeared from the layout, which would then cause the extraction to directly short together the PAD
and PAD_A_NOESD_H
. So it seems like something that happened during the building of the PDK, but I can't think of any process that could cause it.