# The script sets up the bias voltage and fruency sweep # and calculates the input impedance of the MOSFET load('nmos_ac.ldev'); switchtolayout; setnamed('CHARGE','log start frequency',1e6); setnamed('CHARGE','log stop frequency',2e10); setnamed('CHARGE','num frequency points per dec',3); select("CHARGE::boundary conditions::gate"); set('bc mode','steady state'); set('sweep type','range'); set('range start',0); set('range stop',2); set('range interval',0.2); set('apply ac small signal','last'); select("CHARGE::boundary conditions::drain"); set('bc mode','steady state'); set('sweep type','single'); set('voltage',5); set('apply ac small signal','none'); run; ac_data = getresult('CHARGE','ac_gate'); Iac = pinch(ac_data.dI); f = ac_data.f; Vac = ac_data.dV_gate; Zin = Vac/Iac; plot(f*1e-9,abs(Zin),'Freq (GHz)','|Zin| (Ohm)','','log10x,log10y'); plot(f*1e-9,angle(Zin)*180/pi,'Freq (GHz)','angle[Zin] (degree)','','log10x'); matlabsave('nmos_Zin',Zin,f);