• 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. Plot an internal node voltage after post-layout simulat...

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 125
  • Views 24849
  • 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

Plot an internal node voltage after post-layout simulation

YutaoLiu
YutaoLiu over 5 years ago

Hi,

I am using  Virtuoso ADE Assembler for post-layout simulation. And the version is ICADV12.3-64b.main.957.

My steps is following

1)I set "save all", ran post-layout sim (transient sim) and get the signal expression from result browser as below,

 v("/i0/Xith0/Xi0/Xthpsf_combo/Xampp/Xth_psf/Xth_sw[0]/Mpassgate2[0]:SRC" ?result "tran").

2) Put the expression in "Outputs Setup", changed Output Save setup back to "Select". Reran the post-layout sim.

It showed "eval err" for that plot. 

The expression of the internal node seems different from the normal output expression

The circuit is big and I will run the simulation with parameter sweep, so I want to set Output Save as "Select" to save hard disk space. 

What should I do to plot the internal node signal in post-layout sim?

Thanks and regards,

Yutao

  • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago

    Dear YutaoLiu,

    YutaoLiu said:

    2) Put the expression in "Outputs Setup", changed Output Save setup back to "Select". Reran the post-layout sim.

    It showed "eval err" for that plot. 

    The expression of the internal node seems different from the normal output expression

    That is correct. There are two options I use to save a selected net. I'm sure other experts have better or different means.

    1. Option 1

    In your netlist directory for one of the simulations, locate the specific node you want to save. The syntax in the nelist can be included in a separate save() statement that can be included with your netlist for simulation. The syntax will be different than the browser.

    2. Option 2

    Create a simple ocean script as follows:

    simulation ('spectre)

    results = strcat ("<path to your psf directory>")

    openResults( results)

    selectResult("tran")

    ocnPrint(?output "outputs.txt" outputs())

    exit()

    Run the ocean script using the path to your results where you did a "save all" and it will create a list of all your outputs in a text file "outputs.txt" that can be used in a save() statement with the proper syntax.

    I hope this helps.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • YutaoLiu
    YutaoLiu over 5 years ago in reply to ShawnLogan

    Hi Shawn,

    Thanks for your reply.

    I would prefer the first option.

    Instance name of the circuit I am looking at is "i0", and the node of interest in the netlist is shown as "Xith0/Xi0/Xthpsf_combo/Xampp/Xth_psf/Xth_sw[0]/Mpassgate2[0]:DRN" 

    So, in the save statement, I wrote as following

    "simulator lang=spectre

    save i0.Xith0\\/Xi0\\/Xthpsf_combo\\/Xampp\\/Xth_psf\\/Xth_sw\[0\]\\/Mpassgate2\[0\]*"

    and in the output setup I defined an expression as following

    "v("i0.Xith0\\/Xi0\\/Xthpsf_combo\\/Xampp\\/Xth_psf\\/Xth_sw\\[0\\]\\/Mpassgate2\\[0\\]:DRN" ?result "tran")"

    After simulation, I saw the node of interest is in the result browser, which means the save statement is correct. However, it still showed "eval error" in the ADE assembler GUI. And then I found that the expression changed automatically. A slash is added at the beginning of the net name, and the dot changes to slash. It is shown as below and the changed part is highlighted by underline

    "v("/i0/Xith0\\/Xi0\\/Xthpsf_combo\\/Xampp\\/Xth_psf\\/Xth_sw\\[0\\]\\/Mpassgate2\\[0\\]:DRN" ?result "tran")"

    After I changed the expression back to what it was and re-evaluated the result, the plot came out.

    Do you have the same experience? Do you know why the expression changes automatically every time the simulation run? Is there any problem I define the expression in the output setup?

    Thanks again,

    Yutao

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to YutaoLiu

    Dear Yutao,

    Dear Yutao,

    YutaoLiu said:
    Do you have the same experience?
    YutaoLiu said:
    After simulation, I saw the node of interest is in the result browser, which means the save statement is correct.

    Great! Spectre did save the correct node for you!

    YutaoLiu said:
    However, it still showed "eval error" in the ADE assembler GUI. And then I found that the expression changed automatically. A slash is added at the beginning of the net name, and the dot changes to slash. It is shown as below and the changed part is highlighted by underline
    YutaoLiu said:
    Do you have the same experience? Do you know why the expression changes automatically every time the simulation run? Is there any problem I define the expression in the output setup?

    Yes. I have seen this issue before and simply change the syntax. In the GUI, the internal node uses a "/" for  the top level cell and precedes it with a "/" whereas in the netlist, it contains only a "." following the top level instance name. There needs to be a "/" to denote that the node is internal to the instance i0. in the GUI. Otherwise, it thinks the node is at the top level of your test bench. Some information on this is in the forum posting at URL:

    community.cadence.com/.../oceanscript-postsim-net-name

    To faciliate your effort, you might consider using a deepprobe in your test bench to directly access the node as a top level node. A deepprobe element uses th synatx of the node in the netlist (as you did) and essentialy makes the net a top level signal. Hence, syntax changes should be eliminated. Information on the deeprobe instance may be found at URL:

    solution 11017972

    or directly at URL:

    https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nWEHEA2&pageName=ArticleContent

    I hope this helps Yutao! Others in the forum may have other and better suggestions.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to YutaoLiu

    Dear Yutao,


    > After simulation, I saw the node of interest is in the result browser,
    > which means the save statement is correct.

    Great! Spectre did save the correct node for you!

    > However, it still showed "eval error" in the ADE assembler GUI.

    > And then I found that the expression changed automatically. A slash is added at the
    > beginning of the net name, and the dot changes to slash. It is shown as below
    > and the changed part is highlighted by underline

    > Do you have the same experience?
    > Do you know why the expression changes automatically every time
    > the simulation run? Is there any problem I define the expression in the output setup?

    Yes. I have seen this issue before and simply change the syntax. In the GUI, the internal node uses a "/" for the top level cell and precedes it with a "/" whereas in the netlist, it contains only a "." following the top level instance name. There needs to be a "/" to denote that the node is internal to the instance i0. in the GUI. Otherwise, it thinks the node is at the top level of your test bench. Some information on this is in the forum posting at URL:

    community.cadence.com/.../oceanscript-postsim-net-name

    To faciliate your effort, you might consider using a deepprobe in your test bench to directly access the node as a top level node. A deepprobe element uses th synatx of the node in the netlist (as you did) and essentialy makes the net a top level signal. Hence, syntax changes should be eliminated. Information on the deeprobe instance may be found at URL:

    solution 11017972

    or directly at URL:

    support.cadence.com/.../ArticleAttachmentPortal

    I hope this helps Yutao! Others in the forum may have other and better suggestions.

    Shawn

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

    Shawn - FYI - this reply went to moderation because the system saw the repeated text in the post and thought it might be spam. It wasn't abusive, it was just the text analysis that's a bit dumb (better dumb than some of the spam we used to get in the past).

    Thanks for your help with answering posts here, I really appreciate it!

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • YutaoLiu
    YutaoLiu over 5 years ago in reply to ShawnLogan

    Hi Shawn,

    Thanks for your reply.

    I tried to use the "deepprobe" to probe the internal nets in post-layout sim. But it failed unfortunately. Could you correct me if I did anything wrong in the simulation. 

    First of all,  my virtuoso version is "ICADV12.3-64b.main.957", and I can see "deepprobe" in analogLib. So I think I can use that symbol directly. Is it correct?

    Secondly, I used the spf file to include the extracted netlist in the simulation. I am using Maestro interface, is it all right to use "deepprobe"?

    Thirdly, what is the correct syntax I should put in the "hierarchical node" in deepprobe? Or how can I find the net name of interest in correct syntax?

    I tried two syntaxes as following, but neither of them works.

    1) In the URL you attached and the example for deepprobe, the hierarchy is separated by dot and put "/" before bracket, so I followed it and the test bench netlist is shown like following 

    "IPRB0 \
            (i0.Xith0.Xi0.Xthpsf_combo.Xampp.Xth_psf.Xth_sw\[0\].Mpassgate2\[0\].DRN \
            thoutp0) iprobe"

    the simulation finished, but there is an error when plotting the signal "thoutp0", which is the net connecting to "deepprobe" in the test bench top level. The error(WIA-1006) is " it does not evaluate to an object that can be plotted, like a waveform or parametric wave."

    2) I copied the net name  "i0.Xith0\\/Xi0\\/Xthpsf_combo\\/Xampp\\/Xth_psf\\/Xth_sw\[0\]\\/Mpassgate2\[0\]:DRN" in the save statement to the "hierarchical node".

    In the test bench netlist, it is following

    "IPRB0 \
            (i0.Xith0\\/Xi0\\/Xthpsf_combo\\/Xampp\\/Xth_psf\\/Xth_sw\\[0\\]\\/Mpassgate2\\[0\\]:SRC \
            thoutp0) iprobe "

    But the simulation is terminated by an error that unexpected operator "/". It looks that slash is not allowed in the "deepprobe". I think slash is usual in extracted netlist.

    Thanks and regards,

    Yutao 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to YutaoLiu

    Dear Yutao,

    YutaoLiu said:
    First of all,  my virtuoso version is "ICADV12.3-64b.main.957", and I can see "deepprobe" in analogLib. So I think I can use that symbol directly. Is it correct?

    Great - I am glad you could find the deepprobe component - yes you can use the symbol directly.

    YutaoLiu said:
    Secondly, I used the spf file to include the extracted netlist in the simulation. I am using Maestro interface, is it all right to use "deepprobe"?

    By writing "I used the spf file to include the extracted netlist...", are you suggesting the extracted view is in DSPF format?  In the URL I provided, there is a statement that reads:

    "Note that the solution will only work with spectre (an extension to support AMS is shown below), and only via the "Spectre" interface in the Analog Design Environment. It should only be used in top-level testbenches, and should not be used as part of the design itself - this is because it will not work with any other netlister."

    My concern lies with the fact that the DSPF netlist is not a flat netlist and is not, to my knowledge, generated by the netlister associated with spectre in the ADE environment (or Maestro). In my experience, although I do occasionally use netlists in the DSPF format, I have no experience with using the deepprobe component in that environment. However, since it contains a "flattened' node name - and not a hierarchical node name - I am thinking you may experience unexpected behavior when using a DSPF file based netlist as an include statement.

     

    YutaoLiu said:
    Thirdly, what is the correct syntax I should put in the "hierarchical node" in deepprobe? Or how can I find the net name of interest in correct syntax?

    The article URL I sent was very clear on the syntax to use with the deepprobe component. It states:

    "deepprobe has a single pin, and a single parameter, which allows you to specify the hierarchical node in the netlist that should be probed. The parameter value needs to be a hierarchical net name in spectre syntax - for example, "I1.I3.net5". The net name should be exactly as it appears in the netlist - for example a member of a bussed net (bus<5>) may appear in the netlist as bus\<5\> and so if that is within I9 at the top level, you should enter "I9.bus\<5\>"."

    Hence, I think possibly the reason your deepprobe component is not working may be the use of the spf file in lieu of a netlist generated by the ADE netlister.  I am not positive - but it appears that may be the case. Can you try with the ADE netlister using a config view of your test bench and utilizing the extracted view of the DUT?

    Shawn

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

    Dear Andrew,

    I honestly am far more thankful for the guidance you have provided me and so many others! Nevertheless, I much appreciate your kind, but totally undeserving words!

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • YutaoLiu
    YutaoLiu over 5 years ago in reply to ShawnLogan

    Hi Shawn,

    I am using the DSPF file for the extracted netlist. And I checked the netlist for the simulation, the netlist of DUT was not flatten out.  It is probably the reason why deepprobe did not work.

    Thanks and regards,

    Yutao

    • 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