• 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. post-processing the corner simulation outputs with Ocea...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 143
  • Views 16219
  • 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

post-processing the corner simulation outputs with Ocean

oyayla
oyayla over 6 years ago

Hi,

I have a question about post-processing an corner simulation in ADEXL. I want to plot, do some expressions in all corners. I think this is doable by iterating in results directory with foreach loop as below but am looking for a more elegant way to do this one with maybe built-in functions.

https://community.cadence.com/cadence_technology_forums/f/custom-ic-design/13928/ocean-xl-post-processing-corners

cornergroup = list( '(1 2 3 4) '(5 8 10) '(45 56 59) )

foreach(cornerlist cornergroup

foreach(corner cornerlist

sprintf(dir "/home/user/results/data/Interactive.1/%d/lib:block" corner)

wavef = v("some net" ?result 'tran ?resultsDir dir)

 plot(wavef ?strip x)

)

)

I am trying to open top level psf in this folder with openResults but am getting below Warning since it is not a real psf folder. Is there a way to get all runs better way than foreach above? Also I see some functions like "famValue()" to access individual run in parametric analysis(https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nVTpEAM). Can we use this function for corner simulation or do we have similar function to this for corner analysis?

"WARNING (OCN-6040): The specified directory does not exist, or the directory does not contain valid PSF results.
Ensure that the path to the directory is correct and the directory has a logFile and PSF result files."

Thanks,

Mustafa

My IC version is: ICADV12.3-64b.500.18. Also Tool 'cadenceMMSIM' Current project version '16.10.479

  • Cancel
  • oyayla
    oyayla over 6 years ago

    i have seen that one useful function to get a specific corner can be leafValue() as below. Still I don't know how to load all waveforms such that the below function works as if it works in calculator.

    leafValue(VT("/OUT") "modelFiles" "nom" "temperature" 27 "VDD" 1.8 )

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to oyayla

    What you'd do is use openResults() (or specify ?resultsDir in each access function - to be honest, it's simpler to use openResults() once and then that will set the default location for all functions from that point onwards) and specify /home/user/results/data/Interactive.1/psf/lib:block/psf as the path. This is the root of all the results for the test in question, and will access the entire family of data. Then you can use the value() function to slice out one sweep variable at a time, or leafValue to specify multiple sweep variables at the same time as you've shown above.

    That's easier than loading each individual result directory (you might just need to put an extra "/psf" on the end to avoid the warning, but I probably wouldn't just access the numbered dirs because it's harder to figure out the mapping between actual sweep points and the numbering sequence used).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • unSkilled
    unSkilled over 6 years ago in reply to Andrew Beckett

    I have a similar situation, but not in ADEXL as we don't have the license.

    We have a private tool that helps us to run corners/mc in a distributed way. The results are saved in a folder (e.g. root_folder), which contains subfolders with the name of the corner (e.g. corner1, corner2... cornerN) run. Inside this sub-folders lies the psf.

    I want to access and plot a signal located in each of the psf folders of the N-corners. There's no way of knowing beforehand how many folders will there be and their names. My idea is to try and create a list with the names of the folders inside root_folder and then use a foreach to go through the list. My question is: How to create such a list of N elements whose names correspond to the folder names created after the corners run? There's no need in accessing them in a random way so attaching elements at the beginning of the list using cont is not a problem.

    Thanks in advance.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to unSkilled

    It's not that related to the original question in this thread, but never mind.

    It sounds as if you just want to use getDirFiles("/path/to/root_folder") to read the names in the root folder. You might need to filter them with (say) pcreMatchList to match those which follow a certain pattern.

    Regards,

    Andrew.

    • 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