***** Hspice Netlist for Cell 'opticalsd_top' *****

************** Module accum_and_dump **************
.subckt accum_and_dump in out clk
.ends accum_and_dump

************** Module add2 **************
.subckt add2 in1 in2 out
.ends add2

************** Module and2 **************
.subckt and2 a b y
.ends and2

************** Module ch_pump **************
.subckt ch_pump in out ival=1
.ends ch_pump

************** Module constant **************
.subckt constant out consval=1
.ends constant

************** Module dffreset **************
.subckt dffreset d clk q qb r
.ends dffreset

************** Module gain **************
.subckt gain a y gain=1
.ends gain

************** Module inv **************
.subckt inv a y
.ends inv

************** Module lowpassfilter **************
.subckt lowpassfilter in out gain=1.0 fp=1.0
.ends lowpassfilter

************** Module mixer **************
.subckt mixer a y b
.ends mixer

************** Module multiplier **************
.subckt multiplier in1 out in2
.ends multiplier

************** Module mult_noise **************
.subckt mult_noise in out var=1.0
.ends mult_noise

************** Module noise **************
.subckt noise out var=1
.ends noise

************** Module regen_latch **************
.subckt regen_latch d clk q gain=1 f_bw=10e9
.ends regen_latch

************** Module signal_source **************
.subckt signal_source phase out clk stype=0 freq=1
.ends signal_source

************** Module sub2 **************
.subckt sub2 in1 in2 out
.ends sub2

************** Module vco_quadrature **************
.subckt vco_quadrature vctrl sineout cosout freq=1 kvco=1 phase_adj=1
.ends vco_quadrature

************** Module fixed_delay **************
.subckt fixed_delay in out delay=100e-12
.ends fixed_delay

************** Module opticalsd_1_over_f_noise **************
.subckt opticalsd_1_over_f_noise in out
.ends opticalsd_1_over_f_noise

************** Module opticalsd_ampsat **************
.subckt opticalsd_ampsat in out gain=1.0 f_bw=1e9 offset=0
.ends opticalsd_ampsat

************** Module opticalsd_lpfreset **************
.subckt opticalsd_lpfreset in clk out fp=1e9 gain=1 offset=0
.ends opticalsd_lpfreset

************** Module opticalsd_nonlinint **************
.subckt opticalsd_nonlinint in out a0=0.0 a1=1.0 a2=0.0 a3=0.0
.ends opticalsd_nonlinint

************** Module cos_sq_func **************
.subckt cos_sq_func in out
.ends cos_sq_func

************** Module resonant_bandpass **************
.subckt resonant_bandpass in out fo=1 q=1
.ends resonant_bandpass

************** Module sin_sq_func **************
.subckt sin_sq_func in out
.ends sin_sq_func

************** Module twenty_db_rolloff_noise **************
.subckt twenty_db_rolloff_noise out n_off=-100 f_off=1e6
.ends twenty_db_rolloff_noise

************** Module opticalsd_rzdriver **************
.subckt opticalsd_rzdriver in out outb inb gain=1.0 f_bw=1e9 offset=0
xi0 in out opticalsd_ampsat gain=gain f_bw=f_bw offset=offset
xi1 inb outb opticalsd_ampsat gain=gain f_bw=f_bw offset=offset
.ends opticalsd_rzdriver

************** Module ich_w_noise **************
.subckt ich_w_noise in out i_val=1 i_variance=1
xi2 n0 n1 out add2
xi0 in n0 ch_pump ival=i_val
xi1 in n1 mult_noise var=i_variance
.ends ich_w_noise

************** Module opticalsd_noise **************
.subckt opticalsd_noise out nvar1=1.0 nvar2=1.0
xi0 in n0 opticalsd_1_over_f_noise
xi2 n0 n1 out add2
xi1 in noise var=nvar1
xi3 n1 noise var=nvar2
.ends opticalsd_noise

************** Module opticalsd_2ndintegrator **************
.subckt opticalsd_2ndintegrator in out dac_in noise_in a0=0.0 rout=100e3 a1=1.0 a2=0.0 a3=0.0 rpar=0 c=10e-12
xi2 n0 out lowpassfilter gain=rout fp=1/(2*pi*(rout+rpar)*c)
xi0 in n1 opticalsd_nonlinint a0=a0 a1=a1 a2=a2 a3=a3
xi1 n2 dac_in n0 sub2
xi3 n1 noise_in n2 add2
.ends opticalsd_2ndintegrator

************** Module opticalsd_opticalsource **************
.subckt opticalsd_opticalsource out clk fsource=100e6 power=1e-3 noise_at_foff=-100 foff=1e6
xi0 n1 n0 n3 signal_source stype=2 freq=fsource
xi2 n1 twenty_db_rolloff_noise n_off=noise_at_foff f_off=foff
xi1 n0 out gain gain=power/(fsource*ts)
xi4 n2 constant consval=0
xi3 n2 clk n4 signal_source freq=fsource
.ends opticalsd_opticalsource

************** Module opticalsd_pulsewidthcontrol **************
.subckt opticalsd_pulsewidthcontrol clk_in clk_out pulse_width=100e-12
xi4 n0 constant consval=1
xi0 n0 clk_in clk_out n5 n4 dffreset
xi1 n1 constant consval=1
xi2 n1 n2 n3 n6 n4 dffreset
xi3 clk_in n2 fixed_delay delay=pulse_width
xi5 clk_out n3 n4 and2
.ends opticalsd_pulsewidthcontrol

************** Module opticalsd_rfsource **************
.subckt opticalsd_rfsource irf qrf frf=1.0e9 fmod=1e6 krf=0.5
xi12 n0 constant consval=0
xi2 n1 qrf n5 mixer
xi16 n2 irf n4 mixer
xi11 n0 qlo ilo vco_quadrature freq=frf kvco=1 phase_adj=0
xi1 n3 constant consval=0
xi0 n3 n1 n2 vco_quadrature freq=fmod kvco=1 phase_adj=0
xi3 ilo n4 gain gain=krf
xi4 qlo n5 gain gain=krf
.ends opticalsd_rfsource

************** Module opticalsd_dac **************
.subckt opticalsd_dac in inb out iup=100e-6 idown=100e-6 iup_var=0 idown_var=0 ioffset=0
xi1 n1 n2 n6 add2
xi4 n0 n2 n7 add2
xi2 n2 constant consval=ioffset
xi5 inb n5 n4 add2
xi6 in n5 n3 add2
xi7 n5 constant consval=1
xi8 n6 n7 out sub2
xi0 n3 n1 ich_w_noise i_val=iup i_variance=iup_var
xi3 n4 n0 ich_w_noise i_val=idown i_variance=idown_var
.ends opticalsd_dac

************** Module opticalsd_oefrontend **************
.subckt opticalsd_oefrontend in out dac_in noise_in rout=100e3 rpar=0 c=10e-12 pavg=1e-3 resp=1 fp_slow=1e9 fp_fast=10e9 ioffset=0
xi15 n2 n5 n3 add2
xi9 n7 out lowpassfilter gain=rout fp=1/(2*pi*(rout+rpar)*c)
xi0 in n0 gain gain=resp
xi1 n0 n1 lowpassfilter fp=fp_fast
xi2 n1 n2 lowpassfilter fp=fp_slow
xi3 n3 dac_in n4 sub2
xi4 n4 noise_in n6 add2
xi17 n5 noise var=2*pavg*1.6e-19
xi5 n6 n8 n7 add2
xi6 n8 constant consval=ioffset
.ends opticalsd_oefrontend

************** Module optical_modulator **************
.subckt optical_modulator out_i out_q optical_in electrical_in fo=1.0 q=1.0 vpi=1.0
xi1 phi n1 cos_sq_func
xi2 phi n0 sin_sq_func
xi3 optical_in out_i n1 multiplier
xi4 optical_in out_q n0 multiplier
xi6 n3 n2 phi add2
xi7 n2 constant consval=1/4
xi5 electrical_in el1 gain gain=1/vpi
xi0 el1 n3 resonant_bandpass fo=fo q=q
.ends optical_modulator

************** Module opticalsd_rzquantizer **************
.subckt opticalsd_rzquantizer clk d q qb nrz_out gain=1.0 f_bw=1e9 tdel=100e-12 pulse_width=100e-12
xi1 n1 clk nrz_out regen_latch gain=gain f_bw=f_bw
xi5 clk n3 fixed_delay delay=tdel
xi2 d n0 n1 regen_latch gain=gain f_bw=f_bw
xi4 nrz_out clk_del n2 opticalsd_lpfreset fp=f_bw gain=gain
xi6 n3 clk_del opticalsd_pulsewidthcontrol pulse_width=pulse_width
xi7 n2 q gain gain=2
xi3 n2 qb gain gain=-2
xi0 clk n0 inv
.ends opticalsd_rzquantizer

************** Module opticalsd_oemodulator **************
.subckt opticalsd_oemodulator pulses_in optmod_out frf=1e9 fmod=1e6 pavg=1e-3 q=10 vpi=32 fo=1e9 krf=1
xi5 n0 n1 n6 sub2
xi1 n3 n4 n7 sub2
xi6 n6 n7 optmod_out add2
xi3 n3 n4 pulses_in n5 optical_modulator fo=fo q=q vpi=vpi
xi0 n0 n1 pulses_in n2 optical_modulator fo=fo q=q vpi=vpi
xi2 n2 n5 opticalsd_rfsource frf=frf fmod=fmod krf=krf
.ends opticalsd_oemodulator

************** Module opticalsd_top **************
.subckt opticalsd_top sd_out clk
xi5 clk clk_trigger inv
xi1 int1_out int2_out dac2_out n4 opticalsd_2ndintegrator rout=80e3 a1=157.7e-6 a3=63.39e-6 c=2e-12
xi10 n5 opticalsd_noise nvar1=2.75e-18 nvar2=7.4e-22
xi9 n4 opticalsd_noise nvar1=3.76e-19 nvar2=4e-23
xi0 rz_out n3 n2 n1 opticalsd_rzdriver gain=1.2 f_bw=1.45e9
xi11 optmod_out optmod_out_accum clk accum_and_dump
xi8 n0 optmod_out opticalsd_oemodulator frf=2e9 pavg=5e-3 q=300 fo=2e9 krf=krf
xi3 n0 clk opticalsd_opticalsource fsource=1e9 power=5e-3 noise_at_foff=laser_noise
xi6 n3 n2 dac1_out opticalsd_dac iup=800e-6 idown=800e-6 iup_var=6.6e-23 idown_var=6.6e-23
xi7 n3 n2 dac2_out opticalsd_dac iup=20e-6 idown=20e-6 iup_var=3.29e-24 idown_var=3.29e-24
xi4 clk int2_out rz_out n1 sd_out opticalsd_rzquantizer gain=1.5 f_bw=2e9 tdel=tdel pulse_width=500e-12
xi2 optmod_out int1_out dac1_out n5 opticalsd_oefrontend rout=92.8e3 pavg=5e-3
.ends opticalsd_top


.end

