• 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. How to Convert Global pins( Vdd! and Gnd!) to local inputOutput...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 10584
  • 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

How to Convert Global pins( Vdd! and Gnd!) to local inputOutput pins in Schematic?

Sandeep Kailasa
Sandeep Kailasa over 2 years ago

Hello ,

I want to convert global pins like vdd! and gnd! to local InputOutput pins.

Steps:

  1. I first need to fetch the global pins
  2. Next I need to find their axis or position location
  3. Next Delete them
  4. Next Create a InputOutput local pin at that given location
  5. Then join those nets to iopin.

I am new to skill and virtuoso. The below are my proceedings :

Suggestions :

1. I have fetched the required global pins

2. To fetch the position of these global pins, I am using the following ways. But not sure about the exact location. Is their any other way than this?

cv~>instances~>bBox    or   cv~>instances~>xy

3. How to delete the global pins using the location we fetched above

4. How to create a iopin at that location


inputCVId = dbOpenCellViewByType( "basic" "ipin" "symbol" "" 'r )
pinId = schCreatePin( cv inputCVId "I11" "inputOutput" nil 0:0 "R0" )   

I used the above functions to create an instance at position 0:0, but I have to get the axis position of the global pins to create at that place. 

5. Then how to fetch the nets and join them to new iopin. or will creating the iopin at the exact location of global pins could join the nets automatically.

Is their any function to replace an cell by a pin directly?

Can Someone plz help me out here.

Thanks!

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 2 years ago

    First of all, you might find it useful to look at SKILL for converting global supplies to inherited connections after VerilogIn, CDLIN, SpiceIn . Note that this doesn't quite do what you want, because this handles converting global labels on wires (e.g. vdd!, gnd!) into inherited connections, either as net expressions on the wires or as explicit pins (with net expressions too on the wires).

    To answer your questions in your "suggestions" section above:

    1. I assume you don't really mean "global pins" but you're using the tap cells such as the vdd and gnd components in analogLib which name the net to which they are connected?
    2. The centre of the pin of the global tap components is the origin of the instance. So for a specific instance, you'd use instId~>xy (it wouldn't be terribly helpful to use cv~>instances~>xy as that will find all the other instances too)
    3. dbDeleteObject(instId) will delete it.
    4. Before deleting the instance, use xy=instId~>xy and then pass xy as the 6th argument to schCreatePin. I'm not sure why your pin is called "I11" in your example (that's the terminal name) - presumably something more meaningful would be useful.
    5. Call schCheck(cv) afterwards to re-extract connectivity and run the schematic checks too.

    "Is there any function replace an cell by a pin directly?" - No (it wouldn't be very helpful; you want to ensure the terminal and pin objects are created and replacing an instance with another wouldn't do that).

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 2 years ago

    First of all, you might find it useful to look at SKILL for converting global supplies to inherited connections after VerilogIn, CDLIN, SpiceIn . Note that this doesn't quite do what you want, because this handles converting global labels on wires (e.g. vdd!, gnd!) into inherited connections, either as net expressions on the wires or as explicit pins (with net expressions too on the wires).

    To answer your questions in your "suggestions" section above:

    1. I assume you don't really mean "global pins" but you're using the tap cells such as the vdd and gnd components in analogLib which name the net to which they are connected?
    2. The centre of the pin of the global tap components is the origin of the instance. So for a specific instance, you'd use instId~>xy (it wouldn't be terribly helpful to use cv~>instances~>xy as that will find all the other instances too)
    3. dbDeleteObject(instId) will delete it.
    4. Before deleting the instance, use xy=instId~>xy and then pass xy as the 6th argument to schCreatePin. I'm not sure why your pin is called "I11" in your example (that's the terminal name) - presumably something more meaningful would be useful.
    5. Call schCheck(cv) afterwards to re-extract connectivity and run the schematic checks too.

    "Is there any function replace an cell by a pin directly?" - No (it wouldn't be very helpful; you want to ensure the terminal and pin objects are created and replacing an instance with another wouldn't do that).

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Sandeep Kailasa
    Sandeep Kailasa over 2 years ago in reply to Andrew Beckett

    Thanks Andrew,

    I have done the same approach.

    After I execute the code , I am able to save the changes in schematic, but I am not saving its symbol view . So I am getting error over their.  schCheck(cv) is saving only schematic view. How can I save its symbolic view?

    Thanks,

    Sandeep

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

    Sandeep,

    schCheck() does not save anything. To save the cellView (either schematic or symbol) you would need to use dbSave(). You do not need to check a symbol for things to work - saving is enough.

    Regards,

    Andrew

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

    Andrew,

    I am saving the changes to Schematic. But I am having issues to the old symbol view (the symbol that is before making changes to the present schematic). For the present Schematic I have modified some pins ,It is getting changed in Schematic but getting this error.

    Nand2 is the schematic I need to do changes but I am unable to save to its existing symbolic view.

    Error: Terminal "ground_pin" in view schematic not found in "nand2 symbol". 

    Thanks!

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

    Presumably you should add the pins to the symbol before doing the schCheck(cv), especially if you've increased the severity of cross-view checks to "error" (the default is "warning").

    Andrew

    • 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