Stefan Schippers
02/05/2024, 10:20 PMTim Edwards
02/05/2024, 10:23 PMStefan Schippers
02/05/2024, 10:24 PMTim Edwards
02/05/2024, 10:24 PMcd sky130
make tools-A
make primitives-A
That will generate only the SPICE models (the tools-A
is not directly related but needs to be done first).Tim Edwards
02/05/2024, 10:24 PMStefan Schippers
02/05/2024, 10:24 PMTim Edwards
02/05/2024, 10:25 PMStefan Schippers
02/05/2024, 10:29 PMTim Edwards
02/05/2024, 10:35 PM.model sky130_fd_pr__nfet_20v0_base.0 nmos
+ lmin = 4.95e-07 lmax = 3.05e-06 wmin = 1.9995e-05 wmax = 1.0005e-03
and
.model sky130_fd_pr__nfet_20v0_base.0 nmos
+ lmin = 4.95e-07 lmax = 3.05e-06 wmin = 1.9995e-05 wmax = 0.0011
and
.model sky130_fd_pr__pfet_20v0_base.0 pmos
+ lmin = 4.95e-07 lmax = 5.05e-07 wmin = 2.9995e-05 wmax = 1.0105e-03
What device width and length is being instanced?
It's not clear to me yet why the nfet 20v model appears three times in the file. . .Stefan Schippers
02/05/2024, 11:47 PML=2.95
W=29.41
mult=1
model=nfet_20v0
For the pfet:
L=0.5
W=30
nf=1 mult=1
model=pfet_20v0
Tim Edwards
02/06/2024, 1:25 AMnf=2
. nf=1
, that is not ending up in the netlist output, where I see:
XM6 net6 G5v0 S B sky130_fd_pr__pfet_20v0 L=0.5 W=30 m=1
That causes the nf=2
to be in effect, so the individual device width is 15um, which is below the minimum limit (same problem applies to the nfet_20v0 devices).
The 20V device layouts are drawn as two fingers sharing the drain, which might be the only legal configuration.
So there is one minor issue, which is that the symbol should probably not define nf
at all, but it should at least be assuming nf=2
for all 20V devices; and then there is the other issue in which the nf
value doesn't end up in the netlist even when it is in the symbol definition.Tim Edwards
02/06/2024, 1:29 AMK {type=pmos
lvs_format="@spiceprefix@name @pinlist sky130_fd_pr__@model L=@L W=@W nf=@nf m=@mult"
format="@spiceprefix@name @pinlist sky130_fd_pr__@model L=@L W=@W m=@mult"
template="name=M1
L=0.5
W=30
mult=1
model=pfet_20v0
spiceprefix=X
"}
So "`nf=@nf`" appears in lvs_format
but not in format
or template
.Stefan Schippers
02/06/2024, 3:12 PM30656fcd54fb8ba48caf1701f5b01b89f3f0c4fc
).
Is that correct? if so, no need to update anything?Tim Edwards
02/06/2024, 4:31 PMStefan Schippers
02/06/2024, 4:41 PMW=0.36
nfet_01v8* transistors, while the minimum W is 0.42
in the "combined" models.
Error on line:
m.x2.x2.x7.msky130_fd_pr__nfet_01v8 x2.x2.a_448_47# x2.x2.a_27_47# x2.x2.a_543_47# vss x2.x2.x7.nshort_model x2.x2.x7.l= x2.x2.x7. 1.500000000000000e-01 w= 3.600000000000000e-01 ad= 0.000000000000000e+00 as= 0.000000000000000e+00 pd= 0.000000000000000e+00 ps= 0.000000000000000e+00 nrd= 3.888888888888890e-01 nrs= 3.888888888888890e-01 sa= 0.000000000000000e+00 sb= 0.000000000000000e+00 sd= 0.000000000000000e+00 nf= 1.000000000000000e+00 delvto= 0.000000000000000e+00
could not find a valid modelname
Simulation interrupted due to error!
like in this flop:
.subckt sky130_fd_sc_hd__dfrtp_1 CLK D RESET_B VGND VNB VPB VPWR Q
...
...
X7 a_448_47# a_27_47# a_543_47# VNB sky130_fd_pr__nfet_01v8 w=360000u l=150000u
...
...
.ends
Tim Edwards
02/06/2024, 4:48 PM