| Attempting to get a valid IRSIM .prm file for the sky130 process | |
| Specifically for the sky130_fd_sc_hd library, but should work with all of | |
| them except for sky130_fd_sc_hvl. | |
| ------------------------------------------------------------------------ | |
| Following directions from the irsim web page. . . | |
| Get the "getres" script from ~/gitsrc/irsim/lib/calibrate_spice3/ | |
| Change "spice" (with path) to "ngspice" (with path) | |
| Added string.h, stdlib.h, and malloc.h to findr.c to make it compile, | |
| and compiled it. | |
| Get characteristics from SPICE, cell sky130_fd_sc_hd__nand2_1 | |
| P device (sky130_fd_pr__pfet_01v8_lvt): 1.00um wide, 0.15um long | |
| N device (sky130_fd_pr__nfet_01v8): 0.65um wide, 0.15um long | |
| Using 50fF for loading cap (essentially irrelevant) | |
| Writing these values into "config.txt" (but not using). | |
| Copy "ckt.spi" to local directory | |
| Substitute values by hand (obvious) | |
| Use ".lib" to get models (sky130.lib.spice) with corner "tt" | |
| Convert "M" to "X" on devices. | |
| Changed voltage source on ground to 0.01 ohm resistor because ngspice | |
| doesn't like shorted voltage sources. | |
| Added ".save all". | |
| Spice models are in | |
| ~/projects/efabless/tech/SW/sky130A/libs.tech/ngspice/sky130.lib.spice | |
| Note that the raw file reader expects an ASCII raw file, which in ngspice | |
| requires in ".spiceinit": | |
| set filetype=ascii | |
| Running: | |
| ngspice -b -r spi.out ckt.spi | |
| Do *not* use "-n" because that suppresses the reading of the .spiceinit file. | |
| Run: | |
| ./findr -c 100 -n 0.8,0.18 -p 1.0,0.18 spi.out |& tee resists | |
| Had to change "findr.c" to replace "vdd" with "v(vdd)" and the same for all | |
| the vouts. | |
| Success! | |
| Now: Redo this at all nine corners for low-typ-high voltage and low-typ-high temp. | |
| Add header. sky130 gate thickness, from sky130_fd_pr__nfet_01v8 model is 4.15E-9 m, | |
| so: | |
| Cox = Eox / Tox = 8.854E-12 F/m * 3.9 / 4.15E-9 = 8.32E-3 F/m^2 = pF/um^2 | |
| The other cap values need to be looked up and corrected. . . |