This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

THS3491: modeled noise in simulation is 3x higher than theoretical

Part Number: THS3491
Other Parts Discussed in Thread: THS3001, , TINA-TI

Is  the THS3491 simulation model supposed to be able to do a reasonable job of modelling noise ?   I ask because I'm getting 300% higher noise predictions in simulation from the THS3491 compared to THS3001. From my calculations using the datasheet values for the THS3001 at x2 gain I get pretty good correlation between calculation and simulation model, but for the THS3491 ditto between THS3001 and THS3491 using datasheet vales but enter the simulation model noise is way off 3x higher. Is this a known issue ? Any workarounds ? Would really like to be able to get some good simulation results for noise !

  • morning Steve, 

    I was working on model tests anyway here, which one are you using? there is RGT and DDA models and updates over time, a file attach would be best

  • Morning Mike, I'm using the RGT model (see below)

    *****************************************************************************
    ** This model is designed as an aid for customers of Texas Instruments.
    ** TI and its licensors and suppliers make no warranties, either expressed
    ** or implied, with respect to this model, including the warranties of
    ** merchantability or fitness for a particular purpose.  The model is
    ** provided solely on an "as is" basis.  The entire risk as to its quality
    ** and performance is with the customer.
    *****************************************************************************
    *
    ** Released by: WEBENCH(R) Design Center, Texas Instruments Inc.
    * Part: THS3491RGT
    * Date: 2/16/18
    * Model Type: All In One
    * Simulator: TINA-TI
    * Simulator Version: 9.3.150.328 SF-TI
    * EVM Order Number: N/A
    * EVM Users Guide: N/A
    * Datasheet: SBOS875 - August 2017
    *
    * Model Version: 1.0
    *
    *****************************************************************************
    *
    * Updates:
    *
    * Version 1.0 : Release to Web
    *
    *
    *****************************************************************************
    * Notes:
    * 1. The model aligns with the data sheeet for +15V, -15V operation
    *    for the following parameters at T =25C:
    *    BW for G = 5 V/V, Slew rate, Noise, VOUT versus IOUT ,
    *    CMRR, PSRR, Enable time, Disable Time, VOS, IIB, VOH, VOL
    * 2. The PD threshold is 1V above the REF voltage
    * 3. The model does not duplicate the real device operation over temperature.
    * 4. The model may not align with device operation at power supplies lower than
    *    +15V/-15V or 30V.
    *****************************************************************************
    *
    *
    .SUBCKT THS3491RGT INP INN FB OUT PD_not VCC VEE GND
    RFB           OUT FB 1u
    VREF          REF GND 0
    R_R23         0 MID  1k TC=0,0
    G_G5         INP GNDF INP GNDF 2e-5
    R_R9         CNTRL_AND_SHDN IN_COMP  1000 TC=0,0
    E_E9         N1561220 GND INPUTP_ICMR GND 0.9992
    R_R15         INPUTN_GBW GNDF  0.001 TC=0,0
    D_D3         GND N1561570 D_IN_CLMP
    E_E5         INPUTP_CMRR INPUTP_ICMR OUT_CMRR GNDF 0
    R_R4         INN INPUT_OUTN  0.1 TC=0,0
    X_U119         N_AND_SHDN SHDN GNDF GND N1561298 NAND2
    C_C6         GNDF IN_COMP  0.07n  TC=0,0
    C_C10         N1623290 INPUTN_ICMR  20p  TC=0,0
    X_U124         INPUTP_CMRR N1563258 VICM VCC VEE GNDF VOS
    D_D2         N1561570 GND D_IN_CLMP
    X_U120         N1561298 N1561298 GNDF GND CNTRL_AND_SHDN NAND2
    R_R19         REF 0  1e6 TC=0,0
    R_R24         FULL N1560624  1 TC=0,0
    X_U105         INN_OUT_CNTRL INN VCC VEE GNDF DEV_DIS
    X_U118         AND_CNTRLS AND_CNTRLS GNDF GND N_AND_SHDN NAND2
    R_R21         EN N1560848  1 TC=0,0
    R_R18         N1622379 N1561294  15 TC=0,0
    R_R30         N1622379 N1623290  50 TC=0,0
    E_E4         INPUTN_CMRR INPUTN_ICMR OUT_CMRR GNDF 0
    D_D1         IN_COMP CNTRL_AND_SHDN Dpdn
    E_E3         GNDF 0 N1561272 N1561036 0.5
    D_D4         GND N1561616 D_IN_CLMP
    X_U108         GNDF INPUT_OUTN femt_inv
    E_E1         N1561272 0 VCC 0 1
    E_E10         N1560610 GNDF INPUT_TF GNDF 2
    C_C7         GNDF N1560200  457f  TC=0,0
    *C_C7         GNDF N1560200  559f  TC=0,0
    R_R20         PD_NOT 0  1e6 TC=0,0
    X_U114         INP_OUT_CNTRL INN_OUT_CNTRL GNDF GND AND_CNTRLS NAND2
    X_U121         VCC VEE INPUT_OUTN INPUTN_CMRR GNDF PSRR
    D_D5         N1561616 GND D_IN_CLMP
    R_R10         GNDF EN  10k TC=0,0
    C_C12         INPUTN_ICMR GNDF  1.2p  TC=0,0
    X_U111         INPUTP_CMRR GNDF VICM VCC VEE N1561920 GNDF IIBP
    X_U106         INP_OUT_CNTRL INP VCC VEE GNDF DEV_DIS
    X_U104         EN IN_COMP N1562372 GNDF COMPARATOR
    R_R25         N1560610 N1560200  50 TC=0,0
    X_U126         INPUT_TF INPUTP_GBW INPUTN_GBW FULL EN VCC VEE GNDF
    +  gbw_slew_ovrdrv_lim
    X_ZOUT         INPUT_AMMETER  OUTPUT_CLAMP ZOL
    E_E2         N1561036 0 VEE 0 -1
    X_U127          VCC VEE INPUT_VCLAMP OUTPUT_CLAMP VIMON EN GNDF VOUTvsIOUT_NROS_SHDN
    L_L4         INPUTN_ICMR N1622379  3.5nH  
    R_R29         N1623290 INPUTN_ICMR  25 TC=0,0
    *C_C9         GNDF N1559782  4.7p  TC=0,0
    C_C9         GNDF N1559782  4p  TC=0,0
    V_V5         N1561920 GNDF 1Vdc
    R_R16         GNDF INPUTP_GBW  0.001 TC=0,0
    X_U112         VCC VEE N1560624 MID LOW N1560848 VIMON GNDF IQ_MODES
    X_F1    N1561220 N1561294 INPUTP_GBW INPUTN_GBW DEV_SCH3_F1
    R_R13         OUTPUT_TF INPUT_VCLAMP  1 TC=0,0
    L_L2         N1560200 N1559762  3.29nH  
    *L_L2         N1560200 N1559762  4.018nnH   
    X_U110         INPUTN_CMRR GNDF VICM VCC VEE N1562100 GNDF IIBN
    V_V6         N1562100 GNDF 1Vdc
    E_E12         OUTPUT_TF GNDF N1559782 GNDF 1
    R_R22         0 LOW  1k TC=0,0
    C_C8         GNDF N1559762  2.99p  TC=0,0
    *C_C8         GNDF N1559762  3.65p  TC=0,0
    X_U122         VICM INP INN GNDF VICM
    R_R17         INPUTN_GBW INPUTP_GBW  0.002 TC=0,0
    X_U107         N1563258 GNDF femt
    E_E11         N1559770 GNDF N1559762 GNDF 1.052
    X_U113         REF PD_NOT VCC VEE GND GNDF FULL MID LOW SHDN MODE_CNTRL_2BITS
    R_R26         GNDF N1559762  50 TC=0,0
    L_L1         OUT_CMRR N1563334  8uH  
    V_V4         N1562372 GNDF 0.5Vdc
    *R_R28         GNDF N1559782  280 TC=0,0
    R_R28         GNDF N1559782  200 TC=0,0
    G_G1         OUT_CMRR GNDF VICM GNDF 0
    C_C11         GNDF INP  1.5p  TC=0,0
    X_U123         INPUT_OUTP N1563258 vnse
    R_R27         N1559770 N1559776  20 TC=0,0
    *R_R27         N1559770 N1559776  26.1 TC=0,0
    X_U103         INPUT_AMMETER OUT VIMON GNDF AMETER
    R_R3         INP INPUT_OUTP  0.1 TC=0,0  
    *L_L3         N1559776 N1559782  3.6nH
    L_L3         N1559776 N1559782  2nH
    R_R5         N1563334 GNDF  1 TC=0,0
    .model D_IN_CLMP d is=1e-014 n=0.02 rs=1
    .MODEL Dpdn D IS=10f
    .ENDS
    *$
    .subckt DEV_SCH3_F1 1 2 3 4  
    F_F1         3 4 VF_F1 -1000
    VF_F1         1 2 0V
    .ends DEV_SCH3_F1
    *$
    *
    *
    .SUBCKT NAND2 A B GNDF GND Y
    .PARAM VTHRESH = 0.5
    .PARAM VTRUE = 1
    .PARAM VFALSE = 0
    E_ABMGATE Y GNDF VALUE = {VTRUE - (IF((V(A,GNDF) > VTHRESH) &  (V(B,GNDF) > VTHRESH),VTRUE,VFALSE))}
    .ENDS
    *
    *
    .SUBCKT AND2 A B GNDF Y
    .PARAM VTHRESH = 0.5
    .PARAM VTRUE = 1
    .PARAM VFALSE = 0
    E_ABMGATE YINT GNDF VALUE = {IF((V(A,GNDF) > VTHRESH) &  (V(B,GNDF) > VTHRESH),VTRUE,VFALSE)}
    .ENDS
    *$
    *
    *
    .SUBCKT VOS OUT IN VICM VCC VEE GNDF
    .PARAM SCALE = 1e-6
    .PARAM DRIFT = 3u
    .PARAM VICM_SHIFT = 1u
    .PARAM VCC_SHIFT = 1u
    .PARAM VOS_TYP = 1000
    EDRIFT NDRIFT 0 VALUE = {DRIFT*(TEMP - 27)}
    ESHIFT NSHIFT 0 VALUE = {VICM_SHIFT*V(VICM,GNDF)}
    EVCC NVCC 0 VALUE = {V(VCC,VEE)}
    EVCCSHIFT NVCCSHIFT 0 VALUE = {VCC_SHIFT*V(NVCC)}
    EVOS OUT IN VALUE = {SCALE*(VOS_TYP + V(NDRIFT) + V(NSHIFT) + V(NVCCSHIFT))}
    .ENDS
    *$
    *
    *
    .SUBCKT dev_dis OUT_CNTRL IN VCC VEE GNDF
    .PARAM VSmax = 33
    .PARAM VSmin = 14
    .PARAM VINHR = 3.8
    *
    EIN1 NIN1 0 VALUE = {V(VCC,IN)}
    EIN2 NIN2 0 VALUE = {V(IN,VEE)}
    EVCC NVCC 0 VALUE = {V(VCC,VEE)}
    *
    EN1 N1 GNDF VALUE = {0.5*(1 + SGN(VSmax - V(NVCC)))}
    EN2 N2 GNDF VALUE = {0.5*(1 + SGN(V(NVCC) - VSmin))}
    EN3 N3 GNDF VALUE = {0.5*(1 + SGN(V(NIN1) - VINHR))}
    EN4 N4 GNDF VALUE = {0.5*(1 + SGN(V(NIN2) - VINHR))}
    EOUT OUT_CNTRL GNDF VALUE = {V(N1,GNDF)*V(N2,GNDF)*V(N3,GNDF)*V(N4,GNDF)}
    .ENDS
    *$
    *
    *
    .SUBCKT FEMT_INV 1 2
    .PARAM NLFF = 100000
    .PARAM FLWF = 100
    .PARAM NVRF = 20000
    .PARAM GLFF={PWR(FLWF,0.25)*NLFF/1164}
    .PARAM RNVF={1.184*PWR(NVRF,2)}
    .MODEL DVNF D KF={PWR(FLWF,0.5)/1E11} IS=1.0E-16
    I1 0 7 10E-3
    I2 0 8 10E-3
    D1 7 0 DVNF
    D2 8 0 DVNF
    E1 3 6 7 8 {GLFF}
    R1 3 0 1E9
    R2 3 0 1E9
    R3 3 6 1E9
    E2 6 4 5 0 10
    R4 5 0 {RNVF}
    R5 5 0 {RNVF}
    R6 3 4 1E9
    R7 4 0 1E9
    G1 1 2 3 4 1E-6
    C1 1 0 1E-15
    C2 2 0 1E-15
    C3 1 2 1E-15
    .ENDS
    *$
    *
    *
    .SUBCKT PSRR  VDD  VSS  VI  VO  GNDF
    .PARAM PSRRP = 82
    .PARAM PSRRN = 80
    .PARAM fpsrr = 1
    .PARAM PI = 3.141592
    .PARAM RPSRR = 1
    .PARAM GPSRRP = {PWR(10,-PSRRP/20)/RPSRR}
    .PARAM GPSRRN = {PWR(10,-PSRRN/20)/RPSRR}
    .PARAM LPSRR = {RPSRR/(2*PI*fpsrr)}
    .PARAM VCC_NOM = 24
    EVCC NVCC 0 VALUE = {ABS(V(VDD,0) - VCC_NOM/2)}
    EVSS NVSS 0 VALUE = {ABS(V(VSS,0) + VCC_NOM/2)}
    G1  0 1 NVCC 0 {GPSRRP}
    R1  1 2 {RPSRR}
    L1  2 0 {LPSRR}
    *
    G2  0 3 NVSS 0 {GPSRRN}
    R2  3 4 {RPSRR}
    L2  4 0 {LPSRR}
    G3  6 0 VALUE = {ABS(V(1,0))}
    G4  6 0 VALUE = {ABS(V(3,0))}
    R3  6 0 1
    E1  VO VI 6 0 1
    .ENDS
    *
    *
    *
    .SUBCKT IIBP OUT IN INP VCC VEE MODE GNDF
    .PARAM SCALE = 1u
    .PARAM IIB_LOW = 0
    .PARAM MAX_IIB_LOW = 0
    .PARAM DRIFT_LOW = 0
    *.PARAM IIB_HI = 1.5
    .PARAM IIB_HI = 1.5
    .PARAM MAX_IIB_HI = 10
    .PARAM DRIFT_HI = 0.015
    **
    EIIB_HI NIIB_HI 0 VALUE = {MAX(MIN((IIB_HI + DRIFT_HI*(TEMP - 27)),MAX_IIB_HI),-MAX_IIB_HI)}
    EIIB_LOW NIIB_LOW 0 VALUE = {MAX(MIN((IIB_LOW + DRIFT_LOW*(TEMP - 27)),MAX_IIB_LOW),-MAX_IIB_LOW)}
    ****
    GOUT IN OUT VALUE = {SCALE*((1-V(MODE,GNDF))*V(NIIB_LOW) + V(MODE,GNDF)*V(NIIB_HI))}
    **
    .ENDS
    *$
    *
    *
    .SUBCKT COMPARATOR OUT IN REF GNDF
    .PARAM VOUT_MAX = 1
    .PARAM VOUT_MIN = 0
    .PARAM GAIN = 1e4
    EOUT OUT GNDF VALUE = {MAX(MIN(GAIN*V(IN,REF),VOUT_MAX),VOUT_MIN)}
    .ENDS
    *$
    *
    *
    .SUBCKT GBW_SLEW_OVRDRV_LIM VO VIP VIM FULL SHDN VCC VEE GNDF
    ***  
    * FULL, MID, LOW are nodes that control BW modes.
    * For active state they should equal V(x,GNDF) = 1V where x = FULL,MID or LOW
    * The nodes should made active one at a time.
    ***
    .PARAM Aol = 140   
    .PARAM GBW_FULL = 22e10
    .PARAM SRP = 9000e6  
    .PARAM SRN = 9000e6
    .PARAM IT = 0.001
    .PARAM PI = 3.141592
    .PARAM IP = {IT*MAX(1,SRP/SRN)}
    .PARAM IN = {IT*MIN(-1,-SRN/SRP)}
    .PARAM CC = {IT*MAX(1/SRP,1/SRN)}
    **
    .PARAM FP_FULL = {GBW_FULL/PWR(10,AOL/20)}
    .PARAM RC_FULL = {1/(2*PI*CC*FP_FULL)}
    .PARAM GC_FULL = {PWR(10,AOL/20)/RC_FULL}
    **
    **
    GFULLp GNDF OUTG1pFULL VALUE = {MAX(MIN(GC_FULL*V(FULL,GNDF)*V(SHDN,GNDF)*V(VIP,VIM),IP),IN)}
    **
    **
    RG1pFULL OUTG1pFULL GNDF {RC_FULL}
    Cg1dpFULL OUTG1pFULL GNDF {CC} IC=0
    S1pFULLp OUTG1pFULL N1pFULLp OUTG1pFULL N1pFULLp SW1pFULLp
    S1pFULLn OUTG1pFULL N1pFULLn OUTG1pFULL N1pFULLn SW1pFULLn
    E1pFULLp N1pFULLp GNDF VALUE = {V(VCC,GNDF) - 1.3}
    E1pFULLn N1pFULLn GNDF VALUE = {V(VEE,GNDF) + 1.3}
    .MODEL SW1pFULLp VSWITCH RON = 200k ROFF = 1e9 VON = 0.1 VOFF = 0.0
    .MODEL SW1pFULLn VSWITCH RON = 200k ROFF = 1e9 VON = -0.1 VOFF = 0.0
    **
    **
    EHIZN NHIZN GNDF VALUE = {V(SHDN,GNDF)*(V(OUTG1pFULL,GNDF))}
    E1OUT VO GNDF VALUE = {MAX(MIN(V(NHIZN,GNDF), 100*V(VCC,GNDF)),100*V(VEE,GNDF))}
    **
    **
    .ENDS
    *$
    *
    *
    .SUBCKT ZOL OUT_ZOL IN_ZOL
    E_E7         N165882 0 N_SUM 0 1
    E_E3         AOL_ZO_IN 0 IN_ZOL OUT_ZOL 1
    C_C5         N181461 Z2  1000e-5p  TC=0,0
    R_R9         0 Z2  1k TC=0,0
    R_R6         OUT_E4_ZO OUT_ZOL  3600 TC=0,0
    E_E4         OUT_E4_ZO 0 N173483 0 1
    R_R8         N173483 N165882  1k TC=0,0
    R_R10         P1 N169815  1k TC=0,0
    G_G3         N_SUM 0 P1 0 -1
    E_E5         N176951 0 AOL_ZO_IN 0 100
    C_C7         0 P1  1.4p  TC=0,0
    G_G4         N_SUM 0 N176951 0 -1
    C_C4         N166300 Z1  762p  TC=0,0
    G_G6         N_SUM 0 P2 0 -1
    R_R7         0 Z1  1k TC=0,0
    C_C6         0 P2  0.531  TC=0,0
    R_R12         P2 N190211  10k TC=0,0
    G_G5         N_SUM 0 Z2 0 -1
    E_E6         N166300 0 AOL_ZO_IN 0 3100
    E_E8         N181461 0 AOL_ZO_IN 0 3100
    R_R5         0 N_SUM  1 TC=0,0
    E_E9         N169815 0 Z1 0 1
    E_E10         N190211 0 AOL_ZO_IN 0 3100
    R_R11         0 OUT_ZOL  360 TC=0,0
    .ENDS
    *
    *
    .SUBCKT vclamp_w_sense VI VO VDD VSS VIMON GNDF
    .PARAM ISC = 0.620
    .PARAM ROS = 160
    .PARAM REQ = 158
    E1P    N1P   GNDF VALUE = {V(VIMON,GNDF)*REQ}
    E2P    N2P   GNDF VALUE = {ISC*ROS-V(VDD,GNDF)}
    EHRPOS HRPOS GNDF VALUE = {MIN(V(N1P,GNDF),V(N2P,GNDF))}
    EHRNEG HRNEG GNDF VALUE = {MAX(V(VIMON,GNDF)*REQ,-ISC*ROS-V(VSS,GNDF))}
    EPCLIP  VDD_CLP GNDF VALUE = {V(VDD,GNDF) - 1.4 + V(HRPOS,GNDF)}
    ENCLIP  VSS_CLP GNDF VALUE = {V(VSS,GNDF) + 1.4 + V(HRNEG,GNDF)}
    ECLAMP  VO GNDF VALUE = {LIMIT(V(VI,GNDF), V(VSS_CLP,GNDF), V(VDD_CLP,GNDF))}
    .ENDS
    *$
    *
    *
    .SUBCKT VOUTvsIOUT_NROS_SHDN  VCC  VEE  VI  VO VIMON SHDN GNDF
    *
    .PARAM ISC_POS = 0.620
    .PARAM ISC_NEG = -0.620
    .PARAM IMAXLIN_POS = 0.540
    .PARAM IMAXLIN_NEG = -0.540
    .PARAM VOUTMAXLIN = 13.1
    .PARAM VOUTMINLIN = -13.1
    .PARAM VHR_VCC = -1.4
    .PARAM VHR_VEE = 1.4
    .PARAM VCC_DATASHEET = 15
    .PARAM VEE_DATASHEET = -15
    .PARAM VMID_DATASHEET = {(VCC_DATASHEET + VEE_DATASHEET)/2}
    .PARAM VHR_MAX_LINEAR = {VOUTMAXLIN - VCC_DATASHEET}
    .PARAM VHR_MIN_LINEAR = {VOUTMINLIN  - VEE_DATASHEET}
    ER1 NR1 GNDF VALUE = {(VOUTMAXLIN - (VCC_DATASHEET + VHR_VCC))/IMAXLIN_POS}
    ER2 NR2 GNDF VALUE = {(VOUTMINLIN - (VEE_DATASHEET + VHR_VEE))/IMAXLIN_NEG}
    EVOUT1pos NVOUT1_MAX GNDF VALUE = {(V(VCC,GNDF) + VHR_VCC) + V(NR1,GNDF)*V(VIMON,GNDF)}
    EVOUT1neg NVOUT1_MIN GNDF VALUE = {(V(VEE,GNDF) + VHR_VEE) + V(NR2,GNDF)*V(VIMON,GNDF)}
    EM1 NM1 GNDF VALUE = {(VOUTMAXLIN - VMID_DATASHEET)/(IMAXLIN_POS - ISC_POS)}
    EM2 NM2 GNDF VALUE = {(VOUTMINLIN - VMID_DATASHEET)/(IMAXLIN_NEG - ISC_NEG)}
    EVMID NVMID GNDF VALUE = {(V(VCC,GNDF) + V(VEE,GNDF))/2}
    E1 N1 GNDF VALUE = {V(VCC,GNDF) + VHR_MAX_LINEAR}
    E2 N2 GNDF VALUE = {V(VEE,GNDF) + VHR_MIN_LINEAR}
    EV1 NV1 GNDF VALUE = {V(NVMID,GNDF) + (V(N1,GNDF) - V(NVMID,GNDF))/(1 - IMAXLIN_POS/ISC_POS)}
    EV2 NV2 GNDF VALUE = {V(NVMID,GNDF) + (V(N2,GNDF) - V(NVMID,GNDF))/(1 - IMAXLIN_NEG/ISC_NEG)}
    EVOUT2pos NVOUT2_MAX GNDF VALUE = {V(NV1,GNDF) + V(VIMON,GNDF)*V(NM1,GNDF)}
    EVOUT2neg NVOUT2_MIN GNDF VALUE = {V(NV2,GNDF) + V(VIMON,GNDF)*V(NM2,GNDF)}
    EHRPOS HRPOS GNDF VALUE = {MIN(V(NVOUT1_MAX,GNDF),V(NVOUT2_MAX,GNDF))}
    EHRNEG HRNEG GNDF VALUE = {MAX(V(NVOUT1_MIN,GNDF),V(NVOUT2_MIN,GNDF))}
    *
    *** Clamp output if req'd
    ECLAMP  VO GNDF VALUE = {V(SHDN,GNDF)*MAX(MIN(V(VI,GNDF), V(HRPOS,GNDF)), V(HRNEG,GNDF))}
    **
    *
    .ENDS
    *
    *
    .SUBCKT IQ_MODES VCC VEE FULL MID LOW SHDN VIMON GNDF
    .PARAM IQ_FULL = 0.0168
    .PARAM IQ_MID = 0.0162
    .PARAM IQ_LOW = 0.0112
    .PARAM IQ_SHDN = 0.000670
    GIQ VCC VEE VALUE = {IQ_FULL*V(FULL,GNDF)*V(SHDN,GNDF) + IQ_MID*V(MID,GNDF)
    +  + IQ_LOW*V(LOW,GNDF) + IQ_SHDN*(1 - V(SHDN,GNDF))}
    *
    GOUTP VCC GNDF VALUE = {IF(V(VIMON,GNDF) > 0, V(VIMON,GNDF)*V(SHDN,GNDF),0)}
    GOUTN GNDF VEE VALUE = {IF(V(VIMON,GNDF) <= 0, V(VIMON,GNDF)*V(SHDN,GNDF),0)}
    .ENDS
    *$
    *
    *
    .SUBCKT IIBN OUT IN INN VCC VEE MODE GNDF
    .PARAM SCALE = 1u
    .PARAM IIB_LOW = 0
    .PARAM MAX_IIB_LOW = 0
    .PARAM DRIFT_LOW = 0
    .PARAM IIB_HI = 1
    .PARAM MAX_IIB_HI = 20
    .PARAM DRIFT_HI = 0.015
    **
    EIIB_HI NIIB_HI 0 VALUE = {MAX(MIN((IIB_HI + DRIFT_HI*(TEMP - 27)),MAX_IIB_HI),-MAX_IIB_HI)}
    EIIB_LOW NIIB_LOW 0 VALUE = {MAX(MIN((IIB_LOW + DRIFT_LOW*(TEMP - 27)),MAX_IIB_LOW),-MAX_IIB_LOW)}
    ****
    GOUT OUT IN VALUE = {SCALE*((1-V(MODE,GNDF))*V(NIIB_LOW) + V(MODE,GNDF)*V(NIIB_HI))}
    .ENDS
    *$
    *
    *
    .SUBCKT VICM OUT INP INN GNDF
    EOUT OUT GNDF VALUE = {0.5*(V(INP,GNDF) + V(INN,GNDF))}
    .ENDS
    *$
    *
    *
    .SUBCKT FEMT 1 2
    .PARAM NLFF = 100000
    .PARAM FLWF = 100
    .PARAM NVRF = 15000
    .PARAM GLFF={PWR(FLWF,0.25)*NLFF/1164}
    .PARAM RNVF={1.184*PWR(NVRF,2)}
    .MODEL DVNF D KF={PWR(FLWF,0.5)/1E11} IS=1.0E-16
    * END CALC VALS
    I1 0 7 10E-3
    I2 0 8 10E-3
    D1 7 0 DVNF
    D2 8 0 DVNF
    E1 3 6 7 8 {GLFF}
    R1 3 0 1E9
    R2 3 0 1E9
    R3 3 6 1E9
    E2 6 4 5 0 10
    R4 5 0 {RNVF}
    R5 5 0 {RNVF}
    R6 3 4 1E9
    R7 4 0 1E9
    G1 1 2 3 4 1E-6
    C1 1 0 1E-15
    C2 2 0 1E-15
    C3 1 2 1E-15
    .ENDS
    *$
    *
    *
    .SUBCKT MODE_CNTRL_2BITS B1_IN  B2_IN VCC VEE  GND GNDF FULL  MID  LOW  SHDN
    *                        REF  PD_NOT  VCC VEE  GND GNDF FULL  MID  LOW  SHDN
    .PARAM VTHRESH = 1.0
    .PARAM B1_POS_HR = -5
    .PARAM B1_NEG_HR = 0
    .PARAM VTRUE = 1
    .PARAM VFALSE = 0
    *
    EREF_HI NREF_HI GNDF VALUE = {0.5*(1 + SGN(V(VCC,B1_IN) + B1_POS_HR))}
    EREF_LOW NREF_LOW GNDF VALUE = {0.5*(1 + SGN(V(B1_IN,VEE) + B1_NEG_HR + 1p))}
    EPDz NPDZ GNDF VALUE = {0.5*(1 + SGN(V(B2_IN,B1_IN) - VTHRESH))}
    EPDZ_HI NPDZ_HI GNDF VALUE = {0.5*(1 + SGN(V(VCC,GNDF) - V(B2_IN,GNDF)))}
    EPDZ_LOW NPDZ_LOW GNDF VALUE = {0.5*(1 + SGN(V(B2_IN,GNDF) - V(VEE,GNDF)))}
    *
    EFULL FULL GNDF VALUE = {VTRUE}
    EMID MID GNDF VALUE = {VFALSE}
    ELOW LOW GNDF VALUE = {VFALSE}
    *ESHDN SHDN GNDF VALUE = {V(NREF_HI,GNDF)*V(NREF_LOW,GNDF)*V(NPDZ,GNDF)*V(NPDZ_HI,GNDF)*V(NPDZ_LOW,GNDF)}
    ESHDN SHDN GNDF VALUE = {V(NPDZ,GNDF)}
    *
    .ENDS
    *$
    *
    *
    .SUBCKT VNSE 1 2
    .PARAM NLF = 30
    .PARAM FLW = 10  
    .PARAM NVR = 1.7
    .PARAM GLF={PWR(FLW,0.25)*NLF/1164}
    .PARAM RNV={1.184*PWR(NVR,2)}
    .MODEL DVN D KF={PWR(FLW,0.5)/1E11} IS=1.0E-16
    * END CALC VALS
    I1 0 7 10E-3
    I2 0 8 10E-3
    D1 7 0 DVN
    D2 8 0 DVN
    E1 3 6 7 8 {GLF}
    R1 3 0 1E9
    R2 3 0 1E9
    R3 3 6 1E9
    E2 6 4 5 0 10
    R4 5 0 {RNV}
    R5 5 0 {RNV}
    R6 3 4 1E9
    R7 4 0 1E9
    E3 1 2 3 4 1
    C1 1 0 1E-15
    C2 2 0 1E-15
    C3 1 2 1E-15
    .ENDS
    *$
    *
    *
    .SUBCKT AMETER  VI  VO VIMON GNDF
    .PARAM GAIN = 1
    VSENSE VI VO DC = 0
    EMETER VIMON GNDF VALUE = {I(VSENSE)*GAIN}
    .ENDS
    *$

  • Are you using LTSpice or TINA? Can you show your test set up? Oddly, I am headed down porting the THS3491 into LTSpice also - not there yet. 

  • Hi Mike, for some reason it won't let me reply directly to your last post. I'm using LTSpice as I've been using it for years so can work much faster. Also I have a library of parts and designs I've built up over the years, ADI, LT, Maxim, TI, Apex etc so easier to stick with LTSpice and add new TI parts than try to learn/port everything to Tina.

  • So the THS3491 is coming up from a few places, I did run through some noise sims on the model you inserted above - it seems to have trouble simulating on the direct inverting current noise test (crashed TINA a number of times) but I changed freq sweep range and it ran, the original model also ran fine. If it runs, the current model seems to have the correct noise terms - if you are seeing higher output noise. 

    1. Provide your test setup circuit

    2. Maybe it is an LTSpice artifact. 

    3021.THS3491 model noise testing Jan2022.docx

    Oh and incidentally, the last I looked the THS3001 was not recommended for new design - it has a production variation issue that bites occasionally,