• 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. optimizeRun() tutorial?

Stats

  • Locked Locked
  • Replies 12
  • Subscribers 128
  • Views 18004
  • 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

optimizeRun() tutorial?

markbeck
markbeck over 15 years ago

Does anyone out there know of a tutorial that shows how to use the optimizeRun command (and supporting commands)?

I'm trying to create an ocean script for running optimizations, but when I try to run it I'm getting errors..

e.g.:  *Error* eval: undefined function - ocniOptVariables

Never heard of it, and it doesn't show up in the finder.

 Thanks,

Mark

  • Cancel
  • Tawna
    Tawna over 15 years ago

     What version of IC software are you using?  IC5141? IC614?

    You may want to take a look at Cadence Online Solution (This one just happens to be for IC5141)

     http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:ViewSolution;solutionNumber=11118188

    It shows how you can use an OCEAN script to run an Optimization Analysis inside of a parametric analysis.  It may not be exactly what you are looking for, but be close enough to give you an idea of what you can do.

     You also may want to take a look at the examples in the software hierarchy at:

    <cds>/tools/dfII/samples/artist/OCEAN/optimization

     

     best regards,

     Tawna Wilsey

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • markbeck
    markbeck over 15 years ago

    Thanks!  That's pretty much whan I was looking for.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • markbeck
    markbeck over 15 years ago

     Ok... so that tutorial works in 5.1, but in 6.1.3, it breaks and gives me the error listed above"

     *Error* eval: undefined function - ocniOptPerformances

     Was that functionality removed in Cadence 6.1x?

    How do I do optimizations in 6.1.x with ocean? 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Tawna
    Tawna over 15 years ago

    Hi Mark,

    Optimization is entirely different in IC6.1.x. (Which is why I didn't "go there" in my last response...)  :-)

    The good news is Optimization is much better in IC6.1.x!

     

    I recommend taking a look at the following document (Virtuoso Migration Guide)

    http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=/cicMigGuide/cicMigGuide6.1.4/5251to61.html

     

    The "EDFM" capabilities (Corners, Monte Carlo analysis and Optimization) are no longer accessible from ADE L. You must use ADE XL to use Corners and Monte Carlo analysis, and ADE GXL to use optimization technology. The optimization technology is based upon capabilities that existed in NeoCircuit 3.4. The original ADE optimization algorithms and set-up are no longer supported.

     

    You will want to read Chapter 2 on Circuit Optimization in the Virtuoso GXL User Guide before you even think about OCEAN.

     http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=/adeGXL/adeGXL6.1.4/adeGXLOptimize.html

     

    Once you're comfortable with that.....For OCEAN, you'll want to check out OCEAN commands in XL mode

    http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=/oceanref/oceanref6.1.4/chap15.html

     

    If you have not yet taken the IC6.1.X training classes through Cadence Educational Services, I recommend looking into them.

     

    best regards,

    Tawna

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • markbeck
    markbeck over 15 years ago

    Hi Tawna,

     Do you know of any example ocnxl scripts?

    I'm trying to slog my way through Chapter 2', but I don't use ADE (switched to ocean/skill early on).  I'd found the ocean XL documentation, but it is just a listing of commands without any full example script.

    Update:  

    I found this example script embedded in a pdf of a power point presentation...Posting it here to keep track of it.

    ocnSetXLMode()
    ocnxlTargetCellView( "ADC_YieldOptim" "adc_sample_hold" "adexl" )

    ocnxlBeginTest("ADC_YieldOptim:Test_Sims")
        simulator( 'spectre )
        design( "ADC_YieldOptim" "Test_Sims" "config")
        modelFile( '("$AMS/models/gpdk090/MonteCarlo/gpdk090_mc.scs" "TT"))
        analysis('ac ?start "100k" ?stop "1M" ?dec "20" ) ;; Some options not shown
        desVar( "ampl" 200m )
        desVar( "clk_freq" 125M)
        temp( 27 )
        ocnxlOutputExpr( "bandwidth((VF(\"/out\") / VF(\"/in\")) 3 \"low\")" ?name “bw")
    ocnxlEndTest()

    ocnxlBeginTest("ADC_YieldOptim:Test_CMRR")
        simulator( 'spectre )
        design( "ADC_YieldOptim" "Test_CMRR" "config")
        modelFile( '("$AMS/models/gpdk090/MonteCarlo/gpdk090_mc.scs" "TT"))
        analysis('ac ?start "1M" ?stop "10G" ) ;; Some options not shown
        desVar("ACmag" 1)
        temp( 27 )
        ocnxlOutputSignal(“/out” ?plot t)
        ocnxlOutputExpr( "ymin(dB20(VF(\"/out\")))" ?name "CMRR")
    ocnxlEndTest()

    ocnxlPutGreaterthanSpec( "ADC_YieldOptim:Test_Sims:1" “bw(3dB)" "110k")
    ocnxlPutLessthanSpec( "ADC_YieldOptim:Test_CMRR:1" "CMRR" "-100" ?weight "1")
    ocnxlSweepParam("ADC_YieldOptim/adc_sample_hold/schematic/NM4/fw" "1u:0.5u:30u")
    ocnxlSweepParam("ADC_YieldOptim/adc_sample_hold/schematic/NM4/l" "280n:10n:2u")
    ocnxlCorner( "C0" '(
    ("variable" "temperature" "-50")
    ("model" "$AMS/models/gpdk090/MonteCarlo/gpdk090_mc.scs" ?section "\"MC\"") ))
    ocnxlCorner( "C1“ '(
    ("variable" "vdd" “3.5")
    ("model" "$AMS/models/gpdk090/MonteCarlo/gpdk090_mc.scs" ?enabled nil ?section "\"FS\"") ) )
    ocnxlDisableTest("ADC_YieldOptim:Test_Sims")
    ocnxlDisableSweepVar("ampl")
    ocnxlLocalOptimizationOptions( ?effort "fine" ?meetAllGoals "1" ?timeLimit "" ?numPoints "" )
    ocnxlRun( ?mode ‘localOptimization ?nominalCornerEnabled t ?allCornersEnabled t ?allSweepsEnabled t)
    ocnxlOutputSummary(?exprSummary t ?specSummary t ?detailed t ?wave t)
    ocnxlEndXLMode()

    Mark

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • stacyw
    stacyw over 15 years ago

    Hi Mark,

    Tawna asked me to jump in here for a moment, as I do a lot of work with the ADE XL and GXL (optimization, etc.) technology .  In IC 6.1, optimization falls under ADE GXL.  The engines have been significantly enhanced and offer several powerful algorithms.  The optimizer works from an ADE XL test setup and supports multiple testbenches, specifications and corners.  It can optimize a large number of design parameters over a wide variety of measurements.  Hence, the OceanXL script you found.  It sets up the tests, corners, measurements, specs and variables and then runs local optimization.

     I would say your best bet for learning this technology would be to start off using it from the GUI, saving the resulting setup to an OceanXL script and working from there.  There are several new videos in the Video Library at http://support.cadence.com which show you how to set up and run simulations, specifications, sweeps and parameterization in ADE XL.  After that, optimization is essentially just a matter of setting the Run Mode to Local or Global Optimization and hitting the run button.

    Stacy

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • markbeck
    markbeck over 15 years ago

     Thanks for the info.

    With the previous script I was able to figure out enough stuff that I was able to get it to stop complaining about errors and start complaining about licence tokens.  Turns out that we don't have the GXL option and this was all just a fun exercise.

     Thanks for all the help anyway,

    Mark

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • WGhabrial
    WGhabrial over 15 years ago

    Hi Stacy,

    I am new to IC 6, and I am trying to do what I used to do quite easily in IC 5. I am trying to do a curve fitting of a filter response to an ideal response. This used to be a typical example and was done simply with the optimizer in IC 5. I looked at "Circuit Optimization" chapter in the ADE GXL manual and it doesn't discuss "curve fitting". The specification target has always to be a numeric value. Can you please direct me to a tutorial or something that explains how to do this?

     Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • stacyw
    stacyw over 15 years ago

    Hi,

     In my experience, curve-fitting for optimization is most easily done simply by taking the difference of 2 waveforms, applying the abs() function to get the absolute value, measuring the maximum value (ymax) of the result and then create a goal for that number to be less than some small value (or to be minimized).  E.g. ymax(abs(sig1-sig2)) 

    There is also a function called "compare" in the calculator which allows you to specify an absolute and/or relative tolerance for comparing 2 waveforms and returns a waveform with zero value in the domain where the tolerances are met.  You can read about it in the "Calculator Functions" section of the Virtuoso Visualization and Analysis (ViVA) Tool User Guide.

     I hope this is useful.

    Regards,
    Stacy

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • WGhabrial
    WGhabrial over 15 years ago
    Hi Stacy,

    Thanks a lot for the speedy response.

    I was thinking of the same thing myself, although it is not straightforward. And I think all optimizers (including the IC 5 now obsolete optimizer) have a special match function for curve fitting. The new optimizer in GXL is clearly missing this feature.

    Anyway, I tried what you suggested, both with a simple difference and the compare function. It did not work. For a simple one parameter optimization (first order filter) it works. But for a 5th order filter with 5 parameters C1, C2, .. C5, it runs through 200 simulations before I have to stop it and the resulting &quot;optimized&quot; response is not even close to the target one. Just for your information, I have done this before hundreds of times, and with the old optimizer it would typically take about 3 to 4 iterations each of 6 to7 simulations to converge perfectly no matter what starting point.

    I can send you test case if you wish.

    Thanks a lot. I appreciate it.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
>

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