* Units of macro parameters: * * Gain_err: LSB * Gain_TC: ppm/C * Zero_err: LSB * Zero_TC: ppm/C * Offset_err: LSB * Offset_TC: ppm/C .SUBCKT DAC80004 VOUTA VOUTB VOUTC VOUTD VREF D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 SELA SELB SELC SELD LDAC VDD GND + PARAMS: FS_err=-0.1 FS_TC=-45m Zero_err=-0.15 Zero_TC=-18m Offset_err=-0.05 Offset_TC=-8m XDAC1 VOUTA VREF D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 SELA LDACM LDACH VDD GND GND DGL DAC1 + PARAMS: FS_err={FS_err} FS_TC={FS_TC} Zero_err={Zero_err} Zero_TC={Zero_TC} Offset_err={Offset_err} Offset_TC={Offset_TC} R_base=6.25k XDAC2 VOUTB VREF D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 SELB LDACM LDACH VDD GND GND DGL DAC1 + PARAMS: FS_err={FS_err} FS_TC={FS_TC} Zero_err={Zero_err} Zero_TC={Zero_TC} Offset_err={Offset_err} Offset_TC={Offset_TC} R_base=6.25k XDAC3 VOUTC VREF D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 SELC LDACM LDACH VDD GND GND DGL DAC1 + PARAMS: FS_err={FS_err} FS_TC={FS_TC} Zero_err={Zero_err} Zero_TC={Zero_TC} Offset_err={Offset_err} Offset_TC={Offset_TC} R_base=6.25k XDAC4 VOUTD VREF D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 SELD LDACM LDACH VDD GND GND DGL DAC1 + PARAMS: FS_err={FS_err} FS_TC={FS_TC} Zero_err={Zero_err} Zero_TC={Zero_TC} Offset_err={Offset_err} Offset_TC={Offset_TC} R_base=6.25k GVCCS2 VDD GND VALUE = {2734u + 51.111u*V(VDD, GND)} XINV LDAC LDACM VDD GND INV + PARAMS: DLH = 1.88u DHL = 0.1u XINVH LDAC LDACH VDD GND INV + PARAMS: DLH = 0.94u DHL = 0.05u XINV1 LDAC LDG1 VDD GND INV + PARAMS: DLH = 1n DHL = 1n XINV2 LDACH LDG2 VDD GND INV + PARAMS: DLH = 1n DHL = 1n XINV3 LDACM LDG3 VDD GND INV + PARAMS: DLH = 1n DHL = 1n CL1 LDG1 LDX1 1p RL1 LDX1 GND 50k EL1 LDY1 GND VALUE= {MAX(0, V(LDX1, GND))} CL2 LDG2 LDX2 1p RL2 LDX2 GND 50k EL2 LDY2 GND VALUE= {MAX(0, -V(LDX2, GND))} CL3 LDG3 LDX3 1p RL3 LDX3 GND 50k EL3 LDY3 GND VALUE= {MAX(0, -V(LDX3, GND))} CG1 LDY1 DG1 22p LG1 DG1 DG2 220n RG1 DG2 DG3 100 RG2 DG3 GND 6 CG2 DG3 GND 2.2n LG2 DG3 GND 2.2n EGL DGL GND VALUE= {V(DG3, GND)} CG3 LDY2 DG4 22p LG3 DG4 DG5 220n RG3 DG5 DG3 300 CG4 LDY3 DG6 22p LG4 DG6 DG7 220n RG4 DG7 DG3 1k .MODEL R_RES_6 RES ( TCE=-3.7) .ENDS .SUBCKT DAC1 VOUT VREF D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 WR LDAC LDACH VDD DGND AGND DGL + PARAMS: FS_err=-0.1 FS_TC=-45m Zero_err=-0.15 Zero_TC=-18m Offset_err=-0.05 Offset_TC=-8m R_base=5k .PARAM RR = {R_base*4} .PARAM RR2 = {R_base*8} .PARAM Cout = 2.74p .PARAM C_glitch = 85f .PARAM T_glitch = 82n RTEMP NTEMP AGND R_RES_1 1k GTEMP AGND NTEMP VALUE= {1m} .MODEL R_RES_1 RES ( TC1=1m ) EPOG POG AGND TABLE {V(VDD, AGND)} = (0 0) (635m 14.3m) (714m 41.6m) (762m 46.8m) (790m 46.8m) (800m 0) EVLIM VLIM AGND VALUE= {LIMIT(V(VDD, AGND), 0, 2)} RPOR VLIM VPOR 1MEG CPOR VPOR AGND 5n SWPOG POG VOUT VPOR AGND S_VSWITCH .MODEL S_VSWITCH VSWITCH (RON=1m ROFF=100T VON=0.95 VOFF=1.05) RN1 VDD N1 50k RN2 ANGD N1 50k RN3 VDD N2 50k RN4 ANGD N2 50k COUTX VOUTX AGND 1p ROUTX VOUTX VOUTY 5k COUTY VOUTY AGND 1p EOFS VOUTZ VOUTY VALUE= { V(N1, N2) + V(AGL, AGND) + MAX(-V(VOUTY, AGND), (Zero_err/65536 + Zero_TC*(V(NTEMP, AGND)-1)/1k)*V(VREF,AGND) ) + (Offset_err/65536 + Offset_TC*(V(NTEMP, AGND)-1)/1k)*V(VREF,AGND) } EGL VOUTQ AGND VALUE= {V(VOUTZ, DGL)} CGL VOUTQ VOUT 10p RFB VOUT VOUTF 2k CCFF VOUT VOUTF 100p CFB VOUTFF AGND 20p RFF VOUTF VOUTFF 7k XAMP VOUTZ VOUTF VOUT VDD AGND AGND NC Opamp RREF VREF AGND 60k CREF VREF AGND 2.4p RREFQ VREF VREFQ 10k CREFQ VREFQ AGND 100f EREFZ VREFZ AGND VALUE= {V(VREFQ, AGND)} RREFY VREFZ VREFY 8k CREFY VREFY AGND 25.3p EREF VREFX AGND VALUE= {V(VREFY, AGND) * (1+((FS_err-Zero_err)/65536 + (FS_TC-Zero_TC)*(V(NTEMP, AGND)-1)/1k))} XU28 LLD0 6 8 DGND VDD AGND VREFX DAC_SW_0 XU27 LLD1 10 8 DGND VDD AGND VREFX DAC_SW_0 XU26 LLD2 12 8 DGND VDD AGND VREFX DAC_SW_0 XU25 LLD3 14 8 DGND VDD AGND VREFX DAC_SW_0 XU24 LLD4 16 8 DGND VDD AGND VREFX DAC_SW_0 XU23 LLD5 18 8 DGND VDD AGND VREFX DAC_SW_0 XU22 LLD6 20 8 DGND VDD AGND VREFX DAC_SW_0 XU21 LLD7 22 8 DGND VDD AGND VREFX DAC_SW_0 XU20 LLD8 24 8 DGND VDD AGND VREFX DAC_SW_0 XU19 LLD9 26 8 DGND VDD AGND VREFX DAC_SW_0 XU18 LLD10 28 8 DGND VDD AGND VREFX DAC_SW_0 XU17 LLD11 30 8 DGND VDD AGND VREFX DAC_SW_0 XU16 LLD12 32 8 DGND VDD AGND VREFX DAC_SW_0 XU15 33 34 8 DGND VDD AGND VREFX DAC_SW_0 XU14 35 36 8 DGND VDD AGND VREFX DAC_SW_0 XU13 37 38 8 DGND VDD AGND VREFX DAC_SW_0 XU12 LLD15 40 8 DGND VDD AGND VREFX DAC_SW_0 XU11 41 42 8 DGND VDD AGND VREFX DAC_SW_0 XU10 43 44 8 DGND VDD AGND VREFX DAC_SW_0 XU9 45 46 8 DGND VDD AGND VREFX DAC_SW_0 R39 DGND 8 1G R38 VDD 8 1G R33 51 52 {RR} R32 6 52 {RR2} R31 53 51 {RR} R30 10 51 {RR2} R29 54 53 {RR} R28 12 53 {RR2} R27 55 54 {RR} R26 14 54 {RR2} R25 56 55 {RR} R24 16 55 {RR2} R23 57 56 {RR} R22 18 56 {RR2} R21 58 57 {RR} R20 20 57 {RR2} R19 59 58 {RR} R18 22 58 {RR2} R17 60 59 {RR} R16 24 59 {RR2} R15 61 60 {RR} R14 26 60 {RR2} R13 62 61 {RR} R12 28 61 {RR2} R11 63 62 {RR} R10 30 62 {RR2} R9 VOUTX 63 {RR} R8 32 63 {RR2} R7 34 VOUTX {RR2} R6 36 VOUTX {RR2} R5 38 VOUTX {RR2} R4 40 VOUTX {RR2} R3 42 VOUTX {RR2} R2 44 VOUTX {RR2} R1 46 VOUTX {RR2} U8 AND(3) VDD DGND LLD15 LLD14 LLD13 45 U_GATE IO_HCT U7 AND(2) VDD DGND LLD15 LLD14 43 U_GATE IO_HCT U6 AND(2) VDD DGND LLD15 66 41 U_GATE IO_HCT U5 OR(2) VDD DGND LLD14 LLD13 66 U_GATE IO_HCT U4 OR(2) VDD DGND LLD15 67 37 U_GATE IO_HCT U3 AND(2) VDD DGND LLD14 LLD13 67 U_GATE IO_HCT U2 OR(2) VDD DGND LLD15 LLD14 35 U_GATE IO_HCT U1 OR(3) VDD DGND LLD15 LLD14 LLD13 33 U_GATE IO_HCT XL0 VDD VDD WR D0 LD0 LDB0 VDD DGND DLTCH_P XL1 VDD VDD WR D1 LD1 LDB1 VDD DGND DLTCH_P XL2 VDD VDD WR D2 LD2 LDB2 VDD DGND DLTCH_P XL3 VDD VDD WR D3 LD3 LDB3 VDD DGND DLTCH_P XL4 VDD VDD WR D4 LD4 LDB4 VDD DGND DLTCH_P XL5 VDD VDD WR D5 LD5 LDB5 VDD DGND DLTCH_P XL6 VDD VDD WR D6 LD6 LDB6 VDD DGND DLTCH_P XL7 VDD VDD WR D7 LD7 LDB7 VDD DGND DLTCH_P XL8 VDD VDD WR D8 LD8 LDB8 VDD DGND DLTCH_P XL9 VDD VDD WR D9 LD9 LDB9 VDD DGND DLTCH_P XL10 VDD VDD WR D10 LD10 LDB10 VDD DGND DLTCH_P XL11 VDD VDD WR D11 LD11 LDB11 VDD DGND DLTCH_P XL12 VDD VDD WR D12 LD12 LDB12 VDD DGND DLTCH_P XL13 VDD VDD WR D13 LD13 LDB13 VDD DGND DLTCH_P XL14 VDD VDD WR D14 LD14 LDB14 VDD DGND DLTCH_P XL15 VDD VDD WR D15 LD15 LDB15 VDD DGND DLTCH_P XLL0 VDD VDD LDAC LD0 LLD0 LLDB0 VDD DGND DLTCH_P XLL1 VDD VDD LDAC LD1 LLD1 LLDB1 VDD DGND DLTCH_P XLL2 VDD VDD LDAC LD2 LLD2 LLDB2 VDD DGND DLTCH_P XLL3 VDD VDD LDAC LD3 LLD3 LLDB3 VDD DGND DLTCH_P XLL4 VDD VDD LDAC LD4 LLD4 LLDB4 VDD DGND DLTCH_P XLL5 VDD VDD LDAC LD5 LLD5 LLDB5 VDD DGND DLTCH_P XLL6 VDD VDD LDAC LD6 LLD6 LLDB6 VDD DGND DLTCH_P XLL7 VDD VDD LDAC LD7 LLD7 LLDB7 VDD DGND DLTCH_P XLL8 VDD VDD LDAC LD8 LLD8 LLDB8 VDD DGND DLTCH_P XLL9 VDD VDD LDAC LD9 LLD9 LLDB9 VDD DGND DLTCH_P XLL10 VDD VDD LDAC LD10 LLD10 LLDB10 VDD DGND DLTCH_P XLL11 VDD VDD LDAC LD11 LLD11 LLDB11 VDD DGND DLTCH_P XLL12 VDD VDD LDAC LD12 LLD12 LLDB12 VDD DGND DLTCH_P XLL13 VDD VDD LDAC LD13 LLD13 LLDB13 VDD DGND DLTCH_P XLL14 VDD VDD LDAC LD14 LLD14 LLDB14 VDD DGND DLTCH_P XLL15 VDD VDD LDAC LD15 LLD15 LLDB15 VDD DGND DLTCH_P XLH12 VDD VDD LDACH LD12 LHD12 LHDB12 VDD DGND DLTCH_P XLH13 VDD VDD LDACH LD13 LHD13 LHDB13 VDD DGND DLTCH_P XLH14 VDD VDD LDACH LD14 LHD14 LHDB14 VDD DGND DLTCH_P XLH15 VDD VDD LDACH LD15 LHD15 LHDB15 VDD DGND DLTCH_P EAGL AGL1 AGND VALUE= { (ABS(V(LLD15, LHD15))*0.5 + ABS(V(LLD14, LHD14))*0.25 + ABS(V(LLD13, LHD13))*0.125 + ABS(V(LLD12, LHD12))*0.0625) * 200u } RAGL AGL1 AGL2 1k CAGL AGL2 AGND 300p RAGL2 AGL2 AGL 10k CAGL2 AGL AGND 30p .MODEL U_GATE UGATE( TPLHTY=0 TPHLTY=0 ) .MODEL R_RES_5 RES ( TCE=-0.695555 ) .ENDS .SUBCKT DAC_SW_0 E Y VMID DGND VDD GND IOUT XSW1 E Y VMID DGND VDD GND IOUT DAC_SW0 .ENDS .SUBCKT DAC_sw0 E Y VMID VSS VDD GND IOUT XU2 E 8 VDD VSS INV + PARAMS: DLH=2N DHL=2N SW2 Y GND 8 VMID S_VSWITCH_1 SW1 Y IOUT 8 VMID S_VSWITCH_2 SWC VCAP IOUT 8 VMID S_VSWITCH_2 CVCAP VCAP GND 2.285p .MODEL S_VSWITCH_1 VSWITCH (RON=1m ROFF=100T VON=100M VOFF=-100M) .MODEL S_VSWITCH_2 VSWITCH (RON=1m ROFF=100T VON=-100M VOFF=100M) .ENDS .SUBCKT DLTCH_P PREB CLRB GATE D Q QB DPWR DGND + PARAMS: DLH = 0 DHL = 0 U1 DLTCH(1) DPWR DGND PREB CLRB GATE + D Q QB + T_DLTCH IO_HC .MODEL T_DLTCH UGFF( TPPCQLHTY = {DLH} TPGQLHTY = {DLH} + TPPCQHLTY = {DHL} TPGQHLTY = {DHL} ) .ENDS .SUBCKT INV IN OUT DPWR DGND + PARAMS: DLH = 0 DHL = 0 * XU1 IN DGND OUT DPWR DGND CompInvD + PARAMS: RIN=1E12 ROUT=10 DELAYLH={DLH} DELAYHL={DHL} VOUTH=5 VOUTL=0 VTHRES=2.5 .ENDS .Subckt CompInvD IN1+ IN1- OUT PWR GND + PARAMS: RIN=1E12 ROUT=10 DELAYLH=10N DELAYHL=10N VOUTH=5 VOUTL=0 VTHRES=2.5 * .PARAM RDEL = {IF ( (ROUT < 1), 1, ROUT ) } .PARAM COUT={(DELAYLH + DELAYHL)/2/(0.693*RDEL)} .PARAM RDELHL = {DELAYHL/(0.693*COUT)} .PARAM RDELLH = {DELAYLH/(0.693*COUT)} RINP1 IN1+ GND {RIN} RINM1 IN1- GND {RIN} EOUT OUT GND VALUE= { IF ( (V(IN1+,IN1-) > 0.5*V(PWR,GND)), *+ VOUTL + RDELHL*I(EOUT), VOUTH + RDELLH*I(EOUT) ) } + RDELHL*I(EOUT), V(PWR,GND) + RDELLH*I(EOUT) ) } COUT OUT GND {COUT} .Ends CompInvD .SUBCKT Opamp INP INN OUT AVDD GND PORI POROi VPSref 17 GND 5 VS2 0 19 600M VS1 18 0 600M XU3 0 0 VOST_0 + PARAMS: OFFS=0.05M OFFS_ED=3U XOUTA INN Bias AVDD POROi GND Vt0p Vt0 VnR Plus OUT Vn Output_0 Rn2 VnR 0 1.206582MEG XBiasOut AVDD GND Bias Vt0p Vt0 VOCM PORI POROi Bias_0 Rn1 VnR 0 1.206582MEG Gpsn INP Plus POLY(4) Veps 0 Vn 0 VnR 0 0 0 0 0 6M 400M 500M R2 INP Plus 1 R11ops 16 0 999 L1ops 16 0 158.995788U IC=0 R1ops Veps 16 1 G1ops 0 Veps 17 AVDD 500N XD10 18 Vn D_DNOISE_0 XD9 Vn 19 D_DNOISE_0 .ENDS .SUBCKT Output_0 Neg Bias VDD2 POR GND2 Vt0p Vt0 VnR Plus OUT Vn VAM1 25 26 ; Current Arrow VOLo GND2 VLo 1.189986 VOHi VHi GND2 1.189986 RO2 27 OUT 1.5 RO1 OUT 25 1.5 XD5 VGP Vt0p2 D_LIM1_0 XD3 Vt02 VGN D_LIM1_0 GVCCS2 GND2 Vt02 VDD2 Vt0p 1.2 GVCCS1 Vt0p2 VDD2 VDD2 Vt0p 1.2 R5 Vt02 GND2 1 R4 VDD2 Vt0p2 1 GVnp OUT 27 POLY(2) Vn 0 VnR 0 0 2M 60M GVnn 25 OUT POLY(2) Vn 0 VnR 0 0 333U 10M R83 VV GND2 63.493636MEG TC=5.0092M,-15.1437U Gdn1 Vt0 VGN VALUE = {(V(POR,0)*LIMIT(25.132741U*V(VV,GND2),-6.96U,6.96U))} Lf2 30 31 10N IC=0 Rf2 30 OUT 9.947184K Co21 Plus Neg 500F IC=0 RPAR=1T G23 VV GND2 VALUE = {(V(POR,0)*LIMIT(31.415927U*V(Plus,Neg),-8.7U,8.7U))} RG23l 0 0 8.7U RG23 0 0 31.415927U R3 VDD2 32 1 GVMP2 32 VDD2 VALUE = {(2.6153)*V(VDD2,Vt0p)-544.2461M} R2 33 GND2 1 GVMN2 GND2 33 VALUE = {(2.0502)*V(Vt0,GND2)-544.2461M} C1 VV GND2 1F IC=0 RGdn1ll 0 0 6.96U RGdn1lh 0 0 6.96U RGdn1 0 0 25.132741U Gdn2 Vt0p VGP VALUE = {(V(POR,0)*LIMIT(25.132741U*V(VV,GND2),-6.96U,6.96U))} Rf1 34 OUT 198.943679 Cf4 VGP 34 2P IC=0 Cf5 34 VGN 2P IC=0 XT3 27 VGP VDD2 VDD2 Q_PMOS_OUT_L1_0 + PARAMS: M=8 W=14U L=1U XT1 26 VGN GND2 GND2 Q_NMOS_OUT_L1_0 + PARAMS: M=8 W=47U L=1U XD6 32 VGP D_LIM1_0 XD4 VGN 33 D_LIM1_0 XD2 VV VHi D_LIM1_0 XD1 VLo VV D_LIM1_0 C33 VV 31 5P IC=0 Ro23 GND2 Plus 1T Ro22 Neg GND2 1T Ro21 Neg Plus 1G Rdn2 VGP Vt0p 79.367045MEG Rdn1 VGN Vt0 79.367045MEG Co23 GND2 Plus 500F IC=0 RPAR=1T Co22 Neg GND2 500F IC=0 RPAR=1T .ENDS .SUBCKT Bias_0 VDD2 GND2 Bias Vt0p Vt0 VOCM PORI POROi VS2 37 36 900M VCIb1 35 38 ; Current Arrow GVMP1 Vt0p VDD2 VALUE = {V(POROi,GND2)*V(VDD2,35)} GVMN1 GND2 Vt0 VALUE = {V(POROi,GND2)*V(36,GND2)} C1 POROi GND2 30N R5 POROi GND2 100K GPORO GND2 POROi VALUE = {10.0E+0*(LIMIT(I(VCIB1),4.5U,5.5U)-4.5U)} XT4 VT1 Vt0 GND2 GND2 Q_NMOS_OUT_L1_1 + PARAMS: M=5 W=10.5U L=1U R6 37 36 1MEG R4 Vt0 GND2 1 R1 VDD2 Vt0p 1 XD1 37 38 D_LIM1_0 XT3 36 36 GND2 GND2 Q_NMOS_OUT_L1_0 + PARAMS: M=4 W=10U L=1U XT2 35 35 VDD2 VDD2 Q_PMOS_OUT_L1_0 + PARAMS: M=4 W=3U L=1U GIb2 GND2 Bias VALUE = {IF(V(PORI,GND2)<1.4,(28.0M*V(VDD2,GND2)+925.0M),0)} Rb3 Bias GND2 1 TC=1.685482M R3 36 GND2 10MEG R2 VDD2 35 10MEG Rsp1 VDD2 VT1 709.258552 GIb1 38 36 Bias GND2 10U Rpsrr1 38 36 10MEG .ENDS .SUBCKT VOST_0 1 2 PARAMS: Offs=0.05m Offs_ED=3u * Offset error ±0.05 ±4 mV * Offset error drift 3 µV/°C .PARAM I0 = 1M .PARAM DVOS_DT = { Offs_ED } .PARAM VOFFS = {OFFS + 55.5U + 2*DVOS_DT} .PARAM R0 = {VOFFS/I0} .PARAM TC1= {DVOS_DT/R0/I0} R2 1 2 RMOD2 {R0} I2 1 2 {I0} .MODEL RMOD2 RES (TC1={TC1} TC2=0 TCE=0) .ENDS .SUBCKT D_DNOISE_0 1 2 D1 1 2 DD .MODEL DD D( IS=1.15e-21 N=1.0 AF=1 KF=20.0506e-15) .ENDS D_D .SUBCKT D_LIM1_0 1 2 D1 1 2 D_Lim1 .ENDS .SUBCKT Q_PMOS_OUT_L1_0 D G S B PARAMS: M = 1 W = 100U L = 10U M1 D G S B Q_PMOS_OUT_L1 W = {W} L = {L} M = {M} .MODEL Q_PMOS_OUT_L1 PMOS (LEVEL=1 KP= 388.4787u VTO=-0.7 RDS=1.8MEG LAMBDA=10m PHI = 0.6) .ENDS .SUBCKT Q_NMOS_OUT_L1_0 D G S B PARAMS: M = 1 W = 100U L = 10U M1 D G S B Q_NMOS_OUT_L1 W = {W} L = {L} M = {M} .MODEL Q_NMOS_OUT_L1 NMOS (LEVEL=1 KP= 388.4787u VTO=0.7 RDS=1.8MEG LAMBDA=10m PHI = 0.6) .ENDS .SUBCKT Q_NMOS_OUT_L1_1 D G S B PARAMS: M = 1 W = 100U L = 10U M1 D G S B Q_NMOS_OUT_L1 W = {W} L = {L} M = {M} .MODEL Q_NMOS_OUT_L1 NMOS (LEVEL=1 KP= 388.4787u VTO=0.7 RDS=1.8MEG LAMBDA=100m PHI = 0.6) .ENDS .MODEL D_LIM1 D( IS=10F N=1.0 RS=100 XTI=0 AF=0 KF=0 EG=0.48)