• 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. pin information

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 143
  • Views 17929
  • 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

pin information

LakshmanQual
LakshmanQual over 7 years ago

hi Team,

I had a list with some pins of layout.

I need to find those pin info of layout(only corresponding hierarchy and no need of lower instances) of the list like pin coordinates and pin layer. I tried using dbFindTermByName but its not taking names of the lists as input.

In those some pins might be repeated. So need co ordinates of all the locations.

Could you please help me in coding this?

pin1     layer    co-ordinates

pin2    layer     co-ordiantes

....

  • Cancel
Parents
  • Marben
    Marben over 7 years ago

    Hi LakshmanQual,

    Here is my script to find pins in the layout.

    I hope this help.

    Best regards,

    Marben


    /*
    Purpose      : To get pins location in the layout.
    How to run   : 1. load("/home/eda/SKILL_VXL/pins_coordinates.il")
                   2. pins_coordinates()
    Date created : July 10, 2018
    Author       : Marben F. Orallo

    */

    procedure(pins_coordinates()
     csh("touch ./coordinates_pins.txt")
     outPort = outfile("./coordinates_pins.txt")
     ctr = 0
     cv = geGetEditCellView()
     pins = cv~>terminals~>pins
     pins_flatten = CCSflattenList(pins)
     pin_id = setof(x pins_flatten x~>name)
     fprintf(outPort "\n Pins location in the layout. \n")
     foreach( pin_id pin_id
      loc = centerBox(pin_id~>fig~>bBox)
      ;printf("\n Connection found, connection is not yet finish. %L %L" pin_id~>name loc)
      fprintf(outPort "\n %L %L %L" pin_id~>name pin_id~>fig~>lpp loc)
      ctr = ctr + 1
     ) ;for
     fprintf(outPort "\n\n ctr = %d" ctr)


    close( outPort)
    sleep(1)
    system("gedit ./coordinates_pins.txt &")



    );proc



    procedure(CCSflattenList(l)
      if(listp(l) mapcan('CCSflattenList l) list(l))
    )




    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • LakshmanQual
    LakshmanQual over 7 years ago in reply to Marben

    Hi   Marben Orallo and Andrew,

    I already had a list which i got them with some operations in the skill code as pins_conflicts= ("inp" "inm" "out" "vdd" "vss").

    For Eg:

    cv=geGetWindowCellView()

    pins = cv~>terminals~>pins~>name = ("in1" "in2" "inp" "inm" "vdda" "vssa" "out" "vdd" "vss" "gnd" "out2" "out3" "out4" "out5" )

    ......

    .......

    after some operations i got few of the conflict pins from the above as 

    pins_conflicts= ("inp" "inm" "out" "vdd" "vss").

    I want to find the pins which are in "pins_conflicts" list from my layout and find co-ordinates and pin layers. I need to code in the same skill code.

    In the following code

    foreach( pin pins_conflicts

    printf("%L" "%L" "%L\n" pin pin~>fig~>lpp centerBox(pin~>fig~>bBox))

    ...

     i cant apply pin~>bBox or pin~>fig~>bBox as already 'pin' is in text format and not the 'hexcode'

    Could you please consider the above criteria and help in coding as mentioned above.

    Andrew, Sorry for not asking the question clearly. 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Marben
    Marben over 7 years ago in reply to LakshmanQual

    Hi LakshmanQual,

    Something like this, is what you want ?

    procedure( pins()
     pins = list("in1" "in2" "inp" "inm" "vdda" "vssa" "out" "vdd" "vss" "gnd" "out2" "out3" "out4" "out5" )
     pins_conflicts= list("inp" "inm" "out" "vdd" "vss")
     foreach(pin pins  
      foreach(pin_conflict pins_conflicts
       if( pin_conflict == pin then    
        printf("\n " pin_conflict_id~>name pin_conflict_id~>lpp centerBox(pin_conflict_id~>fig~>bBox))
       );if
      ) ;for
     ) ;for
    ) ;proc

    Best regards,

    Marben

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • LakshmanQual
    LakshmanQual over 7 years ago in reply to Marben

    Hi Marben,

    A kind of same. But no need to compare with actual pins of layouts.

    But where can i get "pin_conflict_id" in your script?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Marben
    Marben over 7 years ago in reply to LakshmanQual

    Something like this.

    cv = geGetEditCellView()
    pins = cv~>terminals~>pins
    pins_conflict_id = setof(x pins x~>name == "inp" || x~>name == "inm" || x~>name == "out" || x~>name == "vdd" || x~>name == "vss")

    Best regards,

    Marben

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Marben
    Marben over 7 years ago in reply to LakshmanQual

    Something like this.

    cv = geGetEditCellView()
    pins = cv~>terminals~>pins
    pins_conflict_id = setof(x pins x~>name == "inp" || x~>name == "inm" || x~>name == "out" || x~>name == "vdd" || x~>name == "vss")

    Best regards,

    Marben

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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