Matthew Guthaus
06/08/2021, 4:56 PMTim Edwards
06/08/2021, 4:58 PMMatthew Guthaus
06/08/2021, 4:59 PMTim Edwards
06/08/2021, 5:00 PMTim Edwards
06/08/2021, 5:01 PMMatthew Guthaus
06/08/2021, 5:03 PMMatthew Guthaus
06/08/2021, 5:05 PMTim Edwards
06/08/2021, 5:06 PMMatthew Guthaus
06/08/2021, 5:07 PMMatthew Guthaus
06/08/2021, 5:08 PMTim Edwards
06/08/2021, 5:09 PMMatthew Guthaus
06/08/2021, 5:11 PMTim Edwards
06/08/2021, 5:11 PMMatthew Guthaus
06/08/2021, 5:12 PMMatthew Guthaus
06/08/2021, 5:21 PMMatthew Guthaus
06/08/2021, 5:22 PMTim Edwards
06/08/2021, 5:23 PMcx1='5.75e-16' dev/gauss='sky130_fd_pr__cap_var_lvt__cmax_slope_l/sqrt(2*ld*vm)'
should be converted to
cx1='5.75e-16*mc_mm_switch*sky130_fd_pr__cap_var_lvt__cmax_slope_l/sqrt(2*ld*vm)
. . . or something like that? No, there must have to be a call to agauss() in there somewhere. Elsewhere they use a statistics
block and it says what the mean and standard deviation are. So somebody needs to tell me what dev/gauss
really means.Matthew Guthaus
06/08/2021, 5:24 PM; dev/gaus...
Tim Edwards
06/08/2021, 5:24 PMMatthew Guthaus
06/08/2021, 5:34 PMTim Edwards
06/08/2021, 5:34 PMMatthew Guthaus
06/08/2021, 5:39 PMTim Edwards
06/08/2021, 5:39 PMMatthew Guthaus
06/08/2021, 5:40 PMMatthew Guthaus
06/08/2021, 5:41 PMTim Edwards
06/08/2021, 5:42 PMTim Edwards
06/09/2021, 5:00 PMdev/gauss
syntax: I poked around and determined that this is PSPICE syntax. I don't know why this is variously scattered around the SkyWater files in addition to the spectre syntax. Apparently it is a shorthand for a device-level (e.g., monte carlo mismatch) parameter gaussian variation with zero mean and a standard deviation equal to the value that it is set to. So I am working now on an automatic conversion that would make your original example look like
+ cm3='6.529e-16*cnwvc_cdepmult+MC_MM_SWITCH*AGAUSS(0,1.0,1)*sky130_fd_pr__cap_var_lvt__cmin_slope_wl*cnwvc_cdepmult/sqrt(2*ld*wd*vm)'
I think that this treatment is correct.Matthew Guthaus
06/09/2021, 5:44 PMMatthew Guthaus
06/09/2021, 5:45 PMMatthew Guthaus
06/09/2021, 5:45 PMTim Edwards
06/09/2021, 5:49 PMlibs.tech/xyce
in addition to libs.tech/ngspice
. Probably it is okay just to have that one file in there, and then everything in it would point to the ngspice directory.
I am currently working on the open_pdks scripts and have knocked down everything in your list except for the "vt" issue and the ".endl" issue (no issues other than time).Matthew Guthaus
06/09/2021, 6:12 PMMatthew Guthaus
06/09/2021, 6:13 PMMatthew Guthaus
06/09/2021, 6:19 PM/software/PDKs/sky130A/libs.tech/xyce/../../libs.ref/sky130_fd_pr/spice/sky130_fd_pr__special_nfet_latch.pm3.spice
at or near line 34
No model parameter LDIF found for model
SKY130_FD_PR__SPECIAL_NFET_LATCH__MODEL.0 of type NMOS, parameter ignored.
Netlist warning in file
/software/PDKs/sky130A/libs.tech/xyce/../../libs.ref/sky130_fd_pr/spice/sky130_fd_pr__special_nfet_latch.pm3.spice
at or near line 34
No model parameter HDIF found for model
SKY130_FD_PR__SPECIAL_NFET_LATCH__MODEL.0 of type NMOS, parameter ignored.
Netlist warning in file
/software/PDKs/sky130A/libs.tech/xyce/../../libs.ref/sky130_fd_pr/spice/sky130_fd_pr__special_nfet_latch.pm3.spice
at or near line 34
No model parameter RD found for model
SKY130_FD_PR__SPECIAL_NFET_LATCH__MODEL.0 of type NMOS, parameter ignored.
Netlist warning in file
/software/PDKs/sky130A/libs.tech/xyce/../../libs.ref/sky130_fd_pr/spice/sky130_fd_pr__special_nfet_latch.pm3.spice
at or near line 34
No model parameter RS found for model
SKY130_FD_PR__SPECIAL_NFET_LATCH__MODEL.0 of type NMOS, parameter ignored.
Netlist warning in file
/software/PDKs/sky130A/libs.tech/xyce/../../libs.ref/sky130_fd_pr/spice/sky130_fd_pr__special_nfet_latch.pm3.spice
at or near line 34
No model parameter RSC found for model
SKY130_FD_PR__SPECIAL_NFET_LATCH__MODEL.0 of type NMOS, parameter ignored.
Netlist warning in file
/software/PDKs/sky130A/libs.tech/xyce/../../libs.ref/sky130_fd_pr/spice/sky130_fd_pr__special_nfet_latch.pm3.spice
at or near line 34
No model parameter RDC found for model
SKY130_FD_PR__SPECIAL_NFET_LATCH__MODEL.0 of type NMOS, parameter ignored.
Netlist warning in file
/software/PDKs/sky130A/libs.tech/xyce/../../libs.ref/sky130_fd_pr/spice/sky130_fd_pr__special_nfet_latch.pm3.spice
at or near line 34
No model parameter NQSMOD found for model
SKY130_FD_PR__SPECIAL_NFET_LATCH__MODEL.0 of type NMOS, parameter ignored.
Parameter TOX for model
XSRAM:XBANK0:XBITCELL_ARRAY:XBITCELL_ARRAY:XBIT_R0_C0:X0:SKY130_FD_PR__SPECIAL_NFET_LATCH__MODEL.0
contains unrecognized symbols:
4.148e-009*sky130_fd_pr__special_nfet_latch__tox_mult+MC_MM_SWITCH*AGAUSS(0,1.0,1)*(4.148e-009*sky130_fd_pr__special_nfet_latch__tox_mult*(sky130_fd_pr__special_nfet_latch__tox_slope/sqrt(l*w*mult)))
*** Xyce Abort ***
Parameter TOX for model
XSRAM:XBANK0:XBITCELL_ARRAY:XBITCELL_ARRAY:XBIT_R0_C0:X0:SKY130_FD_PR__SPECIAL_NFET_LATCH__MODEL.0
contains unrecognized symbols:
4.148e-009*sky130_fd_pr__special_nfet_latch__tox_mult+MC_MM_SWITCH*AGAUSS(0,1.0,1)*(4.148e-009*sky130_fd_pr__special_nfet_latch__tox_mult*(sky130_fd_pr__special_nfet_latch__tox_slope/sqrt(l*w*mult)))
Tim Edwards
06/09/2021, 6:25 PM.param MC_MM_SWITCH = 1
(or = 0
) at the top of any simulation because the corner models can work either with or without mismatch enabled. I have been considering changing sky130.lib.spice
to just have different category names for each corner with- and without- mismatch, so that it is not necessary for the testbench to define MC_MM_SWITCH
. The other issues are all parameter ignored
and it looks like those would not stop Xyce from running (but are they important?).Matthew Guthaus
06/09/2021, 6:26 PMTim Edwards
06/09/2021, 6:27 PMMC_MM_SWITCH
defined?Matthew Guthaus
06/09/2021, 6:27 PMMatthew Guthaus
06/09/2021, 6:27 PMTim Edwards
06/09/2021, 6:28 PMTim Edwards
06/09/2021, 6:29 PMMatthew Guthaus
06/09/2021, 6:29 PMMatthew Guthaus
06/09/2021, 6:30 PMTim Edwards
06/09/2021, 6:31 PMsky130.lib.spice
to avoid it. For example, there would be corner tt
as usual meaning typical-without-mismatch, and tt_mm
meaning typical-with-mismatch. If you think that's a much better solution than introducing parameters that have to be added to testbenches, then I can make that change. It doubles the size of `sky130.lib.spice`; given ngspice's weird parsing, I don't know if that will increase the simulation startup time, which is the one reason I've been hesitant to do it.Matthew Guthaus
06/09/2021, 6:32 PMTim Edwards
06/09/2021, 6:33 PMTim Edwards
06/09/2021, 6:36 PMAGAUSS()
function is something that Xyce isn't happy with? Does Xyce have a concept of user-definable functions? I'm wondering if there is some way to work around it.Matthew Guthaus
06/09/2021, 6:37 PMTim Edwards
06/09/2021, 6:44 PMMatthew Guthaus
06/09/2021, 9:44 PMMatthew Guthaus
06/09/2021, 9:45 PMNetlist warning in file
/software/PDKs/sky130A/libs.tech/xyce/../../libs.ref/sky130_fd_pr/spice/sky130_fd_pr__pfet_01v8__tt.pm3.spice
at or near line 33
Device instance
XSKY130_FD_BD_SRAM__OPENRAM_DFF:X1020:MSKY130_FD_PR__PFET_01V8: Source
conductance reset to 1.0e3 mho
Matthew Guthaus
06/09/2021, 9:53 PMTim Edwards
06/10/2021, 12:43 AMMatthew Guthaus
06/10/2021, 6:51 PMTim Edwards
06/10/2021, 6:53 PMMatthew Guthaus
06/10/2021, 6:55 PMEffective channel width <= 0
...
Effective channel length for C-V <= 0
Matthew Guthaus
06/10/2021, 6:57 PM< + toxe = {4.23e-09+MC_MM_SWITCH*AGAUSS(0,1.0,1)*(4.23e-09*(sky130_fd_pr__pfet_01v8__toxe_slope/sqrt(l*w*mult)))}
---
> + toxe = {4.23e-09+sky130_fd_pr__pfet_01v8__toxe_slope_spectre*(4.23e-09*(sky130_fd_pr__pfet_01v8__toxe_slope/sqrt(l*w*mult)))}
Tim Edwards
06/10/2021, 6:57 PMMatthew Guthaus
06/10/2021, 6:57 PMMatthew Guthaus
06/10/2021, 6:57 PMTim Edwards
06/10/2021, 6:58 PMMatthew Guthaus
06/10/2021, 6:59 PMTim Edwards
06/10/2021, 7:01 PMMatthew Guthaus
06/10/2021, 7:04 PM