Stefan Schippers
01/12/2021, 12:06 AMnfet_20v0_zvt
transistor, but it is not included from the toplevel sky130.lib.spice
file. This suggest that it is either disabled or not reliable. May be @User has more precise info on this. For the tt
process corner (as well as all other corners), as you see there is no nfet_20v0*
inclusion in the top model file and not even in the included sub-files. I can try to manually include the sky130_fd_pr__nfet_20v0_zvt__subcircuit.pm3.spice
and see what happens.
.lib tt
* MOSFET
.include "../cells/nfet_01v8/sky130_fd_pr__nfet_01v8__tt.corner.spice"
.include "../cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__tt.corner.spice"
.include "../cells/pfet_01v8/sky130_fd_pr__pfet_01v8__tt.corner.spice"
.include "../cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__tt.corner.spice"
.include "../cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__tt.corner.spice"
.include "../cells/esd_nfet_01v8/sky130_fd_pr__esd_nfet_01v8__tt.corner.spice"
.include "../cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__tt.corner.spice"
.include "../cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__tt.corner.spice"
.include "../cells/esd_pfet_g5v0d10v5/sky130_fd_pr__esd_pfet_g5v0d10v5__tt.corner.spice"
.include "../cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__tt.corner.spice"
.include "../cells/pfet_g5v0d16v0/sky130_fd_pr__pfet_g5v0d16v0__tt.corner.spice"
.include "../cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__tt.corner.spice"
.include "../cells/nfet_g5v0d16v0/sky130_fd_pr__nfet_g5v0d16v0__tt_discrete.corner.spice"
.include "../cells/esd_nfet_g5v0d10v5/sky130_fd_pr__esd_nfet_g5v0d10v5__tt.corner.spice"
.include "corners/tt/nonfet.spice"
* Mismatch parameters
.include "../cells/nfet_01v8/sky130_fd_pr__nfet_01v8__mismatch.corner.spice"
.include "../cells/pfet_01v8/sky130_fd_pr__pfet_01v8__mismatch.corner.spice"
.include "../cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__mismatch.corner.spice"
.include "../cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__mismatch.corner.spice"
.include "../cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__mismatch.corner.spice"
.include "../cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__mismatch.corner.spice"
.include "../cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__mismatch.corner.spice"
.include "../cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__mismatch.corner.spice"
.include "../cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__mismatch.corner.spice"
* Resistor/Capacitor
.include "r+c/res_typical__cap_typical.spice"
.include "r+c/res_typical__cap_typical__lin.spice"
* Special cells
.include "corners/tt/specialized_cells.spice"
* All models
.include "all.spice"
* Corner
.include "corners/tt/rf.spice"
.endl
Stefan Schippers
01/12/2021, 12:21 AMnfet_20v0_zvt
has also a 'suspicious' mf=1
parameter. I think this is a typo, but not sure... The mos instance line does not use mf
nor nf
....
.subckt sky130_fd_pr__nfet_20v0_zvt d g s b w=60u l=2u m=1 t=30
+ ad=0 as=0 pd=0 ps=0 nrd=2 nrs=2 mf=1 sa=0 sb=0
Tim Edwards
01/12/2021, 2:08 AMsky130.lib.spice
was created from some example file in the SkyWater sources. They did not provide any such "corner library" file like sky130.lib.spice
or the equivalent, but only an example of how one should be written (apparenly without consideration of the ".lib" statement, since the suggestion was that you would write one such file for each corner sim you needed). It is not likely that the example was ever intended to be exhaustive. I started adding includes for missing devices, but ngspice started getting so bogged down with the startup, I stopped doing that. So there are cases where one is likely to need an additional .include
statement for the ngspice netlist. This is aside from suspicious parameters. I agree that mf
was probably supposed to be nf
. the mf
is nothing we did but goes back to the original SkyWater sources. As you noted, there is no other reference in the model file to mf
, but since it is a BSIM4 model, the nf
would be relevant.Tim Edwards
01/12/2021, 2:10 AMnf
to be declared in the .subckt
line to be legally passed to the device?Stefan Schippers
01/12/2021, 2:16 AMm1 d1 g s b sky130_fd_pr__nfet_20v0_zvt__base w=w_n20zvtvhv1 l=hvnel_n20zvtvhv1 ad=0 as=0 pd=0 ps=0 nrd=nrd_n20zvtvhv1 nrs=nrs_n20zvtvhv1 delvto=delvto_n20zvtvhv1 m=m
but since this device includes as separate elements the LDD resistance and separate D/S diodes (note AD, AS,PD,PS set to 0) , may be the layout is contrained to a single finger / single geometry?
Another concern i have with this device is the multiplication (m) parameter: it is used at subckt level , then assigned down to mos instance (m=m). Isnt't this a m^2 multiplication?Tim Edwards
01/12/2021, 2:51 AMTim Edwards
01/12/2021, 2:57 AMStefan Schippers
01/12/2021, 1:00 PMnfet_20v0_zvt
. You need to include this file:
.include /pdk_base_dir/cells/nfet_20v0/sky130_fd_pr__nfet_20v0__tt_discrete.corner.spice
this file includes definitions for the nfet_20v0
, nfet_20v0_iso
and nfet_20v0_zvt
transistors. For the nfet_20v0_zvt
ids/vds curves are in line with the chart shown in the tests/ directory. The 'm' parameter seems to work (m=2 yields double current). Changing W / L has no effect. This is a fixed layout device. Will update the xschem symbol for these devices to avoid providing all the AD/AS/PD/PS/etc parameters as these are unused (set internally to fixed values) .Tom
01/12/2021, 5:51 PMmf
parameter too. I just noticed this line in the docs. actually "The symbol of the sky130_fd_pr__nfet_20v0_zvt (20V NMOS zero-VT FET) is still under development.". Thanks for the sim comparison results @User.ParkedTom
01/15/2021, 11:13 AMStefan Schippers
01/15/2021, 12:04 PMcells/nfet_01v8/sky130_fd_pr__nfet_01v8__ff.pm3.spice
Pepijn de Vos
01/18/2021, 11:20 AMStefan Schippers
01/18/2021, 12:18 PMStefan Schippers
01/18/2021, 12:19 PMStefan Schippers
01/18/2021, 12:20 PMStefan Schippers
01/18/2021, 12:23 PMStefan Schippers
01/18/2021, 12:25 PMParkedTom
01/18/2021, 1:30 PMParkedTom
01/18/2021, 1:32 PMStefan Schippers
01/18/2021, 1:42 PMStefan Schippers
01/18/2021, 1:43 PMsudo apt-get install adms
ParkedTom
01/18/2021, 1:43 PMParkedTom
01/18/2021, 1:43 PMStefan Schippers
01/18/2021, 10:32 PMParkedTom
01/19/2021, 5:28 PMParkedTom
01/19/2021, 5:57 PMStefan Schippers
01/19/2021, 9:10 PMParkedTom
01/20/2021, 2:22 PMParkedTom
01/20/2021, 2:22 PMglobal_spice_netlist(): starting awk on netlist!
ParkedTom
01/20/2021, 2:23 PM