*spice script *#save @vsv:xgft[dc] @vsi:xgft[dc] @vsn:xgft[dc] *#save v(iy:xgft) v(ix:xgft) v(yw:xgft) v(xw:xgft) *#save v(ui:xgft) v(uo:xgft) @vsg:xgft[dc] #simulation #mprint constants.Hok = isdef(v(ui:xgft)) if isdef(v(yw:xgft)) newplot result default * initial state is 0 0 0, null vx ac1 result.Ti_ix2 = v(iy:xgft) / v(ix:xgft) alter @vsv:xgft[dc] = 1 alter @vsi:xgft[dc] = 0 alter @vsn:xgft[dc] = 0 * null iy2 ac2 #simulation #mprint result.Ti_iy2 = v(iy:xgft) / v(ix:xgft) alter @vsv:xgft[dc] = 0 alter @vsi:xgft[dc] = 1 alter @vsn:xgft[dc] = 0 * null ix ac3 #simulation #mprint result.Ti2_ix = -v(yw:xgft) / v(xw:xgft) alter @vsv:xgft[dc] = 1 alter @vsi:xgft[dc] = 1 alter @vsn:xgft[dc] = 0 * null iy ac4 #simulation #mprint result.Ti2_iy = -v(yw:xgft) / v(xw:xgft) setplot result tii2 = Ti_ix2 * Ti2_iy ti2i = Ti_iy2 * Ti2_ix t = 1/(1/Ti_iy2 + 1/Ti2_iy + 1/tii2) if constants.Hok **** now the output null stuff alter @vsv:xgft[dc] = 0 alter @vsi:xgft[dc] = 0 alter @vsn:xgft[dc] = 1 alter @vsg:xgft[dc] = 0 * null ix2, uo ac5 #simulation #mprint result.Tni_ix2 = v(iy:xgft) / v(ix:xgft) alter @vsv:xgft[dc] = 1 alter @vsi:xgft[dc] = 0 alter @vsn:xgft[dc] = 1 alter @vsg:xgft[dc] = 0 * null iy2, uo ac6 #simulation #mprint result.Tni_iy2 = v(iy:xgft) / v(ix:xgft) alter @vsv:xgft[dc] = 0 alter @vsi:xgft[dc] = 1 alter @vsn:xgft[dc] = 1 alter @vsg:xgft[dc] = 0 * null ix, uo ac7 #simulation #mprint result.Tni2_ix = -v(yw:xgft) / v(xw:xgft) alter @vsv:xgft[dc] = 1 alter @vsi:xgft[dc] = 1 alter @vsn:xgft[dc] = 1 alter @vsg:xgft[dc] = 0 *null iy, uo ac8 #simulation #mprint result.Tni2_iy = -v(yw:xgft) / v(xw:xgft) setplot result tnii2 = Tni_ix2 * Tni2_iy tni2i = Tni_iy2 * Tni2_ix tn = 1/(1/Tni_iy2 + 1/Tni2_iy + 1/tnii2) alter @vsv:xgft[dc] = 1 alter @vsi:xgft[dc] = 1 alter @vsn:xgft[dc] = 0 alter @vsg:xgft[dc] = 1 * null iy and iy2 ac9 #simulation #mprint result.hiyiy2 = v(uo:xgft) / v(ui:xgft) alter @vsv:xgft[dc] = 1 alter @vsi:xgft[dc] = 1 alter @vsn:xgft[dc] = 0 alter @vsg:xgft[dc] = 1 alter @vny:xgft[dc] = 0 * null iy and ix2 ac10 #simulation #mprint result.hiyix2 = v(uo:xgft) / v(ui:xgft) alter @vsv:xgft[dc] = 0 alter @vsi:xgft[dc] = 1 alter @vsn:xgft[dc] = 0 alter @vsg:xgft[dc] = 1 alter @vny:xgft[dc] = 1 * null ix and iy2 ac11 #simulation #mprint result.hiy2ix = v(uo:xgft) / v(ui:xgft) alter @vsv:xgft[dc] = 0 alter @vsi:xgft[dc] = 1 alter @vsn:xgft[dc] = 0 alter @vsg:xgft[dc] = 1 alter @vny:xgft[dc] = 0 * null ix and ix2 ac12 #simulation #mprint result.hixix2 = v(uo:xgft) / v(ui:xgft) alter @v3:xgft[dc] = 0 alter @vsi:xgft[dc] = 0 alter @vsn:xgft[dc] = 0 alter @vsg:xgft[dc] = 0 alter @vny:xgft[dc] = 0 alter @vy:xgft[acmag] = 0 alter @v17:xgft[acmag] = 0 alter @vin:xgft[acmag] = 1 * no null input ac 1 ac13 #simulation #mprint result.h = v(uo:xgft) / v(ui:xgft) setplot result hinf = hiyiy2 hzero = hiyix2*t/Ti2_iy + hiy2ix*t/Ti_iy2+hixix2*t/tii2 hzeroc = hinf*t/tn d=t/(1+t) do=1/(1+t) hinfd=hinf*d hzerodo=hzero*do dn=1+1/tn h1=hinfd*dn h2=hinfd+hzerodo tp=t*dn/(1-t/tn) dp=tp/(1+tp) h3=hinf*dp end else printstatus -t " You need to name the GFT subcircuit Xgft " printstatus -t end