########## netlist_file ########## include "etc/corners.scs" // Library name: Cell // Cell name: NAND2 // View name: schematic subckt NAND2 A B Z gnd gnds vdd vdds M5 (net023 B net247 gnds) nmos w=199.0n l=22.0n as=(76n)*(199.0n) \ ad=(76n)*(199.0n) ps=2*((1)*(76n)+(199.0n)) pd=2*((1)*(76n)+(199.0n)) \ nf=(1)*(1) sb=(76n) sd=114n ptwell=1 sca=-1 scb=-1 scc=-1 \ pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \ nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \ mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \ pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1 M2 (net247 A gnd gnds) nmos w=199.0n l=22.0n as=(76n)*(199.0n) \ ad=(76n)*(199.0n) ps=2*((1)*(76n)+(199.0n)) pd=2*((1)*(76n)+(199.0n)) \ nf=(1)*(1) sb=(76n) sd=114n ptwell=1 sca=-1 scb=-1 scc=-1 \ pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \ nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \ mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \ pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1 M0 (Z net023 gnd gnds) nmos w=378.0n l=22.0n as=(76n)*(378.0n) \ ad=(76n)*(378.0n) ps=2*((1)*(76n)+(378.0n)) pd=2*((1)*(76n)+(378.0n)) \ nf=(1)*(1) sb=76.0n sd=114n ptwell=0 par=1 sca=-1 scb=-1 scc=-1 \ pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \ nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \ mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \ pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1 M4 (net023 B vdd vdds) pmos w=242.0n l=22.0n as=(76n)*(242.0n) \ ad=(76n)*(242.0n) ps=2*((1)*(76n)+(242.0n)) pd=2*((1)*(76n)+(242.0n)) \ nf=(1)*(1) sb=(76n) sd=114n ptwell=0 sca=-1 scb=-1 scc=-1 \ pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \ nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \ mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \ pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1 M3 (net023 A vdd vdds) pmos w=242.0n l=22.0n as=(76n)*(242.0n) \ ad=(76n)*(242.0n) ps=2*((1)*(76n)+(242.0n)) pd=2*((1)*(76n)+(242.0n)) \ nf=(1)*(1) sb=(76n) sd=114n ptwell=0 sca=-1 scb=-1 scc=-1 \ pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \ nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \ mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \ pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1 M1 (Z net023 vdd vdds) pmos w=538.0n l=22.0n as=(76n)*(538.0n) \ ad=(76n)*(538.0n) ps=2*((1)*(76n)+(538.0n)) pd=2*((1)*(76n)+(538.0n)) \ nf=(1)*(1) sb=76.0n sd=114n ptwell=0 par=1 sca=-1 scb=-1 scc=-1 \ pre_layout_local=-1 p_la=0 lpccnr=0 covpccnr=0 ngcon=1 wrxcnr=0 \ nsig_delvto_uo1=0 nsig_delvto_uo2=0 soa=1 swshe=0 swrg=1 \ mismatch=1 m=1 xpos=-1 ypos=-1 plorient=1 plsnf=0 pcpastrx_top=-1 \ pcpastrx_bot=-1 mx=1 my=1 deltax=-1 deltay=-1 ends NAND2 // End of subcircuit definition. V0 (vdd! 0) vsource dc=1 type=dc V1 (vdds! 0) vsource dc=1 type=dc V2 (gnds! 0) vsource dc=0 type=dc C0 (Z 0) capacitor c=1f I0 (gnds! gnds! Z 0 gnds! vdd! vdds!) NAND2 ########## core.il ########## paths_file_folder = "etc/simulator_spectre/" electrical_simulation_path = "etc/simulations/" cell_name = "NAND2" modelFile_path = '("etc/corners.scs" "") path_psf = strcat(electrical_simulation_path cell_name "/spectre/schematic") path_netlist = strcat(electrical_simulation_path cell_name "/spectre/schematic/netlist/netlist") time_hit = 1.8e-08 outputstart_electrical_sim = "1e-08" stop_electrical_sim = "3e-08" temperature = 25 vdd_core = 1.0 results_wvspt_folder = "etc/waveform/" load strcat(paths_file_folder "simulation_options.il") load strcat(paths_file_folder "run_simulation.il") exit() ########## simulation_options.il ########## simulator( 'spectre ) design( path_netlist ) resultsDir( path_psf ) modelFile( modelFile_path ) analysis('tran ?outputstart outputstart_electrical_sim ?stop stop_electrical_sim ?skipdc "yes") envOption( 'cmd64bit t 'analysisOrder list("tran") ) option( 'dochecklimit "no" ) temp( temperature ) saveOption( ?simOutputFormat "psf" ) saveOption( 'currents "none" ) saveOption( 'save "selected") ########## run_simulation.il ########## run() ;Open results from psf openResults(path_psf) ;Select transient results, only voltage in this case all_signals_v = outputs(?result "tran" ?resultsDir path_psf) ;Save operations in the specified file symmaryFile=outfile(strcat(results_wvspt_folder "all_signals_voltages") "w") foreach(cell_name all_signals_v cell_voltage=value(v(cell_name ?result "tran") time_hit) when(cell_voltage fprintf(symmaryFile "%s %g \n" cell_name cell_voltage) ) ) close(symmaryFile)