• 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 SKILL
  3. Question on OCEAN standalone evaluation

Stats

  • Locked Locked
  • Replies 15
  • Subscribers 145
  • Views 20711
  • 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

Question on OCEAN standalone evaluation

trdastidar
trdastidar over 13 years ago

Hi,

Got a question on OCEAN scripts (same applies to artil as well)

I have an ADE L state, from which I save the OCEAN script, and then run it. It runs fine.

Suppose, there is a calculator function in this OCEAN script, which looks like this:

gain_1 = value(dB20(mag(v("/outp" ?result "ac-ac"))) 1)

plot( gain_1 ?expr '( "gain_1" ) )

Now, suppose I want to run the calculator function again (with possibly some modifications). Since the simulation is already run, I remove the entire top part of the OCEAN script, and replace it with a call to openResults, like below:

openResults( "results.psf" ) ; Replace "results.psf" with the actual path of the PSF directory

I run the OCEAN script, but it fails, with the following error:

> WARNING (OCN-6054): The output '/outp' you selected does not exist. Type outputs() to see the list

Now comes the funny part. I change the calculator expression to the following:

gain_1 = value(dB20(mag(v("outp" ?result "ac-ac"))) 1)

That is, I removed the "/" character in the signal name. The script now runs fine!

Could anyone tell me why this happens? I know the workaround for it, but would like to understand why that workaround is necessary at all.

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

    As far as I know, it's the amap dir that's needed (this is consistent with experiments I tried). There's no public API to create the runObjFile (which would then allow arbitrary location of the netlist directory), but provided there is a netlist directory at the same level as the psf directory, and the netlist dir contains the amap, the mapping works fine even without the presence of the runObjFile (i.e. if the simulation has been run standalone outside of OCEAN) (the output below has been trimmed a bit):

    unix_45> ls -R schematic
    schematic:
    netlist/  results.psf/

    schematic/netlist:
    amap/        

    schematic/netlist/amap:
    __multiplefiles_amap_format__  analogLib_npn_spectre.inst
    __new_amap_format__            analogLib_pmos4_spectre.inst
    __nmp_amap_format__            analogLib_pnp_spectre.inst
    __simulator_information__      analogLib_res_spectre.inst
    ampTest.inst                   analogLib_vdc_spectre.inst
    ampTest.net                    analogLib_vsin_spectre.inst
    ampTest.port                   supply.inst
    amplifier.inst                 supply.net
    amplifier.net                  top_level_map.inst
    analogLib_cap_spectre.inst     top_level_map.net
    analogLib_idc_spectre.inst     top_level_map.port
    analogLib_nmos4_spectre.inst

    schematic/results.psf:
    ac.ac                 logFile                     tran.tran
    dcOp.dc               modelParameter.info         tran.tran.0.sig.tmp
    dcOp.sens.dc          outputParameter.info        tran.tran.dat
    dcOpInfo.info         primitives.info.primitives  tran.tran.sig
    designParamVals.info  sens.output                 tran.tran.sig.tmp@
    element.info          spectre.out
    finalTimeOP.info      subckts.info.subckts

    Then I can do:

    ocean> openResults("schematic/results.psf")
    "schematic/results.psf"
    ocean> selectResult('tran)
    stdobj@0x14d09048
    ocean> outputs()
    ("/net9" "/net12" "/out" "/V2/PLUS" "/vdd!"
        "/vin" "/vss!" "/I3/V0/PLUS" "/I3/V2/PLUS" "/I7/gnode"
        "/I7/net7" "/I7/net18" "/I7/net29" "/I7/net39"
    )

    If it can't find the mapping info, outputs() will names in the netlist namespace.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    As far as I know, it's the amap dir that's needed (this is consistent with experiments I tried). There's no public API to create the runObjFile (which would then allow arbitrary location of the netlist directory), but provided there is a netlist directory at the same level as the psf directory, and the netlist dir contains the amap, the mapping works fine even without the presence of the runObjFile (i.e. if the simulation has been run standalone outside of OCEAN) (the output below has been trimmed a bit):

    unix_45> ls -R schematic
    schematic:
    netlist/  results.psf/

    schematic/netlist:
    amap/        

    schematic/netlist/amap:
    __multiplefiles_amap_format__  analogLib_npn_spectre.inst
    __new_amap_format__            analogLib_pmos4_spectre.inst
    __nmp_amap_format__            analogLib_pnp_spectre.inst
    __simulator_information__      analogLib_res_spectre.inst
    ampTest.inst                   analogLib_vdc_spectre.inst
    ampTest.net                    analogLib_vsin_spectre.inst
    ampTest.port                   supply.inst
    amplifier.inst                 supply.net
    amplifier.net                  top_level_map.inst
    analogLib_cap_spectre.inst     top_level_map.net
    analogLib_idc_spectre.inst     top_level_map.port
    analogLib_nmos4_spectre.inst

    schematic/results.psf:
    ac.ac                 logFile                     tran.tran
    dcOp.dc               modelParameter.info         tran.tran.0.sig.tmp
    dcOp.sens.dc          outputParameter.info        tran.tran.dat
    dcOpInfo.info         primitives.info.primitives  tran.tran.sig
    designParamVals.info  sens.output                 tran.tran.sig.tmp@
    element.info          spectre.out
    finalTimeOP.info      subckts.info.subckts

    Then I can do:

    ocean> openResults("schematic/results.psf")
    "schematic/results.psf"
    ocean> selectResult('tran)
    stdobj@0x14d09048
    ocean> outputs()
    ("/net9" "/net12" "/out" "/V2/PLUS" "/vdd!"
        "/vin" "/vss!" "/I3/V0/PLUS" "/I3/V2/PLUS" "/I7/gnode"
        "/I7/net7" "/I7/net18" "/I7/net29" "/I7/net39"
    )

    If it can't find the mapping info, outputs() will names in the netlist namespace.

    Regards,

    Andrew.

    • 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