Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;====================== Set to XL mode =========================================
- ocnSetXLMode()
- ocnxlProjectDir( "~/simulation" )
- ocnxlTargetCellView( "bgOptimization" "opamp_tb_pload" "adexl" )
- ocnxlResultsLocation( "" )
- ocnxlSimResultsLocation( "" )
- ;====================== Tests setup ============================================
- ;---------- Test "bgOptimization:opamp_tb_pload:1" -------------
- ocnxlBeginTest("bgOptimization:opamp_tb_pload:1")
- simulator( 'spectre )
- design( "bgOptimization" "opamp_tb_pload" "schematic")
- modelFile(
- '("/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" "tt_lib")
- )
- definitionFile(
- "/home/akanago/tsmc65/gm_save.scs"
- )
- stimulusFile( ?xlate nil
- "/home/akanago/simulation/bgOptimization/opamp_tb_pload/adexl/results/data/.tmpADEDir_akanago/bgOptimization:opamp_tb_pload:1/bgOptimization_opamp_tb_pload_schematic_spectre/netlist/_graphical_stimuli.scs")
- analysis('tran ?stop "2u" )
- analysis('dc ?saveOppoint t )
- analysis('ac ?start "1" ?stop "2G" )
- desVar( "vcm" 650m )
- desVar( "vcc" 1.0 )
- desVar( "vcm_in" 0.65 )
- envOption(
- 'analysisOrder list("dc" "ac" "tran")
- )
- saveOption( ?simOutputFormat "psfxl" )
- save( 'i "/I0/M0/S" "/I0/M6/S" "/I0/M9/S" )
- temp( 27 )
- ocnxlOutputSignal( "/vout" ?plot t)
- ocnxlOutputTerminal( "/I0/M0/S" ?save t)
- ocnxlOutputTerminal( "/I0/M6/S" ?save t)
- ocnxlOutputTerminal( "/I0/M9/S" ?save t)
- ocnxlOutputSignal( "/vout_cmrr" ?plot t)
- ocnxlOutputSignal( "/vout_pssr" ?plot t)
- ocnxlOutputExpr( "peakToPeak(VT(\"/vout\"))" ?name "Output Swing" ?plot t)
- ocnxlOutputExpr( "dB20(value(VF(\"/vout_cmrr\") 1))" ?name "CMRR" ?plot t)
- ocnxlOutputExpr( "dB20(value(VF(\"/vout\") 1))" ?name "DC Gain" ?plot t)
- ocnxlOutputExpr( "dB20(value(VF(\"/vout_pssr\") 1))" ?name "PSRR" ?plot t)
- ocnxlOutputExpr( "ymax(VT(\"/vout\"))" ?name "Vout Max" ?plot t)
- ocnxlOutputExpr( "((IDC(\"/I0/M0/S\") + IDC(\"/I0/M6/S\") + IDC(\"/I0/M9/S\")) * -1 * VAR(\"vcc\"))" ?name "Power Consumption" ?plot t)
- ocnxlOutputExpr( "bandwidth(VF(\"/vout\") 3 \"low\")" ?name "3-dB Bandwidth" ?plot t)
- ocnxlOutputExpr( "unityGainFreq(VF(\"/vout\"))" ?name "UGF" ?plot t)
- ocnxlOutputExpr( "phaseMargin(VF(\"/vout\"))" ?name "Phase Margin" ?plot t)
- ocnxlOutputExpr( "VDC(\"/vout\")" ?name "Output DC" ?plot t)
- ocnxlOutputAreaGoal( "((\"/I0/M1\" \"nch\" \"m*nf*w*l\" \"user-defined\" \"enabled\") (\"/I0/M3\" \"pch\" \"m*nf*w*l\" \"user-defined\" \"enabled\") (\"/I0/M0\" \"nch\" \"m*nf*w*l\" \"user-defined\" \"enabled\") (\"/I0/M2\" \"pch\" \"m*nf*w*l\" \"user-defined\" \"enabled\") (\"/I0/M4\" \"nch\" \"m*nf*w*l\" \"user-defined\" \"enabled\") (\"/I0/M5\" \"pch\" \"m*nf*w*l\" \"user-defined\" \"enabled\") (\"/I0/M6\" \"nch\" \"m*nf*w*l\" \"user-defined\" \"enabled\") (\"/I0/M7\" \"pch\" \"m*nf*w*l\" \"user-defined\" \"enabled\") (\"/I0/R0\" \"rppolywo\" \"sumW*sumL\" \"user-defined\" \"enabled\") (\"/I0/M9\" \"nch\" \"m*nf*w*l\" \"user-defined\" \"enabled\") (\"/I0/C0\" \"mimcap\" \"wt*lt\" \"user-defined\" \"enabled\") (\"/I0/R1\" \"rppolywo\" \"sumW*sumL\" \"user-defined\" \"enabled\"))" ?name "Device Area" ?plot t ?save t)
- ocnxlOutputExpr( "dB20(VF(\"/vout_pssr\"))" ?plot t)
- ocnxlEndTest() ; "bgOptimization:opamp_tb_pload:1"
- ;====================== Specs ==================================================
- ocnxlPutMinSpec( "bgOptimization:opamp_tb_pload:1" "Power Consumption" "5u" ?weight "6")
- ocnxlPutMaxSpec( "bgOptimization:opamp_tb_pload:1" "DC Gain" "42" ?weight "10")
- ocnxlPutMaxSpec( "bgOptimization:opamp_tb_pload:1" "UGF" "1M" ?weight "6")
- ocnxlPutMinSpec( "bgOptimization:opamp_tb_pload:1" "CMRR" "-20" ?weight "10")
- ocnxlPutMinSpec( "bgOptimization:opamp_tb_pload:1" "PSRR" "-20" ?weight "10")
- ocnxlPutToleranceSpec( "bgOptimization:opamp_tb_pload:1" "Phase Margin" "60" 'percent "35" ?weight "10")
- ocnxlPutMinSpec( "bgOptimization:opamp_tb_pload:1" "Device Area" "2n" ?weight "2")
- ocnxlPutMaxSpec( "bgOptimization:opamp_tb_pload:1" "Vout Max" "750m" ?weight "6")
- ocnxlPutToleranceSpec( "bgOptimization:opamp_tb_pload:1" "Output DC" "500m" 'percent "20" ?weight "25")
- ;====================== Sweeps setup ===========================================
- ocnxlSweepVar("vcc" "1.0")
- ocnxlSweepVar("vcm" "0.65")
- ocnxlSweepVar("vcm_in" "0.65")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M3/fingers" "1:1:8")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M3/l" "60n:60n:1u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M3/w" "60n:60n:20u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M2/fingers" "M3/fingers@bgOptimization/opamp/schematic")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M2/l" "M3/l@bgOptimization/opamp/schematic")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M2/w" "M3/w@bgOptimization/opamp/schematic")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M1/fingers" "1:1:8")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M1/l" "60n:60n:1u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M1/w" "60n:60n:20u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M4/fingers" "M1/fingers@bgOptimization/opamp/schematic")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M4/l" "M1/l@bgOptimization/opamp/schematic")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M4/w" "M1/w@bgOptimization/opamp/schematic")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M7/l" "60n:60n:1u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M7/w" "60n:60n:10u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M7/fingers" "1:1:4")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M9/l" "60n:60n:1u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M9/w" "60n:60n:10u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M9/fingers" "1:1:4")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M6/l" "60n:60n:1u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M6/w" "60n:60n:20u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M6/fingers" "1:1:8")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M5/l" "60n:60n:1u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M5/w" "60n:60n:10u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M5/fingers" "1:1:8")
- ocnxlSweepParam("bgOptimization/opamp/schematic/R0/w" "500n:500n:4u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/R0/l" "5u:5u:30u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/R1/w" "500n:500n:4u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/R1/l" "5u:5u:30u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/C0/lt" "1u:1u:30u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/C0/wt" "1u:1u:30u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M0/l" "60n:60n:1u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M0/w" "60n:60n:10u")
- ocnxlSweepParam("bgOptimization/opamp/schematic/M0/fingers" "1:1:8")
- ;====================== Model Group setup ==========================================
- ;====================== Corners setup ==========================================
- ocnxlCorner( "Process"
- '(
- ("variable" "temperature" "0,25,80")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?section "\"ff_lib\" \"fs_lib\" \"sf_lib\" \"ss_lib\"")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("modelGroup" "")
- )
- )
- ocnxlCorner( "MC"
- '(
- ("variable" "temperature" "25")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?section "\"mc_lib\"")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("model" "/opt/pdk/tsmc65/CadenceKit/tsmcN65/../models/spectre/toplevel.scs" ?enabled nil ?section "")
- ("modelGroup" "")
- )
- )
- ;====================== Test v/s corners setup =================================
- ;====================== Job setup ==============================================
- ocnxlJobSetup( '(
- "blockemail" "1"
- "configuretimeout" "300"
- "distributionmethod" "Local"
- "lingertimeout" "300"
- "maxjobs" "5"
- "name" "ADE XL Default"
- "preemptivestart" "1"
- "reconfigureimmediately" "1"
- "runtimeout" "-1"
- "showerrorwhenretrying" "1"
- "showoutputlogerror" "0"
- "startmaxjobsimmed" "1"
- "starttimeout" "300"
- ) )
- ;====================== Disabled items =========================================
- ocnxlDisableCorner("Process")
- ;====================== Run Mode Options ======================================
- ocnxlLocalOptimizationOptions( ?effort "BFGS" ?runFullEvaluation "0" ?meetAllGoals "1" ?timeLimit "" ?numPoints "" )
- ocnxlSizeOverCornersOptions( ?soclazy "1" ?socoptmethod "neocircuitGlobal" ?socreferencepoint "1" ?soceffort "0" ?soctimelimit "" ?socmaxpoints "3000" ?sociterations "3" ?socstopifnoimprovement "0" ?socfinaloptmethod "BFGS" ?socfinalopttimelimit "" ?socfinaloptmaxpoints "1000" ?socrunfinallo "1" )
- ocnxlGlobalOptimizationOptions( ?refPoint "0" ?runFullEvaluation "0" ?meetAllGoals "1" ?timeLimit "" ?numPoints "" ?noImprvPoints "" ?pointsAfterAllSpecsSatisfied "" )
- ocnxlMonteCarloOptions( ?mcMethod "all" ?mcNumPoints "100" ?mcNumBins "" ?mcStopEarly "0" ?mcYieldTarget "99.73" ?mcYieldAlphaLimit "0.05" ?samplingMode "random" ?saveProcess "1" ?saveMismatch "0" ?useReference "0" ?donominal "1" ?saveAllPlots "0" ?monteCarloSeed "" ?mcStartingRunNumber "" )
- ;====================== Starting Point Info ======================================
- ocnxlStartingPoint( '(
- ("parameter" "bgOptimization/opamp/schematic/M3/fingers" "2")
- ("parameter" "bgOptimization/opamp/schematic/M3/l" "660.0n")
- ("parameter" "bgOptimization/opamp/schematic/M3/w" "13.2u")
- ("parameter" "bgOptimization/opamp/schematic/M1/fingers" "8")
- ("parameter" "bgOptimization/opamp/schematic/M1/l" "600n")
- ("parameter" "bgOptimization/opamp/schematic/M1/w" "19.02u")
- ("parameter" "bgOptimization/opamp/schematic/M7/l" "480.0n")
- ("parameter" "bgOptimization/opamp/schematic/M7/w" "360.0n")
- ("parameter" "bgOptimization/opamp/schematic/M7/fingers" "1")
- ("parameter" "bgOptimization/opamp/schematic/M9/l" "840.0n")
- ("parameter" "bgOptimization/opamp/schematic/M9/w" "5.76u")
- ("parameter" "bgOptimization/opamp/schematic/M9/fingers" "4")
- ("parameter" "bgOptimization/opamp/schematic/M6/l" "900n")
- ("parameter" "bgOptimization/opamp/schematic/M6/w" "2.82u")
- ("parameter" "bgOptimization/opamp/schematic/M6/fingers" "1")
- ("parameter" "bgOptimization/opamp/schematic/M5/l" "360.0n")
- ("parameter" "bgOptimization/opamp/schematic/M5/w" "540.0n")
- ("parameter" "bgOptimization/opamp/schematic/M5/fingers" "4")
- ("parameter" "bgOptimization/opamp/schematic/R0/w" "500n")
- ("parameter" "bgOptimization/opamp/schematic/R0/l" "30u")
- ("parameter" "bgOptimization/opamp/schematic/R1/w" "3u")
- ("parameter" "bgOptimization/opamp/schematic/R1/l" "30u")
- ("parameter" "bgOptimization/opamp/schematic/C0/lt" "27.0u")
- ("parameter" "bgOptimization/opamp/schematic/C0/wt" "27.0u")
- ("parameter" "bgOptimization/opamp/schematic/M0/l" "300n")
- ("parameter" "bgOptimization/opamp/schematic/M0/w" "4.92u")
- ("parameter" "bgOptimization/opamp/schematic/M0/fingers" "4")
- )
- )
- ;====================== Run command ============================================
- ocnxlRun( ?mode 'globalOptimization ?nominalCornerEnabled nil ?allCornersEnabled t ?allSweepsEnabled t)
- ocnxlOutputSummary(?exprSummary t ?specSummary t ?detailed t ?wave t)
- ;====================== End XL Mode command ===================================
- ocnxlEndXLMode()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement