• 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. Annotations are just way too overpowering

Stats

  • Locked Locked
  • Replies 29
  • Subscribers 125
  • Views 23961
  • 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

Annotations are just way too overpowering

CADcasualty
CADcasualty over 6 years ago

I often stare at schematics for hours looking for the cause or solution to some very subtle issue and it is helpful to see some simulation annotations in the process. My issue is that turning on annotations produces an utterly overwhelming amount of clutter (including vast amounts of overlapping text and redundant information) and it's just too much for my feeble brain to take in while I'm keeping my concentration focused on the schematic itself. I know you can turn on and off "clusters" of information, but in my entire career I've *never* needed/wanted to see the full spread of voltages or parameters for *every* *single* component in my schematic.

For node voltages, I'd be delighted if only the net labels I placed on wires/nodes that I cared about lit up with their voltages beside them. Can this be done? Also, is there a way to create something like a note that I can place anywhere on the schematic whose contents can evaluate to stuff based on simulation results e.g. the current temperature and sum of the drain currents of mn1, mn2?

  • Cancel
Parents
  • CADcasualty
    CADcasualty over 6 years ago

    OK, time for me to eat some humble pie :-/. It turns out there is considerable control available over what annotations can/can't be displayed (via the View -> Annotations -> Setup... menu). I formally withdraw the first paragraph of my post and accuse myself of ignorance and violating the law of RTFM (just beating Andrew to the punch here). Sorry about that :-(.

    That being said, I really wouldn't mind knowing if there are viable answers to the thoughts in my 2nd paragraph...

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • CADcasualty
    CADcasualty over 6 years ago

    OK, time for me to eat some humble pie :-/. It turns out there is considerable control available over what annotations can/can't be displayed (via the View -> Annotations -> Setup... menu). I formally withdraw the first paragraph of my post and accuse myself of ignorance and violating the law of RTFM (just beating Andrew to the punch here). Sorry about that :-(.

    That being said, I really wouldn't mind knowing if there are viable answers to the thoughts in my 2nd paragraph...

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

    It's more of a case of NQGTPOTMY than RTFM (Not Quite Got To That Part Of The Manual Yet) ;-)

    Unfortunately the second part can't be done currently. Interestingly I was only discussing this in a meeting  a week or so back, but it's the kind of thing I'd like to see in the future - control of annotation of other quantities (I'd like to add things like noise contributions, distortion contributions, the value of the 2nd harmonic from a PSS result etc). CCR 1096295 is for the harmonic balance idea, CCR 631948 for annotating noise contributors (also talks about the more general request).

    So might be worth contacting customer support and asking for a duplicate to one or other of these...

    Regards,

    Andrew

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

    I've had a couple thoughts since starting this post that I was hoping might yield something. For specific node voltages, I could make an instance whose symbol something unobtrusive (like a small arrow) with a single pin/terminal at the arrow head. I could make the pin label invisible and put a cdsTerm() there that would light up with the node voltage when viewing terminal labels is turned on.

    Regarding the cdsParam(n) stuff - is the skill code behind those things available? I'm hoping to be able to make another symbol with it's own cdsParams running code that effectively can evaluate and display the cdsParams of a specific instance instead of just itself.

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

    No, the code isn't available (it soon translates into something binary anyway). However, with a simple bit of wrapping, you can provide a simple function that you could use within a label on your symbol to return the value from another instance:

    procedure(CCFcdsParam(instName index)
      ; use dynamic scoping to temporarily set ilInstPath
      let(((cvId ilInstPath~>cellView) ilInstPath)
        ilInstPath=dbFindAnyInstByName(cvId instName)
        cdsParam(index)
      )
    )
    

    So what you'd need to do is write a function that does what you want, and can use ilInstPath to determine which instance your component actually is, and then call CCFcdsParam(...) within that to retrieve the display string from the other named instance. Your function would need to return a string with what is to be displayed. Then that function would be used as the value of an interpreted "ILLabel" on the symbol, just as cdsParam(n) is right now.

    Does that help?

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • CADcasualty
    CADcasualty over 6 years ago in reply to Andrew Beckett

    Yes!!! This is very promising. Been playing around with it for a bit and it looks like I'll be going home on a Friday happy (for the first time in a while) :-). Thank you!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • CADcasualty
    CADcasualty over 6 years ago in reply to CADcasualty

    OK - I came across an issue with this method. It turns out that the symbol we made that uses your procedure only yields results if the target instance being referenced cycles through it's annotations becoming visible first. Once that's done this trick works. That makes things kind of messy because the whole point was to not even have cdsParam() annotations on the target instance. Is there any way around this?

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

    Not quite sure what you mean by "cycles through its annotations becoming visible first", but I'm guessing that perhaps you are talking about the fact that if you've used the Annotation setup to stop the other instance from displaying anything in the cdsParam(n) slot then the function I provided above won't display anything either (because the annotation setup would then case cdsParam(n) to return an empty string).

    An alternative would be to hide the instance and terminal labels (on the View menu) - this works by turning off the visibility of the device/annotate and annotate/drawing layer-purpose-pair for instance labels, and annotate/drawing8 for terminal labels. So if your labels are still interpreted labels but on a different LPP, then they will still show up. 

    Would that work?

    Regards,

    Andrew.

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

    I agree I didn't explain myself very well. Here's some additional background:
    To prevent the ugly mess that occurs when annotations are turned on I made my own symbols for all the TSMC transistors - they don't have any cdsParams or cdsTerms and I made my own labels to show W/L etc. Those symbols exist with the cells of the official symbols in the TSMC library and I called them symbolx.
    I have a design I'm developing in a project library that uses those TSMC symbols.
    I used your CCFcdsParam procedure to make a cell called view_params that can show the cdsParams of another cell and that cell exists in yet a different (non-project) library. view_params takes a parameter (instName) which is the name of the instance I want to display the parameters for - see attached picture.

    So I make my design in the project library with TSMC transistors using only symbolx devices and I place a few instances of view_params in open spaces so I can see the annotations for the devices they reference. I then run a sim. I can turn on annotations etc. and obviously the transistors aren't drowned in annotations, but the the view_param instances I placed don't show any annotations either :-(. Let's say I have a view_params cell referencing a transistor named mn1 and a view_params instance pointing to it - both aren't displaying any cdsParams. Having run a sim, if I now select mn1 and change it's instance from symbolx to symbol then right away I see that symbol change and be covered with tons of annotations. If I now redraw/refresh the screen all the annotations on the view_params cell referencing mn1 also show those annotations. If I now go back to mn1 and change it back to symbolx then mn1's annotations disappear but the view_params cell referencing mn1 continues to display mn1's annotations i.e. the view_params cell needed the cell it's referencing to be kicked in the pants once before it worked. I need to do this individually for each transistor being referenced by a view_params instance...

    Hmm - I'm only seeing a generic box with a question mark inside it after attaching a screenshot of the view_params block. Hopefully you can see it.

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

    I suspect this might be some caching behaviour interfering with things here. I'll have to try it out (hopefully tomorrow). Which IC subversion are you using (just in case it matters)?

    Regards,

    Andrew.

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

    6.1.7-64b.500.9

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • CADcasualty
    CADcasualty over 6 years ago in reply to CADcasualty

    I've been trying for over an hour to get the same function as you suggested working for a cdsTerm and I'm darned if I can make it work (and I don't know why). Any ideas on this? I'm trying to pass in a terminal name e.g. "D"

    • 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