100 REM COMPS.BAS  Copyright 1989 by Russell Kincaid
110 REM Kincaid Engineering, Savage Road, Milford, NH 03055
120 REM REVISED 1 NOV 1988
130 CLS
140 PRINT"***************************************************************"
150 PRINT" THIS PROGRAM GENERATES A SIMPLE SPICE MODEL FOR A COMPARATOR"
160 PRINT"     BASED ON DATA SHEET INPUT."
170 PRINT:PRINT"        Written by:  Russ Kincaid"
180 PRINT:PRINT"This is a shareware program, see README.DOC"
190 PRINT"***************************************************************"
200 PRINT:PRINT
210 REM WRITTEN BY RUSS KINCAID 5/8/1986
220 REM VERSION 1.0  REVISED 9/16/87
230 INPUT "WHAT WILL YOU CALL THIS MODEL ";N$
240 OPEN N$+".MDL" FOR OUTPUT AS #1
250 INPUT"IS THE OUTPUT TRANSISTOR EMITTER BROUGHT OUT ";EO$
260 INPUT"SINGLE SUPPLY ";A$ : IF A$="Y" THEN 350
270 PRINT#1,"** SIMPLE COMPARATOR MODEL **"
280 IF EO$="Y" THEN 330
290 PRINT
300 PRINT"THIS CIRCUIT HAS THE OUTPUT TRANSISTOR EMITTER GROUNDED." : PRINT
310 PRINT#1,".SUBCKT ";N$;" 1 2 4 6 7"
320 PRINT#1,"* -IN,+IN,+V,-V,OUTPUT":GOTO 360
330 PRINT#1,".SUBCKT ";N$;" 1 2 4 6 7 8"
340 PRINT#1,"* -IN,+IN,+V,-V,OUT,EMITTER":GOTO 360
350 PRINT#1,".SUBCKT ";N$;" 1 2 4 8 7" :PRINT#1,"* -IN,+IN,+V,GND,OUT"
360 INPUT"INPUT IMPEDANCE = ";RIN$
370 INPUT"INPUT BIAS CURRENT =";IIN
380 INPUT"INPUT OFFSET CURRENT = ";IOF:I1$=STR$(IIN+IOF/2):I2$=STR$(IIN-IOF/2)
390 INPUT"INPUT OFFSET VOLTAGE = ";VOFF
400 PRINT#1,"RIN 9 2 ";RIN$
410 PRINT#1,"VOFF 1 9 ";VOFF
420 PRINT#1,"I1 1 0 "+I1$
430 PRINT#1,"I2 2 0 "+I2$
440 PRINT#1,"RA 3 0 1"
450 PRINT#1,"D1 0 3 D1"
460 INPUT"POS. SUPPLY CURRENT = ";IP
470 INPUT"POS. SUPPLY VOLTAGE = ";VP
480 RP = INT(VP/IP)
490 IF A$="Y" THEN IN=0:GOTO 540
500 INPUT"NEG. SUPPLY CURRENT = ";IN
510 INPUT"NEG. SUPPLY VOLTAGE = ";VN
520 RN=INT(VN/IN)
530 PRINT#1,"RN 6 0 ";STR$(RN)
540 PRINT#1,"RP 4 0 ";STR$(RP)
550 INPUT"LOAD RESISTANCE FOR MAX GAIN = ";RL
560 INPUT"MAX GAIN = ";AV
570 INPUT"MAX SLEW RATE (V/US) = ";VO
580 INPUT"OUTPUT I SINK LIMIT = ";IL
590 INPUT"DO YOU WANT TO MODEL TURN-ON TIME DELAY ";B$:IF B$="N" THEN 620
600 INPUT"SHORTEST TURN-ON TIME DELAY (SEC) = ";TD
610 REM T=-RCLOG((Emax-Et)/Emax)
620 IS2=IL/5.3E+08
630 GA = AV*.5/IL/RL : GA$=STR$(GA)
640 RB=RL*1000
650 IF B$="N" OR B$="n" THEN 690
660 EM=.6*IL/50*RB
670 DE=1.2
680 C2=-TD/(RB*LOG((EM-DE)/EM)) : C2$=STR$(C2*1E+12)+"PF"
690 INPUT"OUTPUT VSAT = ";VS
700 INPUT"CURRENT SINK FOR VSAT =";CS
710 CJC=IL/100/VO : CJC$=STR$(CJC*1000000!)+"PF"
720 PRINT#1,"GA 3 0 9 2 ";GA$
730 IF EO$="Y" THEN 810
740 IF IN=0 THEN 810
750 PRINT#1,"RB 5 0 ";STR$(RB)
760 IF B$="N" THEN 780
770 PRINT#1,"C2 5 0 ";C2$
780 PRINT#1,"Q1 7 5 0 Q1"
790 PRINT#1,"D2 0 5 DG"
800 PRINT#1,"GI 5 0 3 0 ";STR$(IL/50) : GOTO 910
810 PRINT#1,"RB 5 8 ";STR$(RB)
820 IF EO$="N" THEN 850
830 PRINT#1,"D2 5 4 DG"
840 PRINT#1,"D3 0 5 DG"
850 IF B$="N" THEN 870
860 PRINT#1,"C2 5 8 ";C2$
870 PRINT#1,"Q1 7 5 8 Q1"
880 IF EO$="Y" THEN 900
890 PRINT#1,"D2 0 5 DG"
900 PRINT#1,"GI 5 8 3 0 ";STR$(IL/50)
910 PRINT#1,".MODEL DG D"
920 PRINT#1,".MODEL D1  D IS=2E-9 BV=.5 IBV=2E-7"
930 PRINT#1,".MODEL Q1 NPN IS=";STR$(IS2);" BF=100 CJC=";CJC$;" RC=";STR$(VS/CS)
940 PRINT#1,".ENDS ";N$
950 CLOSE#1
960 PRINT:PRINT"USE THE TYPE COMMAND TO SEE THE FILE ";N$;".MDL":PRINT
970 END


    Source: geocities.com/russlk/spice

               ( geocities.com/russlk)