.subckt SL2001_PGen VDD Vin FLX_PULSE FIRE_PULSE CLK VSS
B1 VflxR 0 v=if(v(CLK_IN)<v(vdd)/2,0,v(vdd))
R1 VDD 0 1e6
¥3 vdd vss Q_VflxF N01 vdd VflxF set reset ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ D-FLOP
V4 set 0 0
R4 N01 0 1e6
R5 VSS 0 1e6
R2 Vin 0 1e6
B5 offset 0 V=Flux2x
R3 CLK_IN 0 1e6
¥8 vdd vss ¥ N03 Q_VflxR Q_VflxF ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ XOR
¥4 vdd vss Q_VflxR N02 vdd VflxR set reset ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ D-FLOP
R6 N02 0 1e6
V2 reset 0 pulse 0 5 0 10p 10p  1n 1/fsw
¥1 vdd vss ¥ N15 N03 ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ OR TRISE=100p TFALL=100p
V1 CLK CLK_IN 0
¥5 vdd vss Q_VfireF N04 vdd VfireF set reset ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ D-FLOP
R7 N04 0 1e6
¥6 vdd vss ¥ N06 Q_VfireR Q_VfireF ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ XOR TRISE=10p TFALL=10p
¥7 vdd vss Q_VfireR N05 vdd VfireR set reset ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ D-FLOP
R8 N05 0 1e6
¥9 vdd vss ¥ N14 N06 ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ OR TRISE=100p TFALL=100p
¥10 vdd vss VfireF ¥ VfireR ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ OR TD=FIRE_PW3(rdacFIRE) TTOL=1p TRISE=10p TFALL=10p
¥12 vdd vss VflxF ¥ VflxR ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ OR TD=FLX_PW3(rdacFLX) TTOL=1p TRISE=10p TFALL=10p
¥2 vdd vss N11 ¥ VflxR ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ OR TD=FLX_PW3(rdacFLX)+CHRG_PW3(rdacCHRG) TTOL=1p TRISE=10p TFALL=10p
B2 N07 0 v=if(v(CLK_IN)>v(vdd)/2,0,v(vdd))
¥11 vdd vss CLK_F_OUT N08 vdd N07 set N09 ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ D-FLOP
R10 N08 0 1e6
¥14 vdd vss N09 ¥ N07 ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ OR TD=1n TTOL=1p TRISE=10p TFALL=10p
¥15 vdd vss DTCOUT N10 vdd CLK_F_OUT set reset ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ D-FLOP
R11 N10 0 1e6
S1 N11 VfireR N13 0 SWMOD
S2 DTCOUT VfireR N12 0 SWMOD
B6 N12 0 v=if(DTC==0,v(vss),v(vdd))
¥16 vdd vss ¥ N13 N12 ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ OR
E1 FIRE_PULSE vss N14 vss 1
E2 FLX_PULSE vss N15 vss 1
.inc ./SL2001_Eqn2.txt
.model SWMOD SW(Ron=1m Roff=1e9 Vt=2.5 Vh=-1)
.ends SL2001_PGen