• 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. Finding Pwr and Gnd sensitivity property of a pin

Stats

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

Finding Pwr and Gnd sensitivity property of a pin

DennisJ75
DennisJ75 over 4 years ago

Hi,

With the following procedure I am able to make a list of pins and directions and put this in a list

procedure(schematicPins(@key libName cellName)
let( (libId cellId cvId terminals output)
   
   libId = ddGetObj(libName)
   cellId = ddGetObj(libName cellName)
   cvId = dbOpenCellViewByType(libId cellId~>name "schematic" "" "r")
   terminals = cvId->terminals
   output = list()
   foreach(a terminals
       name=a->name
       direction=a->direction
       output= cons(list(name direction) output)
       );end foreach
       output
 );end let
);end procedure

What I am not able to find is the Pwr and Gnd sensitivity which you can set in the schematic editor to indicate the powerdomain the IP belongs to.

I have checked with the databrowser which property field I should select, but no luck.

Any idea how I can add this to the list output?

BR
Dennis

  • Cancel
  • skillUser
    skillUser over 4 years ago

    Hi Dennis,

    I think the attribute that you are looking for is 'sigType' for the signal type, but this is an attribute of the net object, not the terminal:

    procedure(schematicPins(@key libName cellName "tt")
      let( (libId cellId cvId terminals output)
       
       libId = ddGetObj(libName)
       when(cellId = ddGetObj(libName cellName)
         cvId = dbOpenCellViewByType(libId cellId~>name "schematic" "" "r")
         terminals = cvId~>terminals
    ;    output = list() ;; not needed, the let initializes output to nil
          foreach(a terminals
    ;       name=a~>name  ;; not declared, but not needed either
    ;       direction=a~>direction  ;; ditto
           output= cons(list(a~>name a~>direction a~>net~>sigType) output)
          );end foreach
        ); end when
        output
      );end let
    );end procedure

    I've made a few other changes ('-' to '~', adding a type template to the function, adding a 'when' condition) - you probably should add a 'when' for the libId line also, in case a bad value is passed in.

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • DennisJ75
    DennisJ75 over 4 years ago in reply to skillUser

    Hi Lawrence,

    Thanks, your improvements are indeed better and cleaner!

    Unfortunately the sigType is not what I am looking for the two attributes I am looking for can be found in the below screenshot

    Pwr Sensitivity and Gnd Sensitivity.

    The designer can set these extra properties on a pin, we could use them to further instruct digital tools how to connect towards the analog (which powerdomain).

    I have been searching, also in the net properties, but I just can't find them.

    But thanks for replying!

    BR
    Dennis

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to DennisJ75

    Dennis,

    You need to use these functions to set the power and ground sensitivities:

    dbSetTermGroundSensitivity(termId groundTermId)
    dbSetTermPowerSensitivity(termId powerTermId)

    Note that this is set on the terminal (not the pin) and needs to refer to the terminal id of the power or ground that you're making it sensitive to. There is also dbGetTerm{Power|Ground}Sensitivity to retrieve the info too.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • DennisJ75
    DennisJ75 over 4 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thank you, this helped me a lot!

    My updated code:

    procedure(getPinInfo(@key libName cellName (type schematic) (mode "r") "tt")
      let( (libId cellId cvId terminals output PwrSensitivity GndSensitivity)
       when(libId = ddGetObj(libName)
        when(cellId = ddGetObj(libName cellName)
          cvId = dbOpenCellViewByType(libId cellId~>name type "" mode)
           terminals = cvId~>terminals
           foreach(a terminals
            termId=a
            PwrSensitivity=dbGetTermSupplySensitivity(termId)~>name
            GndSensitivity=dbGetTermGroundSensitivity(termId)~>name
             if(PwrSensitivity==nil
                 PwrSensitivity= ""
               )
             if(GndSensitivity==nil
                 GndSensitivity= ""
                )  
             output= cons(list(a~>name a~>direction PwrSensitivity GndSensitivity) output)
           );end foreach
         ); end when
         );end when
        output
      );end let
    );end procedure

    BR
    Dennis

    • 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