* NV6154_COMPLETE
*$
****************************************************************************
*
* NV6154 Spice Model
*
****************************************************************************
*
* This simulation model uses typical parameter values and it is based on
* a behavioral model. This model is supplied "as is" and the author
* provides no warranties, either expressed or implied, with respect
* to the operation and accuracy of the model within a customer circuit
* or system.
*
****************************************************************************
*
* NAVITAS SEMICONDUCTOR
* Part Nr:	NV6154A
* Author: Akos Hodany
* Date: 	11/27/2021
* Model Type: SPICE (LTspice / Pspice compatible)
* Model Version: v1.0
*
* Revision notes:
*
* v1.0 - Initial version (source: NV6134A v10)
*
* Changes:
* - GaN device
* - VCC UVLO Threshold and hysteresis, minor functional updarte(E_B3)
* - R4=120k (VDD=6.2V nom.)
* - Logic input threshold and hysteresis
* - IQvcc Quiescent current and quiscent standby current
* - CS gain= 1/2240
* - VISAT=6V replaced by VOCPTH=1.9V
* - EN pin renamed to STBY
* - Timing adjustments: STBY (Logic), propagation delays (GDRV)
****************************************************************************
*
* NV6154 Top level
*
****************************************************************************
.SUBCKT NV6154 VCC VDD 5V STBY PWM CS SGND D S
.PARAM VCCTH=7.9 VCCHYS=1.2 VOCPTH=1.9 CSGAIN=446.43u VITH=1.85 VIHYS=1.3 OTP=165 IQCC=550u IQCCSTBY=275u
XU10 SGND DPWR EN0 PWM0 DRV EN_OUT OC nv6154_logic_v1
XU1 N012 N013 OC VCC SGND COMP_HYST_VAR3 PARAMS: VHIGH=5 VLOW=0 VHYS=10m
V6 N013 SGND {VOCPTH}
XU4 VDDREF N005 VCC VDDINT SGND SGND NV_OPA
R1 N010 N005 5k
C1 VDDINT N010 1n
C2 VDDINT N005 100p
R2 VDDINT VDD 300
R3 N005 VDD 10k
C3 VDD SGND 10p
C4 PWM SGND 1p
C5 VDDREF SGND 10p
R5 VCC SGND 1000Meg
G_B1 SGND VDDREF VALUE {IF(V(OTPV,SGND)<2.5,100u*min(V(VCCOK,SGND),1),0)}
G_B2 VCC SGND VALUE {max(tanh(max(V(VCC,SGND),0))*(IQCCSTBY+(IQCC-IQCCSTBY)*(1+tanh(5*V(EN_OUT,SGND)-5))/2), 0)}
R4 VDDREF REF 12k
XU5 VCC N001 VCCOK VCC SGND COMP_HYST_VAR3 PARAMS: VHIGH=5 VLOW=0 VHYS={VCCHYS}
V1 N001 SGND {VCCTH}
XU6 REF2 N002 VCC N009 SGND SGND NV_OPA
R6 N011 N002 10k
C6 N009 N011 500p
C7 N009 N002 200p
R7 N009 N004 20
R8 REF SGND 50k
R9 N004 N002 20k
XU7 PWM N014 PWM0 DPWR SGND COMP_HYST_VAR3 PARAMS: VHIGH=5 VLOW=0 VHYS={VIHYS}
E_B3 DPWR SGND VALUE {V(REF,SGND)*IF(V(VCCOK,SGND)>1,1,0)}
G_B4 SGND CS VALUE {{CSGAIN}*max(I(Vx),0)}
Vx D N012 0
D1 CS N015 DBODY
V5 N014 SGND {VITH}
C8 STBY SGND 1p
XU8 STBY N014 EN0 DPWR SGND COMP_HYST_VAR3 PARAMS: VHIGH=5 VLOW=0 VHYS={VIHYS}
XU3 G DRV S VDD NV6154_DRV
D2 N006 N005 DBODY
R10 VDD N006 1k
D3 N003 N002 DBODY
R11 N004 N003 1k
E_B6 N015 SGND VALUE {max(V(VDDINT,SGND)-0.5,0)}
C9 CS SGND 10pF
R12 G SGND 17k
XU2 N012 G S NV6154_FET
VREFM N004 5V 0
E_B7 REF2 SGND VALUE {max(V(REF,SGND)-1k*max((I(VREFM)-20m),0),0)}
R901 OTPV SGND 10Meg
R902 VCCOK SGND 10Meg
R903 EN0 SGND 10Meg
R904 OC SGND 10Meg
R905 STBY SGND 10Meg
E_B8 OTPV SGND VALUE {if({TEMP}<{OTP},0,5)}
.ENDS NV6154

****************************************************************************
*
* NV6154 GaN HEMT
*
****************************************************************************
.SUBCKT NV6154_FET D G S
.PARAM Ipk=11.02 TCIPK=-0.00293 Vpk0=2  dVpk=2 vpkalpha=0.7 P10=1 P1s=0.55 P1alpha=1 Alpha=0.35 TCA=0 TCVPK=0.004
+TCP1S=-0.00305455 VTHX=1.4 TCVTH=+0.00271 NORMTEMP=25 RD0=126m RG=326m Rs=1.5m TCRD=0.008 TCP10=-0.004 IDRo1=2.05
+TCIDRc1=-0.0046 IDRc1=2.5 IDRc2=1.2 C1=7.5 C2=0.75 C3=0.375 C4=98.888 C5=18 C6=40.7484 C7=55.5 C8=108.75
G_G3         D2 D0 VALUE { V(D2,D0)/max(V(RDT, 0),1n) }
E_ABM21         ILK 0 VALUE {  (abs(V(DTEMP))*V(DTEMP)/10+1)*10n*max(abs(V(D0,S0))*V(D0,S0),0)    }
R_R101         0 N153327  10Meg
E_ABM12         SUBTH 0 VALUE {  tanh(3*V(G0,S0))*(0.5*(1+tanh(2.2*(V(G0,S0)-V(VTHT)))))**2    }
G_G12         0 N165388 VALUE { 1n/1p*I(E_E102)/(V(cgd)+1m) }
C_C3         0 N164635  1n
E_ABM106         IDRVX 0 VALUE { V(IDRc1T)/(4*{IDRc2})+{IDRo1}    }
E_ABM22         CGS 0 VALUE { {C8}+ 0.5*({C7}- {C8})*(1+tanh(-1.5*(V(G0,S)-1.7)))    }
R_R2         D1 D3  0.1m
E_ABM24         CDS 0 VALUE { {C5} + 0.5*({C6}- {C5})*(1+tanh(-0.01*(V(D3,S)-140))) +
+0.5*({C4}- {C6})*(1+tanh(-0.07*(V(D3,S)-60)))    }
C_C4         0 N165388  1n
E_ABM104         IDRC1T 0 VALUE { {IDRc1}*(1+V(DTEMP)*{TCIDRc1})    }
R_R105         0 N164635  10Meg
E_ABM2         DTEMP 0 VALUE { V(VTEMP)-{NORMTEMP}    }
L_L1         D D3  100p
E_ABM101         IDRI1 0 VALUE { max(0,(-V(D1,S0)-{IDRo1})*V(IDRc1T))    }
E_ABM9         PSI 0 VALUE { V(P1M)*V(VOVDRV)    }
R_R106         0 N165388  10Meg
E_ABM14         ALPHAT 0 VALUE { {Alpha}*(1+V(DTEMP)*{TCA})    }
R_R103         N164557 G0  100u
E_ABM23         CGD 0 VALUE { {C3} + 0.5*({C2}- {C3})*(1+tanh(-0.01*(V(D3,G0)-70))) +
+0.5*({C1}- {C2})*(1+tanh(-0.1*(V(D3,G0)-20)))    }
G_G1         D0 S0 VALUE { V(ID, 0) }
E_ABM5         P10T 0 VALUE { {P10}*(1+V(DTEMP)*{TCP10})    }
E_E100         DX S VALUE { V(N153327, 0) }
E_ABM7         DP1T 0 VALUE { {P1S}*(1+V(DTEMP)*{TCP1S})-V(P10T)    }
E_ABM8         P1M 0 VALUE { V(P10T)+V(dP1T)*tanh({P1alpha}*abs(V(D0,S0)))    }
R_R6         D0 S0  200Meg
E_ABM11         VTHT 0 VALUE { {VTHX}*(1+V(DTEMP)*{TCVTH})    }
R_R104         N165310 G0  100u
C_C2         0 N153327  1n
E_ABM13         IPKT 0 VALUE { {IPK}*(1+V(DTEMP)*{TCIPK})    }
R_R9         D0 D2  100
E_ABM15         ID 0 VALUE {  V(IPKT)*(1+tanh(V(PSI)))*tanh(V(AlphaT)*V(D0,S0))*V(SUBTH)    }
E_ABM105         IDRO2 0 VALUE { -V(IDRc1T)/(4*{IDRc2})+{IDRo1}    }
E_E101         N164557 S VALUE { V(N164635, 0) }
R_R4         0 S  100Meg
E_ABM102         IDRI2 0 VALUE { (V(Vdsat)-V(IDRo2))*(V(Vdsat)-V(IDRo2))*{IDRc2}    }
R_R1         D3 D2  0.1m
R_R3         S S0  {Rs}
R_R5         G0 G  {RG}
E_E102         N165310 D3 VALUE { V(N165388, 0) }
E_ABM1         VTEMP 0 VALUE { {TEMP}    }
E_ABM3         VPK 0 VALUE { {Vpk0}+({dVpk}*tanh( {vpkalpha}*abs(V(D0,S0))))*(1+V(DTEMP)*{TCVPK})    }
R_R102         DX D3  100u
E_ABM16         RDT 0 VALUE { {RD0}*(1+V(DTEMP)*{TCRD})    }
R_R8         D D3  1
G_G100         D1 S0 VALUE { -max(V(IDRI1),V(IDRI2)) }
G_G6         D0 S0 VALUE { max(V(ILK, 0),0)*1u }
G_G10         0 N153327 VALUE { 1n/1p*I(E_E100)/(V(cds)+0.1m) }
E_ABM4         VOVDRV 0 VALUE { V(G0,S0)-V(VPK)    }
G_G11         0 N164635 VALUE { 1n/1p*I(E_E101)/(V(cgs)+0.1m) }
E_ABM103         VDSAT 0 VALUE { min(max(-V(D1,S0),V(IDRo2)),V(IDRvx))    }
.ENDS NV6154_FET

****************************************************************************
*
* NV6154 Gate Driver ('6119 v2.0 03/29/2019)
*
****************************************************************************
.SUBCKT NV6154_DRV GDRV PWM SK VDD
.PARAM  UVLOHYS=0.35 UVLOREF=4.325 NORMTEMP=25 ILSMAX=5 GMVC=0.1
+  GMTC=-0.001 VITH=1.9 VITHTC=0.002 RDSONLS=0.19 VIHYS=1.4
+  VITHMIN=1.75V VITHMAX=2.05V RDSONHS=1 IHSMAX=5 TD=16.5n
R_R7         N1243601 VDD  1k
X_U3         N124489 N09875 N16008 N124777 SK COMP_HYST_VAR3 PARAMS:  VHIGH=8
+  VLOW=1m VHYS={UVLOHYS}
C_C2         SK VDDEN  1p
V_V2         VREFCT SK 1.075
D_D2         SK OUT DBODY
E_ABM2         CMULT 0 VALUE { (1+({GMVC}*(V(VDD,SK)-6.2)))*(1+{GMTC}*(V(VTEMP)-
+ {NORMTEMP}))    }
R_R10         PRE N133592  1k
V_V1         N09875 SK {UVLOREF}
R_R6         N124489 VDD  50k
R_R2         VDDEN N16008  1k
R_R1         PWMC PWMCT  1.72k
D_D3         N1243601 N124489 DBODY
R_R5         OUT GDRV  1m
G_G2         OUT SK VALUE { {ILSMAX}*tanh(V(OUT,SK)/
+ ({ILSMAX}*{RDSONLS}))*0.5*(1-tanh(2.5*(V(PRE, SK)-1.5)))*V(CMULT) }
C_C3         SK N124489  10p
R_R4         SK OUT  10Meg
G_G1         VDD OUT VALUE { {IHSMAX}*tanh((V(VDD,SK)-V(OUT,SK))/
+ ({IHSMAX}*{RDSONHS}))*0.5*(1+tanh(2.5*(V(PRE, SK)-3.5)))*V(CMULT) }
E_E2         EN SK VALUE { IF(V(VDDEN, SK)>2.5,5,0) }
E_E1         N22346 SK VALUE { min(max({VITHMIN},(1+{VITHTC}*((V(VTEMP))-
+ {NORMTEMP}))*{VITH}), {VITHMAX}) }
X_U2         PWMCT VREFCT N133592 EN SK COMP_HYST_VAR3 PARAMS:  VHIGH=8 VLOW=0
+  VHYS=100m
X_U1         PWM N22346 PWMC EN SK COMP_HYST_VAR3 PARAMS:  VHIGH=2 VLOW=0 VHYS=
+ {VIHYS}
V_V3         N124777 SK 5
C_C5         SK PRE  0.92p
C_C1         SK PWMCT  {TD/1000}
R_R3         SK VDD  10Meg
E_ABM1         VTEMP 0 VALUE { {TEMP}    }
D_D1         OUT VDD DBODY
.ENDS NV6154_DRV

****************************************************************************
*
* NV61xx OPA
*
****************************************************************************
.SUBCKT NV_OPA INP INM VDD OUT VSS GNDA params: R0=1e5 C0=100n Ro=10
R1 GNDA q {R0}
R2 GNDA inp 10Meg
R3 GNDA inm 10Meg
C1 q GNDA {C0}
G1 GNDA q VALUE {V(inp,GNDA)-V(inm,GNDA)}
E1 N001 GNDA VALUE {max(min(v(q,GNDA),v(vdd,GNDA)),v(vss,GNDA))}
R4 N001 out {Ro}
G2 vdd GNDA VALUE {max(V(N001,out)/{Ro},0)}
G3 GNDA vss VALUE {max(-V(N001,out)/{Ro},0)}
D1 q Vclp DBODY
D2 Vclm q DBODY
E2 Vclp GNDA VALUE {V(VDD,GNDA)}
E3 GNDA Vclm VALUE {V(GNDA,VSS)}
.ENDS NV_OPA

****************************************************************************
*
* NV61xx Hysteretic comparator
*
****************************************************************************
.SUBCKT COMP_HYST_VAR3 NINV INV OUT VX VG params: VHIGH=5 VLOW=100m VHYS=50m
Rvx VX VG 10Meg
G_hl HiL VG Value { -min(V(VX,VG),{VHIGH}) }
R_hl HiL VG 1
G_ll LoL VG Value { -min(V(VX,VG),{VLOW}) }
R_ll LoL VG 1
G_Hyst HYST NINV Value { -{VHYS}/2*tanh(500*V(HYST,INV)) }
G_Comp CompOut VG Value { -(V(LoL,VG) + (V(HiL,VG)-V(LoL,VG))*0.5*(tanh(500*V(HYST,INV))+1) ) }
R_Comp CompOut VG 1
C_Comp Compout VG 100p
R_Hsyt HYST NINV 1
RO CompOut OUT 100
.ENDS COMP_HYST_VAR3

****************************************************************************
*
* NV6154 Logic Cell - rev. 08/06/2020
*
****************************************************************************
.subckt nv6154_logic_v1 DGND DPWR EN PWM DRV EN_OUT OC
XX9 nQ nS DGND DPWR Q nv_nand_2_v2 params: delay=10p
XX10 Q nR DGND DPWR nQ nv_nand_2_v2 params: delay=1n
XX7 N003 OC DGND DPWR nR nv_nand_2_v2 params: delay=100p
XX8 N002 nR DGND DPWR nS nv_nand_2_v2 params: delay=100p
XX5 DRV DGND DPWR LEB nv_delay_v2 params: delay=60n
XX4 PWM DGND DPWR N002 nv_inv_v2 params: delay=10n
D1 N001 CT DBODY
C1 CT DGND 50p
R1 N001 PWM 5
R2 CT PWM 2486k
XX6 LEB PWM DGND DPWR N003 nv_and_2_v2 params: delay=100p
XX3 PWM Q DGND DPWR DRV EN_OUT nv_and_3_v2 params: delay=10p
XX2 CT EN DGND DPWR EN_OUT nv_or_2_v2 params: delay=1n
C2 EN DGND 30p
.ends nv6154_logic_v1



.subckt nv_and_2_v2 A B DGND DPWR Y params: delay=1n
E_B1 N001 DGND VALUE {(tanh(5*( V(A,DGND)-V(th)+ 0.5*(V(AH,DGND)-1)) )+1)}
E_B2 N004 DGND VALUE {V(DPWR,DGND)*max(min(1000*(V(td,DGND)-0.5),1),0)}
E_B3 th 0 VALUE {0.5*V(DPWR,DGND)}
E_B4 N002 DGND VALUE {(tanh(5*( V(B,DGND)-V(th)+ 0.5*(V(BH,DGND)-1)) )+1)}
E_B5 N003 DGND VALUE {V(AH,DGND)*V(BH,DGND)/4}
R1 td N003 1.4427
C1 td DGND ={delay}
R2 N001 AH 10
C2 Y DGND 10p
R3 Y N004 10
C3 AH DGND 1p
R4 N002 BH 10
C4 BH DGND 1p
.ends nv_and_2_v2

.subckt nv_and_3_v2 A B DGND DPWR Y C params: delay=1n
E_B1 N001 DGND VALUE {(tanh(5*( V(A,DGND)-V(th)+ 0.5*(V(AH,DGND)-1)) )+1)}
E_B2 N004 DGND VALUE {V(DPWR,DGND)*max(min(1000*(V(td,DGND)-0.5),1),0)}
E_B3 th 0 VALUE {0.5*V(DPWR,DGND)}
E_B4 N002 DGND VALUE {(tanh(5*( V(B,DGND)-V(th)+ 0.5*(V(BH,DGND)-1)) )+1)}
E_B5 N003 DGND VALUE {V(AH,DGND)*V(BH,DGND)*V(CH,DGND)/8}
E_B6 N005 DGND VALUE {(tanh(5*( V(C,DGND)-V(th)+ 0.5*(V(CH,DGND)-1)) )+1)}
R1 td N003 1.4427
C1 td DGND ={delay}
R3 Y N004 10
C2 Y DGND 10p
R2 N001 AH 10
C3 AH DGND 1p
R4 N002 BH 10
C4 BH DGND 1p
R5 N005 CH 10
C5 CH DGND 1p
.ends nv_and_3_v2

.subckt nv_nand_2_v2 A B DGND DPWR Y params: delay=1n
E_B1 N001 DGND VALUE {(tanh(5*( V(A,DGND)-V(th)+ 0.5*(V(AH,DGND)-1)) )+1)}
E_B2 N004 DGND VALUE {V(DPWR,DGND)*max(min(1000*(0.5-V(td,DGND)),1),0)}
E_B3 th 0 VALUE {0.5*V(DPWR,DGND)}
E_B4 N002 DGND VALUE {(tanh(5*( V(B,DGND)-V(th)+ 0.5*(V(BH,DGND)-1)) )+1)}
E_B5 N003 DGND VALUE {V(AH,DGND)*V(BH,DGND)/4}
R1 td N003 1.4427
C1 td DGND ={delay}
R2 N001 AH 10
C2 Y DGND 10p
R3 Y N004 10
C3 AH DGND 1p
R4 N002 BH 10
C4 BH DGND 1p
.ends nv_nand_2_v2

.subckt nv_or_2_v2 A B DGND DPWR Y params: delay=1n
E_B1 N001 DGND VALUE {(tanh(5*( V(A,DGND)-V(th)+ 0.5*(V(AH,DGND)-1)) )+1)}
E_B2 N004 DGND VALUE {V(DPWR,DGND)*max(min(1000*(V(td,DGND)-0.5),1),0)}
E_B3 th 0 VALUE {0.5*V(DPWR,DGND)}
E_B4 N002 DGND VALUE {(tanh(5*( V(B,DGND)-V(th)+ 0.5*(V(BH,DGND)-1)) )+1)}
E_B5 N003 DGND VALUE {max(V(AH,DGND),V(BH,DGND))/2}
R1 td N003 1.4427
C1 td DGND ={delay}
R3 Y N004 10
C2 Y DGND 10p
R2 N001 AH 10
C3 AH DGND 1p
R4 N002 BH 10
C4 BH DGND 1p
.ends nv_or_2_v2

.subckt nv_inv_v2 IN DGND DPWR OUT params: delay=1n
E_B1 N001 DGND VALUE {(tanh(5*( V(IN,DGND)-V(th)+ 0.5*(V(H,DGND)-1)) )+1)}
E_B2 N003 DGND VALUE {V(DPWR,DGND)*max(min(1000*(0.5-V(td,DGND)),1),0)}
E_B3 th 0 VALUE {0.5*V(DPWR,DGND)}
E_B5 N002 DGND VALUE {V(H,DGND)/2}
R1 td N002 1.4427
C1 td DGND ={delay}
R3 OUT N003 10
C2 OUT DGND 10p
R2 N001 H 10
C3 H DGND 1p
.ends nv_inv_v2

.subckt nv_delay_v2 IN DGND DPWR OUT params: delay=1n
E_B1 N001 DGND VALUE {(tanh(5*( V(IN,DGND)-V(th)+ 0.5*(V(H,DGND)-1)) )+1)}
E_B2 N003 DGND VALUE {V(DPWR,DGND)*max(min(1000*(V(td,DGND)-0.5),1),0)}
E_B3 th 0 VALUE {0.5*V(DPWR,DGND)}
E_B5 N002 DGND VALUE {V(H,DGND)/2}
R1 td N002 1.4427
C1 td DGND ={delay}
R3 OUT N003 10
C2 OUT DGND 10p
R2 N001 H 10
C3 H DGND 1p
.ends nv_delay_v2

.model DBODY  D(Is=30n N=1 Rs=0.1)
