• 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. Mixed-Signal Design
  3. print noise summary from ADE assembler does not work as...

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 65
  • Views 10092
  • 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

print noise summary from ADE assembler does not work as explained in cadence support website

NewScreenName
NewScreenName over 2 years ago

Hi,

I am trying to get the noise summary of a noise/pnoise simulation to be automatically plotted, or at least to be like any other output waveform where I could just double click after the simulation and have it to pop up without having to do for every simulation/corner the procedure RMB, print noise summary, enter which devices to include, which integration limits etc.

I have followed the instructions given here: https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000007MViHEAW&pageName=ArticleContent 

However, it seems to me that this is just creating a noisesummary directory, and stores there the results. When the simulation finishes it will plot automatically the instances noise vs frequency (for those instances where I explicitly defined the output like (ocnGenNoiseSummary(1 ?result 'noise) && getData("R0:total" ?result "noisesummary")).

However if my test is called noise_summary_1, I noticedthat upon double-click on (ocnGenNoiseSummary(1 ?result 'noise) && getData("R0:total" ?result "noisesummary")) nothing will be plotted (and it seems to be because it tries to retrieve the data from directory ./noise_summary/maestro/results/maestro/Interactive.0/psf/noise_summary_1/psf rather than from ./noise_summary/maestro/results/maestro/Interactive.0/1/noise_summary_1/psf. How to fix this? 

Also, according to what I understood this should have allowed me to get directly a form like the one in picture below, as also it seems like me the output noiseSummary('integrated ?result "noise" ?from 1000 ?to 100000 ?output "./integ_noise.txt" ?hierLevel 1 ?deviceType 'all ?noiseUnit "V^2") has all the required information to do that

but after simulation it just shows an empty row in the output tab

Have I misunderstood it, or should I be able to automatically get a tab like the one from the first picture I posted? And if so, which steps am I making wrong here?

In case it was useful information, this is the netlist:

virtuoso version:

Thank you very much

Best regards

  • Cancel
  • ShawnLogan
    ShawnLogan over 2 years ago

    Dear NewScreenName,

    NewScreenName said:
    I am trying to get the noise summary of a noise/pnoise simulation to be automatically plotted,
    NewScreenName said:

    I have followed the instructions given here: https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000007MViHEAW&pageName=ArticleContent 

    However, it seems to me that this is just creating a noisesummary directory,

    There are two sets of instructions from my interpretation of your reference.

    The first uses the ocean command noiseSummary() and writes the requested noise summary (i.e., integrated or spot) to a filename you specify or a port (i.e., a file you opened with the command outfile() and will eventually close with the close() command). This command does not display the data written to the file nor the port to the display.

    The second uses the ocean ocnGenNoiseSummary() command which writes the noise summary for a given hierarchy level you specify to the current results directory. It will write it in a format that is recognized by ViVA and hence will appear in the Results Browser. As such, it will be written to the directory Interactive.X/<test_name>/psf and not the individual subdirectories of Interactive.X/<test_name>/<simulation_number>.

    NewScreenName said:
    Also, according to what I understood this should have allowed me to get directly a form like the one in picture below, as also it seems like me the output noiseSummary('integrated ?result "noise" ?from 1000 ?to 100000 ?output "./integ_noise.txt" ?hierLevel 1 ?deviceType 'all ?noiseUnit "V^2") has all the required information to do that
    NewScreenName said:
    but after simulation it just shows an empty row in the output tab

    Neither of these options, in my understanding, will write a noise summary in a display window following a simulation. For that, you might consider writing a SKILL script or a UNIX shell script to run at the end of your simulation. The command you included in your post writes the information to the file "./integ_noise.txt" as it is specified to do and hence it makes sense there is an "empty row" in the output tab line for the output.

    NewScreenName said:
    However, it seems to me that this is just creating a noisesummary directory, and stores there the results.

    Yes. This is what the command documentation indicates.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 2 years ago

    Dear NewScreenName,

    My response was classified as spam. Hopefully, it will be released for you to view it in its entirety. In summary, the ocean commands are working as they are documented. Neither will produce a new display window with the noise summary results you specify. A SKILL or shell script or the Results Browser will allow you to view the results in a window.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • NewScreenName
    NewScreenName over 2 years ago in reply to ShawnLogan

    Dear ShawnLogan,

    Thank you for your answer. I hope what I am going to ask next is not in the response you already gave and which has not been released yet.

    My further questions would be:

    1. As the first line of my outputs is noiseSummary('integrated ?result "noise" ?from 1000 ?to 100000 ?output "./integ_noise.txt" ?hierLevel 1 ?deviceType 'all ?noiseUnit "V^2"), shouldn't I expect to find a file in my simulation directory, called integ_noise.txt where I should get something similar to the noise summary I am looking for? If so, as no such file is being created, what steps am I missing?

    2. You mentioned that "A SKILL or shell script or the Results Browser will allow you to view the results in a window". How could I do this via Results Browser? And with SKILL how should this be done?

    Thank you very much

    Best regards

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 2 years ago in reply to NewScreenName

    Dear NewScreenName,

    NewScreenName said:
    1. As the first line of my outputs is noiseSummary('integrated ?result "noise" ?from 1000 ?to 100000 ?output "./integ_noise.txt" ?hierLevel 1 ?deviceType 'all ?noiseUnit "V^2"), shouldn't I expect to find a file in my simulation directory, called integ_noise.txt where I should get something similar to the noise summary I am looking for? If so, as no such file is being created, what steps am I missing?

    Did you also check the "plot" box for your output?

    If so, although the Troubleshooting article you referred to suggests the output file should be in your simulation directory since you provided its path as "./integ_noise.txt", you may need to include some oceanXL commands in a short ocean script to invoke it with Explorer and Assembler. Specifically, if you add an output ocean script in lieu of defining the noiseSummary() command itself as an output, it may work properly.  There is an article that describes this at URL:

    support.cadence.com/.../ArticleAttachmentPortal

    and suggests creating an ocean script file, for example "print_noise_summary.ocn", that contains the following:

    axlAddOutputs(list("printnoise" ))
    printnoise=noiseSummary( 'integrated ?result "noise-noise" ?output "./integ_noise.txt")
    axlOutputResult(printnoise "printnoise")

    This defines an Assembler/Explorer output "printnoise" and will execute the output when a simulation completes. Add this ocean script as an output. You can modify the noiseSummary() arguments to reflect your original arguments. Note that if you are running more than one simulation, each corner will overwrite your specified file. If you are running a number of simulations as you sweep variables and want to save the noise summary for each corner in a unique filename, an enhanced version of the script will provide that feature. The article at URL:

    support.cadence.com/.../ArticleAttachmentPortal

    provides an example ocean script.

    NewScreenName said:
    2. You mentioned that "A SKILL or shell script or the Results Browser will allow you to view the results in a window". How could I do this via Results Browser? And with SKILL how should this be done?

    I may not fully understand what you are asking - sorry!

    However, the ability to view noise results in the Results Browser is available only for the ocnGenNoiseSummary() command. You do not need a SKILL script or ocean script to use the Results Browser.

    I hope this helps NewScreenName!

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to ShawnLogan

    There's no real way to have the noise summary displayed in a window automatically (which would be rather annoying anyway if you have many corners) or even via a right mouse button menu. Probably some customisation could be made to add a custom menu to display the noise summary with a fixed set of parameters, but this seems an odd thing to do because you'd need to define (somewhere) some circuit-specific settings (frequency range, filtering options, sorting etc). I can imagine a way of having the noiseSummary function write to a fixed file in the results structure, and then have a Right Mouse button menu be able to display that file - unfortunately I don't have the bandwidth to put together such an example piece of SKILL code to do this right now (I'm catching up after a week of vacation).

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • NewScreenName
    NewScreenName over 2 years ago in reply to Andrew Beckett

    Thank you Shawn and Andrew for your answers.


    Andrew such SKILL code could be useful indeed, if you do not have time to make such example code, is there any particular reference where I could  read quickly how to do it, given I have never worked with SKILL before?

    Also few other questions:

    1) by following what is written here https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000007MViHEAW&pageName=ArticleContent I manage to get in the outputs tab the integrated noise coming from one component (e.g. a resistor, transistor etc) with (ocnGenNoiseSummary(1 ?result 'noise) && getData("R1:total" ?result "noisesummary")), however I could not figure out how to print the noise coming from an entire instance in the schematic when this is not the primary noise source (e.g. if I have an instance called TransistorArray containing several transistors and resistors, the ocnGenNoiseSummary command is not saving the total noise of TransistorArray, but the one of each transistor/resistor within it, hence I cannot use the syntax getData("TransistorArray:total" ?result "noisesummary")). 
    I am sure there must be some setting which I did not find out to get that number automatically, a part from making a sum of all the instances within TransistorArray (which may be hundreds) ?

    2) when I run a pnoise, with sampled noise taking more than one sample per period (2 in this case, see setup in picture) for each run I get two possible values of integrated noise.
    However when I define the output R1_PSD to be (ocnGenNoiseSummary(1 ?result 'pnoise_sample_pm0) && getData("R1:total" ?result "noisesummary")) and then PSDinteg=integ(R1_PSD 1k 50k " ") this will return the value for the first sample point only, while R1_PSD will not plot any PSD (which it did if I run a standard noise simulation). How can I get the defined output PSDinteg to point to a specified sample, or even better just to returnone integrated noise value per each pnoise sample (and the same for R1_PSD)?

     

    3) I am trying to get one noise summary per each run (versus corners and design varibles), so I have had a look at this: https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000002Jfq3EAC&pageName=ArticleContent&id=a1Od0000002Jfq3EAC&oMenu=Documents%20which%20may%20be%20similar%20to%20this%20document and tried to reproduce it.

    In my testbench I have a design variable Cp (value of the capacitor in the schematic), and then some corners and my code looks like this:

    axlAddOutputs(list("printnoise2"))
    CpValuesList = sweepVarValues("Cp")

    foreach( CpCorner CpValuesList
    sprintf(CpString "%f" CpCorner)
    outFile = strcat( "noise_" CpString ".txt")
    printnoise2=noiseSummary( 'integrated ?result "noise" ?output outFile ?paramValues list(CpCorner))
    )
    axlOutputResult(1 "printnoise2")

    so what I do is I use the Cp variable rather than iDc of the example and rename accordingly in the code. The error comes with CpValuesList = sweepVarValues("Cp") as apparently sweepVarValues does not search the deisgn varibales

    Therefore I suppose the example was referring to a noise analysis where the iDc variable is swept in the analysis itself rather than being a design variable, is that the difference? And how can I have this working when Cp is a design variable?

    Thank you very much

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • NewScreenName
    NewScreenName over 2 years ago in reply to NewScreenName

    In facts referring to point 3, it is not working even when setting a Cp as variable in the noise analysis:

      

    So I am not sure what is the mistake I am making. Referring to the link support.cadence.com/.../ArticleAttachmentPortal I wrote at point 3 of my previous post, I just copied the ocean script:

    axlAddOutputs(list("printnoise2"))
    CpValuesList = sweepVarValues("Cp")

    foreach( CpCorner CpValuesList
    sprintf(CpString "%f" CpCorner)
    outFile = strcat( "noise_" CpString ".txt")
    printnoise2=noiseSummary( 'integrated ?result "noise" ?output outFile ?paramValues list(CpCorner))
    )
    axlOutputResult(1 "printnoise2")

    Only some variable names are changing here with respect to the reference, and there is no such noise summary txt file in the directory where I started virtuoso. The ADE explorer tests setup is quite minimal:

     Where is the mistake?

    (Virtuoso is giving no errors, just the following waning when the simulation is run)

    WARNING (ASSEMBLER-9101): An output measurement in your setup is using an OCEAN script.
    If the script contains any design-related SKILL function, for example, functions with sch or db prefix,
    set the following in .cdsinit to successfully evaluate OCEAN measurements:
    envSetVal("maestro.exprEval" "binaryName" 'string "virtuoso")

    • 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