• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. MonteCarlo simulation is taking much longer time than e...

Stats

  • Locked Locked
  • Replies 14
  • Subscribers 125
  • Views 19961
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

MonteCarlo simulation is taking much longer time than expected

RFStuff
RFStuff over 7 years ago

Dear All,

I am simulating Monte-carlo of 100 runs on a test-bench with PSS/PAC analysis.

The standalone PSS/PAC run takes just 30 seconds.

But when I run with Monte-carlo, it is taking much longer time than expected. Each run is taking more than 5 minutes. 

More interestingly, as the run number increases, the time increases further. For example, the run#5 took 2 minutes. Now the run#45 is taking 12 minutes.

Why this is happening like this ?  I have disabled  Montecarlo data Save and Plot save.

Could anybody please tell how to get rid of this issue ?

My Virtuoso and Spectre versions are below:-

virtuoso -W
sub-version IC6.1.6-64b.500.14
spectre -W
sub-version 14.1.0.988.isr20

Kind Regards,

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    No idea, without seeing it. I don't recall seeing this reported. It's possible that mismatch can take more time because it separates the models to be individual per device, and also some of the device combination that happens when using APS is turned off so the matrices to be solved are bigger as a result. 

    I'd suggest first trying with a current version of spectre, and then contacting customer support if it persists.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • RFStuff
    RFStuff over 7 years ago in reply to Andrew Beckett

    Dear Andrew,

    Thanks a lot for your suggestions. I will install and try with the latest version.

    Could you please tell why as the run number increases the time taken by each run is increasing ?

    ( For example, the run#5 took 2 minutes. Now the run#45 is taking 12 minutes. )

    Kind Regards,

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to RFStuff

    Each new major release of any of our software requires you to ensure you have the latest version in your license file. The features are the same, but the version numbers get increased (this is to ensure that a customer is on maintenance). You can order updated licenses yourself through support.cadence.com and then going to Software->Order Licenses (or something like that).

    If the simulation is getting slower per iteration, it's highly unlikely that running through OCEAN will make it any better (since it's the same simulator and netlist, including analysis statements underneath). The primary way is to run Monte Carlo using OCEAN XL, which is in essence a scripted equivalent of the ADE XL flow. The old monteRun/monteCarlo functions should still work for legacy support - but they end up the same underneath.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • RFStuff
    RFStuff over 7 years ago in reply to Andrew Beckett

    Ok, so I have to wait for customer support reply.

    By the way, if I set run points = 100, it shows in the run bar as  " running- 74 /200 complete". It should have been " running- 74 /100 complete". Why it is so ?

    Kind Regards,

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to RFStuff

    Do you have more than one corner enabled? Or corner and nominal? Perhaps a screen shot would help...

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • RFStuff
    RFStuff over 7 years ago in reply to Andrew Beckett

     H

    Attached is the snapshot.  Also  I want to know whether it is becoming slow because of many output parameters to be evaluated as shown in the snapshot ?

    I have attached the generated the oceanScript  file of the ADEXL setup (ocean.txt) and the  oceanScript output parameter evaluation file (oceanMC.ocn) which  ADEXL refers.

    Fullscreen ocean.txt Download
    ;====================== Set to XL mode =========================================
    ocnSetXLMode()
    ocnxlProjectDir( "/home/manas/simulation_IC616_130nm" )
    ocnxlTargetCellView( "RES_FB_NC_REVISIT_NEW" "TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA" "adexl" )
    ocnxlResultsLocation( "" )
    ocnxlSimResultsLocation( "" )
    
    ;====================== Tests setup ============================================
    
    ;---------- Test "RES_FB_NC_REVISIT_NEW:TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA:4" ------------- 
    ocnxlBeginTest("RES_FB_NC_REVISIT_NEW:TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA:4")
    simulator( 'spectre )
    design( "RES_FB_NC_REVISIT_NEW" "TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA" "schematic")
    modelFile( 
        '("/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_12_rf_v102_mc_corner.lib.scs" "mc")
        '("/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/mm130e_mom_v041_mc_corner.lib.scs" "typ")
        '("/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_hs12_v241_mc_corner.lib.scs" "ss")
        '("/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_res_v101_mc_corner.lib.scs" "res_typ")
        '("/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_hg_rvt33_v161_mc_corner.lib.scs" "ss")
    )
    analysis('pnoise ?MultiEna t  ?MultiEna1 t  ?sweeptype "absolute"  
    		?start "0.1M"  ?stop "2.5M"  ?step "0.5M"  ?maxsideband "100"  
    		?p "/MAIN_TIA_I_OUT"  ?n "/gnd!"  ?oprobe ""  ?iprobe "/PORT1"  
    		?refsideband "1"  )
    analysis('pac ?outType "Voltage"  ?start "2G-100M"  ?stop "2G+100M"  
    		?step "1M"  ?values list("2.0001G" "2.00001G" "1.9999G")  ?maxsideband ""  
    		?sidebands list("0" "-1" "-20" "-22" "-25" "-27" "-50" "-52" "-10" "-12")
    		?freqaxis "out"  )
    analysis('pss ?fund "2G"  ?harms "10"  ?errpreset "moderate"  
    		?tstab "0.1u"  ?saveinit "yes"  ?method "gear2only"  ?tstabmethod "gear2only"  
    		?maxacfreq "200G"  )
    analysis('dc ?saveOppoint t  )
    desVar(	  "RES_TIA_IN" 0	)
    desVar(	  "LO_0" "\"/home/manas/DIVIDER_OUTPUT_CAPTURE/OLD_DIVIDER/LO_0_2GHZ_PEX_350_SS_OLD.vcsv\""	)
    desVar(	  "LO_180" "\"/home/manas/DIVIDER_OUTPUT_CAPTURE/OLD_DIVIDER/LO_180_2GHZ_PEX_350_SS_OLD.vcsv\""	)
    desVar(	  "LO_270" "\"/home/manas/DIVIDER_OUTPUT_CAPTURE/OLD_DIVIDER/LO_270_2GHZ_PEX_350_SS_OLD.vcsv\""	)
    desVar(	  "LO_90" "\"/home/manas/DIVIDER_OUTPUT_CAPTURE/OLD_DIVIDER/LO_90_2GHZ_PEX_350_SS_OLD.vcsv\""	)
    desVar(	  "RSW_OFF" 400K	)
    desVar(	  "RF" 10k	)
    desVar(	  "RES_COMP_L" 18K	)
    desVar(	  "RES_FB" 6K	)
    desVar(	  "TIA_MAIN_RF" 6K	)
    desVar(	  "TIA_AUX_RF" 5K	)
    desVar(	  "R_BB" 200	)
    desVar(	  "RSW_MAIN_NOISE" 15	)
    desVar(	  "RSW_AUX" 15	)
    desVar(	  "RSW_AUX_NOISE" 15	)
    desVar(	  "RSW_FB_L" 10	)
    desVar(	  "RSW_FB_R" 10	)
    desVar(	  "MIX_FILT" 10	)
    desVar(	  "MIX_FILT_NOISE" 10	)
    desVar(	  "RSW_MAIN" 10	)
    desVar(	  "RSW_ON" 1	)
    desVar(	  "prf" 0	)
    desVar(	  "MIX_FILT_NON_COEFF" .7	)
    desVar(	  "RSW_MAIN_NON_COEFF" .7	)
    desVar(	  "RSW_AUX_NON_COEFF" .7	)
    desVar(	  "VBIAS" 656.39m	)
    desVar(	  "SWITCH_ON" 600.5m	)
    desVar(	  "SWITCH_OFF" 600.1m	)
    desVar(	  "GM_TIA" 400m	)
    desVar(	  "R_GM_NOISE" 150m	)
    desVar(	  "GM_RF" 60m	)
    desVar(	  "L_BOND" 2.2n	)
    desVar(	  "T" 0.5n	)
    desVar(	  "C_MIX_FILT" 102p	)
    desVar(	  "C_BOOST_FB" 45p	)
    desVar(	  "TIA_AUX_CF" 14p	)
    desVar(	  "C_MIX_FILT_PAR" 12p	)
    desVar(	  "TIA_MAIN_CF" 12p	)
    desVar(	  "T_FALL" 10p	)
    desVar(	  "T_RISE" 10p	)
    desVar(	  "C_BLOCK" 1p	)
    desVar(	  "GM_RF_3RD" 0	)
    desVar(	  "GM_TIA_3RD" 0	)
    desVar(	  "sigma" 3	)
    envOption(
    	'firstRun  nil 
    	'analysisOrder  list("tran" "dc" "pss" "pac" "pxf" "psp" "pnoise" "pstb" "hb" "hbac" "hbnoise" "pz" "dcmatch" "stb" "envlp" "ac" "lf" "noise" "xf" "sp" "qpss" "qpac" "qpnoise" "qpxf" "qpsp" "sens" "acmatch") 
    )
    option(	'dochecklimit  "no" 
    	'generalnoiseinst  list("/M0_GM_PMOS" "/M36_GM_NMOS" "/M22_FILT" "/M23" "/M24" "/M25" "/M17_MAIN_MIX" "/M16" "/M15" "/M14") 
    	'generalnoiseinstonoff  "off" 
    	'temp  "120.0" 
    	'iabstol  "1e-14" 
    	'vabstol  "1e-8" 
    	'reltol  "1e-2" 
    )
    option( ?categ 'turboOpts
    	'numThreads  "10" 
    	'uniMode  "APS" 
    )
    saveOption( 'currents "all" )
    saveOption( 'save "all" )
    saveOpPoint( "/M22_FILT" ?operatingPoints "cgg  cdd vth gds" )
    saveOpPoint( "/M17_MAIN_MIX" ?operatingPoints "cgg cdd vth gds" )
    saveOpPoint( "/M0_GM_PMOS" ?operatingPoints "cgg cdd vth gm gds" )
    saveOpPoint( "/M36_GM_NMOS" ?operatingPoints "cgg cdd vth gm gds vds" )
    temp( 120.0 ) 
    ocnxlOutputTerminal( "/V0_GM_OUT/PLUS")
    ocnxlOutputTerminal( "/V32_GM_FILT/PLUS")
    ocnxlOutputExpr( "db(vh('pac \"/MAIN_TIA_I_OUT\" '-1))" ?name "v /MAIN_TIA_I_OUT h=-1; pac dB20(V)" ?plot t ?save t)
    ocnxlOutputOceanScript( "/home/manas/work_cad_IC616_130nm/RES_FB_NC_REVISIT_NEW/TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA/adexl/test_states/RES_FB_NC_REVISIT_NEW/TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA/spectre/RES_FB_NC_REVISIT_NEW:TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA:4_active/outputsScriptsDir/oceanScript_PSS_MC.ocn" ?name "ocnMeasure_0" ?plot t)
    ocnxlEndTest() ; "RES_FB_NC_REVISIT_NEW:TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA:4"
    
    ;====================== Sweeps setup ===========================================
    ocnxlSweepVar("RES_TIA_IN" "0")
    ocnxlSweepVar("LO_0" "\"/home/manas/DIVIDER_OUTPUT_CAPTURE/OLD_DIVIDER/LO_0_2GHZ_PEX_350_SS_OLD.vcsv\"")
    ocnxlSweepVar("LO_180" "\"/home/manas/DIVIDER_OUTPUT_CAPTURE/OLD_DIVIDER/LO_180_2GHZ_PEX_350_SS_OLD.vcsv\"")
    ocnxlSweepVar("LO_270" "\"/home/manas/DIVIDER_OUTPUT_CAPTURE/OLD_DIVIDER/LO_270_2GHZ_PEX_350_SS_OLD.vcsv\"")
    ocnxlSweepVar("LO_90" "\"/home/manas/DIVIDER_OUTPUT_CAPTURE/OLD_DIVIDER/LO_90_2GHZ_PEX_350_SS_OLD.vcsv\"")
    ocnxlSweepVar("RSW_OFF" "400K")
    ocnxlSweepVar("RF" "10k")
    ocnxlSweepVar("RES_COMP_L" "18K")
    ocnxlSweepVar("RES_FB" "6K")
    ocnxlSweepVar("TIA_MAIN_RF" "6K")
    ocnxlSweepVar("TIA_AUX_RF" "5K")
    ocnxlSweepVar("R_BB" "200")
    ocnxlSweepVar("RSW_MAIN_NOISE" "15")
    ocnxlSweepVar("RSW_AUX" "15")
    ocnxlSweepVar("RSW_AUX_NOISE" "15")
    ocnxlSweepVar("RSW_FB_L" "10")
    ocnxlSweepVar("RSW_FB_R" "10")
    ocnxlSweepVar("MIX_FILT" "10")
    ocnxlSweepVar("MIX_FILT_NOISE" "10")
    ocnxlSweepVar("RSW_MAIN" "10")
    ocnxlSweepVar("RSW_ON" "1")
    ocnxlSweepVar("prf" "-60")
    ocnxlSweepVar("MIX_FILT_NON_COEFF" ".7")
    ocnxlSweepVar("RSW_MAIN_NON_COEFF" ".7")
    ocnxlSweepVar("RSW_AUX_NON_COEFF" ".7")
    ocnxlSweepVar("VBIAS" "656.39m")
    ocnxlSweepVar("SWITCH_ON" "600.5m")
    ocnxlSweepVar("SWITCH_OFF" "600.1m")
    ocnxlSweepVar("GM_TIA" "400m")
    ocnxlSweepVar("R_GM_NOISE" "150m")
    ocnxlSweepVar("GM_RF" "60m")
    ocnxlSweepVar("L_BOND" "2.2n")
    ocnxlSweepVar("T" "0.5n")
    ocnxlSweepVar("C_MIX_FILT" "102p")
    ocnxlSweepVar("C_BOOST_FB" "45p")
    ocnxlSweepVar("TIA_AUX_CF" "14p")
    ocnxlSweepVar("C_MIX_FILT_PAR" "12p")
    ocnxlSweepVar("TIA_MAIN_CF" "12p")
    ocnxlSweepVar("T_FALL" "10p")
    ocnxlSweepVar("T_RISE" "10p")
    ocnxlSweepVar("C_BLOCK" "1p")
    ocnxlSweepVar("GM_RF_3RD" "0")
    ocnxlSweepVar("GM_TIA_3RD" "0")
    ocnxlSweepVar("C_PI_L" "35p")
    ocnxlSweepVar("C_PI_R" "35p")
    ocnxlSweepVar("C_GM_FB" "1f")
    ocnxlSweepVar("sigma" "3")
    
    ;====================== Model Group setup ==========================================
    
    ;====================== Corners setup ==========================================
    ocnxlCorner( "C0"
       '(
          ("variable" "temperature" "-40:40:125")
          ("variable" "prf" "-60")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/L130E_HS12_V241.lib.scs" ?enabled nil  ?section "\"ss\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/MML130E_RES_V152.lib.scs" ?enabled nil  ?section "\"res_typ\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/mm130e_mom_v031.lib.scs" ?enabled nil  ?section "\"typ\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/L130E_HG_RVT33_V131.lib.scs" ?enabled nil  ?section "\"ss\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_12_rf_v102_mc_corner.lib.scs" ?section "\"ss\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_hs12_v241_mc_corner.lib.scs" ?section "\"ss\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_res_v101_mc_corner.lib.scs" ?section "\"res_typ\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_hg_rvt33_v161_mc_corner.lib.scs" ?section "\"ss\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/mm130e_mom_v041_mc_corner.lib.scs" ?section "\"typ\"")
          ("modelGroup" "")
       )
    )
    ocnxlCorner( "C1"
       '(
          ("variable" "temperature" "120")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/L130E_HS12_V241.lib.scs" ?enabled nil  ?section "")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/MML130E_RES_V152.lib.scs" ?enabled nil  ?section "")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/mm130e_mom_v031.lib.scs" ?enabled nil  ?section "")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/L130E_HG_RVT33_V131.lib.scs" ?enabled nil  ?section "")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_12_rf_v102_mc_corner.lib.scs" ?section "\"mc\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_hs12_v241_mc_corner.lib.scs" ?section "\"ss\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_res_v101_mc_corner.lib.scs" ?section "\"res_typ\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/l130e_hg_rvt33_v161_mc_corner.lib.scs" ?section "\"ss\"")
          ("model" "/home/manas/work_cad/UMC130FDKMFC_B08_PB/Models/Spectre/Monte_Carlo/mm130e_mom_v041_mc_corner.lib.scs" ?section "\"typ\"")
          ("modelGroup" "")
       )
    )
    
    ;====================== Test v/s corners setup =================================
    
    ;====================== Job setup ==============================================
    ocnxlJobSetup( '(
    	"blockemail" "1"
    	"configuretimeout" "300"
    	"distributionmethod" "Local"
    	"lingertimeout" "300"
    	"maxjobs" "1"
    	"name" "ADE XL Default"
    	"preemptivestart" "1"
    	"reconfigureimmediately" "1"
    	"runtimeout" "-1"
    	"showerrorwhenretrying" "1"
    	"showoutputlogerror" "0"
    	"startmaxjobsimmed" "1"
    	"starttimeout" "300"
    	"usesameprocess" "1"
    ) )
    
    ;====================== Disabled items =========================================
    ocnxlDisableCorner("C0")
    
    ;====================== Run Mode Options ======================================
    ocnxlMonteCarloOptions( ?ignoreFlag "0" ?mcMethod "mismatch" ?mcNumPoints "100" ?mcNumBins "" ?mcStopEarly "0" ?mcStopMethod "Significance Test" ?samplingMode "random" ?saveProcess "1" ?saveMismatch "0" ?useReference "0" ?donominal "1" ?saveAllPlots "0" ?monteCarloSeed "" ?mcStartingRunNumber "" ?dumpParamMode "yes" ?dutSummary "RES_FB_NC_REVISIT_NEW:TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA:4%/M25, /M24, /M23, /M22_FILT, /M36_GM_NMOS, /M0_GM_PMOS, /M14, /M15, /M16, /M17_MAIN_MIX, /M10, /M11, /M12, /M13%Schematic%Schematic#" )
    
    ;====================== Starting Point Info ======================================
    
    ;====================== Run command ============================================
    ocnxlRun( ?mode 'monteCarlo ?nominalCornerEnabled t ?allCornersEnabled t ?allSweepsEnabled t)
    ocnxlOutputSummary(?yieldSummary t ?exprSummary nil ?specSummary nil ?detailed nil)
    ocnxlOpenResults()
    
    ;====================== End XL Mode command ===================================
    ocnxlEndXLMode()
    
                        
    Fullscreen oceanMC.txt Download
    simulator( 'spectre )
    saveOption( 'currents "all" )
    saveOption( 'save "all" )
    save( 'v "/net030" "/MAIN_TIA_I_OUTP" )
    save( 'i "/V32_GM_FILT/PLUS" "/V0_GM_OUT/PLUS" )
    resultsDir( "/home/manas/simulation_IC616_130nm/TB_B1DB_GM_MAIN_CMOS_SWITCH_REAL_TIA/spectre/schematic" )
    BB_GAIN=db(vh('pac "/MAIN_TIA_I_OUT" '-1))
    
    BB_GAIN_DC=value(BB_GAIN 100e3)
    BB_GAIN_R_2_5M=value(BB_GAIN 2.5e6)
    BB_GAIN_L_2_5M=value(BB_GAIN -2.5e6)
    
    BB_GAIN_R_40M=value(BB_GAIN 40e6)
    BB_GAIN_R_80M=value(BB_GAIN 80e6)
    BB_GAIN_R_100M=value(BB_GAIN 100e6)
    
    BB_GAIN_R_REJ_40M= BB_GAIN_DC-BB_GAIN_R_40M
    BB_GAIN_R_REJ_80M= BB_GAIN_DC-BB_GAIN_R_80M
    BB_GAIN_R_REJ_100M= BB_GAIN_DC-BB_GAIN_R_100M
    
    
    BB_GAIN_L_40M=value(BB_GAIN -40e6)
    BB_GAIN_L_80M=value(BB_GAIN -80e6)
    BB_GAIN_L_100M=value(BB_GAIN -100e6)
    
    BB_GAIN_L_REJ_40M= BB_GAIN_DC-BB_GAIN_L_40M
    BB_GAIN_L_REJ_80M= BB_GAIN_DC-BB_GAIN_L_80M
    BB_GAIN_L_REJ_100M= BB_GAIN_DC-BB_GAIN_L_100M
    
    
    
    RF_IN_VALUE=db(vh('pac "/RF_IN" '(0)))
    
    RF_REJ_R_40M=value(RF_IN_VALUE 2.040e9)
    RF_REJ_R_80M=value(RF_IN_VALUE 2.080e9)
    RF_REJ_R_100M=value(RF_IN_VALUE 2.1e9)
    
    RF_REJ_L_40M=value(RF_IN_VALUE 1.96e9)
    RF_REJ_L_80M=value(RF_IN_VALUE 1.92e9)
    RF_REJ_L_100M=value(RF_IN_VALUE 1.9e9)
    
    
    
    
    NF_DSB_VALUE=getData("NFdsb" ?result "pnoiseOut1")
    
    NF_DSB_1M=value(NF_DSB_VALUE 1e6)
    NF_DSB_2_5M=value(NF_DSB_VALUE 2.5e6)
    NF_DSB_DELTA=NF_DSB_2_5M - NF_DSB_1M
    
    
    axlOutputResult( BB_GAIN_DC "BB_GAIN_DC")
    axlOutputResult( BB_GAIN_R_2_5M "BB_GAIN_R_2_5M")
    axlOutputResult( BB_GAIN_L_2_5M "BB_GAIN_L_2_5M")
    
    axlOutputResult( BB_GAIN_R_REJ_40M "BB_GAIN_R_REJ_40M")
    axlOutputResult( BB_GAIN_R_REJ_80M "BB_GAIN_R_REJ_80M")
    axlOutputResult( BB_GAIN_R_REJ_100M "BB_GAIN_R_REJ_100M")
    
    axlOutputResult( BB_GAIN_L_REJ_40M "BB_GAIN_L_REJ_40M")
    axlOutputResult( BB_GAIN_L_REJ_80M "BB_GAIN_L_REJ_80M")
    axlOutputResult( BB_GAIN_L_REJ_100M "BB_GAIN_L_REJ_100M")
    
    axlOutputResult( RF_REJ_R_40M "RF_REJ_R_40M")
    axlOutputResult( RF_REJ_R_80M "RF_REJ_R_80M")
    axlOutputResult( RF_REJ_R_100M "RF_REJ_R_100M")
    
    axlOutputResult( RF_REJ_L_40M "RF_REJ_L_40M")
    axlOutputResult( RF_REJ_L_80M "RF_REJ_L_80M")
    axlOutputResult( RF_REJ_L_100M "RF_REJ_L_100M")
    
    
    
    axlOutputResult( NF_DSB_1M "NF_DSB_1M")
    axlOutputResult( NF_DSB_2_5M "NF_DSB_2_5M")
    axlOutputResult( NF_DSB_DELTA "NF_DSB_DELTA")
    
    

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to RFStuff

    OK, there are 200 runs because you have 100 monte carlo points but two corners - nominal (which is the default test model setup) and corner C1. So that's 2*100.

    As for the number of outputs, it's not exactly excessive - and anyway that shouldn't hold up the simulation. I'm assuming you are giving the slowdown related to the times it gives in the spectre log file.

    Anyway, if you're already dealing with customer support, probably wise to continue talking to them - then an AE can look in more detail at your setup, check the timings and so on (especially as it's the weekend for me...)

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • RFStuff
    RFStuff over 7 years ago in reply to Andrew Beckett

    Thanks a lot Andrew.

     But for the shake of clarification of my doubt:-

    I think the nominal should run one time at the beginning. Not for each montecarlo (MC) run.

    If it is running with each MC run then, it is just repeating the same nominal simulation unless nominal simulation is having some parameter variations in itself for each run.

    Moreover, I am running only Mismatch not both Process & Mismatch.

    I am curious to know, with mismatch in which process corner each MC run is simulated ?

    Kind Regards,

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to RFStuff

    There are two different "nominals" here (unfortunately ADE XL uses a rather misleading naming convention). In the Corners section in the Data View assistant there is something called "Nominal". This actually would be better named "Test Models" or something like that - in essence it uses whatever models have been set up in each test rather than the corner setup. Whether it's nominal depends on what was in the test - you could have picked the fast model section or something like that in the test.

    If you have this "nominal" corner enabled, it will run with that set of models, and assuming there are statistical parameters defined (with mismatch in your case) in the model files, then it will run a mismatch analysis around those default models. If you have any other corners enabled, it will run mismatch (or process) centred around the models in that corner too. So as I said before, you have two corners, so that's twice the number of runs - both will be statistical analyses though.

    Secondly there is a choice on the monte carlo options form called "Run nominal simulation". What that does is run a single non-statistical simulation at the beginning of each monte carlo run (i.e. with whatever models you've given it, just without any statistical simulation). Originally this was done as a check - if any of  your measurements failed, it would then not bother to run the rest of the monte carlo. However, that behaviour changed a while back (during IC616) and anyway it was never possible to plot the results of this nominal simulation. So in IC617 this choice has been removed in ADE Assembler and Explorer (it's still there in ADE XL because we didn't want to touch it; however, I think it's a waste of time to use it).

    As for your last question, it will be centred around whatever models you're using - and that will depend on the model setup in the PDK you're using. You may be able to run mismatch-only simulation about any specific corner you pick, or you may have a specific corner for monte carlo which may be based around the typical process corner.

    Hope that helps,

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • RFStuff
    RFStuff over 7 years ago in reply to Andrew Beckett

    Dear Andrew,

    Thanks a lot for trying to clear my doubt.

    But, still I am NOT convinced.

    Let me put it clear about  my understanding from  your FIRST statement -->

    "If you have this "nominal" corner enabled, it will run with that set of models, and assuming there are statistical parameters defined (with mismatch in your case) in the model files, then it will run a mismatch analysis around those default models. If you have any other corners enabled, it will run mismatch (or process) centred around the models in that corner too. So as I said before, you have two corners, so that's twice the number of runs - both will be statistical analyses though." <--

    as below :- 

    Suppose I have two MonteCarlo (Statistical) model files  each for MOS and Capacitors. i.e. MOS_model.process.mc.scs and CAP_model.process.mc.scs.

    MOS model file shows the following options: - TT, SS, FF (process options) and MC (statistical option).  and CAP model file shows the following options:- TYP, MAX, MIN (process options) and MC (statistical option)

    Now for "Nominal" corner let's  say, I kept MOS_model.process.mc.scs --> SS  and CAP_model.process.mc.scs --> MAX.

    What I have understood is:- With each "Nominal" corner run, a MISMATCH analysis  is performed centered around MOS-SS and CAP-MAX corner. 

    For MC corner setting :-  

    I kept MOS_model.process.mc.scs --> MC  and CAP_model.process.mc.scs --> MC.

    What I have understood is:- With each "Nominal" corner run, a MISMATCH analysis  is performed centered around MOS-SS and CAP-MAX corner. 

    So, MC corner is NOT doing anything new from "Nominal" corner. It is just repeating !!

    Now let me put it clear about  my understanding from  your SECOND statement -->

    "As for your last question, it will be centred around whatever models you're using - and that will depend on the model setup in the PDK you're using. You may be able to run mismatch-only simulation about any specific corner you pick, or you may have a specific corner for monte carlo which may be based around the typical process corner."  <--

    Let's say, now I have realized that "Nominal" is just doubling run. So the Idea is disable it.  The MC corner is set as:-  MOS_model.process.mc.scs --> MC  and CAP_model.process.mc.scs --> MC.

    With the above setting, around which process corner does the monte carlo perform the Statistical analysis ?

    If I set MC corner as:-  MOS_model.process.mc.scs --> TT  and CAP_model.process.mc.scs --> MIN,  around which process corner does the monte carlo perform the Statistical analysis ?

    I think it will be MOS-TT and CAP-MIN right ?

    Kind Regards,

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to RFStuff

    I don't think I can answer these questions because it completely depends on how the sections in the model files have been written. It might be that they have statistical mismatch parameters in all sections, and then process+mismatch statistical parameters in the MC section - I have no idea (this is just a wild guess). If it was that, then I'd expect that if the test models were set to:

    MOS_model.process.mc.scs --> SS and CAP_model.process.mc.scs --> MAX

    and the corner was set to:

    MOS_model.process.mc.scs --> MC and CAP_model.process.mc.scs --> MC

    Then I'd expect that a mismatch-only simulation with both these enabled would do mismatch around SS/MAX for the "nominal" and mismatch around typical (assuming that the "MC" section is centred around the typical process corner). So they may not be the same.

    However, this is all guesswork - I have no idea of how your models are set up (since I don't know what technology you're using - and even then I'm not sure I could talk about it here). Presumably the foundry documented what the model sections do and how they should be used somewhere... if not, ask them!

    For your second concern, I can't answer as well because I don't know where these MC model sections are centred about (but I'd guess they are centred around the typical process values). So in your terminology that would be MOS-TT and CAP-TYP (not sure why it would be CAP-MIN). However, this too is guesswork.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • RFStuff
    RFStuff over 7 years ago in reply to Andrew Beckett

    Dear Andrew,

    Thanks a lot. I will talk to the foundry people for the exact clarification.

    Kind Regards,

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • RFStuff
    RFStuff over 7 years ago in reply to Andrew Beckett

    Dear Andrew,

    Thanks a lot. I will talk to the foundry people for the exact clarification.

    Kind Regards,

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information