| #! /bin/csh |
| |
| set spice = /usr/local/bin/ngspice |
| |
| if( $#argv != 3 ) then |
| echo "usage: getres nmodel_file pmodel_file dev_file" |
| exit 1 |
| endif |
| |
| if( ! -f $1 ) then |
| echo "can't open spice nfet model file '"$1"'" |
| exit 1 |
| endif |
| |
| if( ! -f $2 ) then |
| echo "can't open spice pfet model file '"$2"'" |
| exit 1 |
| endif |
| |
| if( -f $argv[3] ) then |
| source $argv[3] |
| else |
| echo "can't open device configuration file '"$argv[3]"'" |
| exit 1 |
| endif |
| |
| set nmos = `grep -i "\.MODEL" $1 | grep -i NMOS` |
| set pmos = `grep -i "\.MODEL" $1 | grep -i PMOS` |
| |
| if( $#nmos == 0 ) then |
| echo "can't find nmos .MODEL card in '"$1"'" |
| exit 1 |
| endif |
| if( $#pmos == 0 ) then |
| echo "can't find pmos .MODEL card in '"$1"'" |
| exit 1 |
| endif |
| |
| cat $1 ckt.spi > tmp.spi |
| |
| ed - <<end tmp.spi >& /dev/null |
| g/N_FET/s/N_FET/$nmos[2]/g |
| g/P_FET/s/P_FET/$pmos[2]/g |
| g/C_LOAD/s/C_LOAD/$cap/g |
| g/N_WITH/s/N_WITH/$nwith/g |
| g/N_LEN/s/N_LEN/$nlen/g |
| g/P_WITH/s/P_WITH/$pwith/g |
| g/P_LEN/s/P_LEN/$plen/g |
| w |
| q |
| end |
| |
| $spice -n -b -r spi.out tmp.spi |
| |
| if( $status != 0 ) then |
| echo "something went wrong with spice, look at 'tmp.spi'" |
| exit 1 |
| endif |
| |
| ./findr -c $cap -n $nwith,$nlen -p $pwith,$plen spi.out |& tee resists |