<@U016EM8L91B> <@U018459959C>, I am moving forward...
# sky130
@User @User, I am moving forward (after some idle time 🙂 ) with primitive devices creation in xschem for the sky130 pdk. Two strategies are possible for transistors symbols (and other devices as well): • Light symbols: transistor accepts a model parameter so one nfet symbol could fit at least all same voltage variants (1v8, 1v8_lvt, for example) • Heavy symbols: this means one separate symbol file per transistor model so if there are 3 Low voltage, 4 medium voltage, 2 high voltage N transistors there will be in xschem 9 Nfet symbols. If you agree i prefer to proceed with heavy symbols, this reduces the risk of setting wrong model names (model names are very long...) and allows to differentiate graphically the symbols for easy recognition. Image shows a dc characterization of 1v8_lvt nfets, a short channel (L=0.15) and a 1um channel one. In final version with 'heavy' symbols the model name will be shown without the useless 'sky130_fd_pr__' prefix
Sounds good to me, definitely drop the prefix as you said though 🙂 . I don't see any obvious downsides with the heavy approach from the light one, except that it would be more symbols for you to maintain - but maybe one can make scripts for that so they do not diverge over time.
Note: I am just a hobbyist with opinions, people with more experience might have better arguments!
At first i thought my simple example was freezing ngspice.. it takes wayyyy more time for ngspice to parse and read the top level lib file (which includes a bunch of children files including a bunch of children files including...) than doing the simulation. At the end i had no warning messages, this is incredible, given the large number of parameters and equations...
Would one or the other option make it easier to swap threshold voltages?
@Pepijn de Vos i will create one symbol per transistor model, however you are allowed in any case to override the model in the instance, if you need to do a quick simulation (example replace nfet_1v8 with nfet_1v8_lvt) so to this aspect there is no difference. however setting a 20V model on a 1.8V symbol (which visually "looks" as a low voltage device) might be confusing. It's the designer responsibility to be consistent (when done with the quick simulation remove the model override 🙂 )