• 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. Connecting wires through SKILL IC 6.1.8

Stats

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

Connecting wires through SKILL IC 6.1.8

FranciscoAndreo
FranciscoAndreo over 1 year ago

Hello everyone,

I am trying to automate the schematic flow design for my work and I have found myself into a barrier.

In SKILL, it is easy to connect pins from multiple instances to the same net. But I want to be able to "draw" a wire into the schematic, for the purpose of readability and debugging. I'll show an example.

If I wanted to connect multiple pins, I am able to do that with Skill at ease.

How would I be able to draw the connections as to be seen in the next figure?

Thanks everyone for the help.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago

    Use the schCreateWire() function - with "route" as the second argument and "full" as the third argument (the rest you can find from the documentation - including these two arguments). You'd then give the list of the start and end points and it will create the wiring between those points, routing as necessary.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • FranciscoAndreo
    FranciscoAndreo over 1 year ago in reply to Andrew Beckett

    Thanks for the quick answer,

    I indeed found the function schCreateWire() in the docs, but I should have mentioned that it isn't the approach I need/want. The thing is that when working with multiple instances of a created CellName, I haven't been able to obtain the coordinates of each of the pins from the instances. Two questions arise if this is the correct approach:

    Is there an equivalent function to schCreateWire() in which instead of using the coordinates, it uses either nets, pins or terminals?

    If there isn't, what is the approach to obtain the coordinates for the pins of an instance?

    I have found this approach how-to-find-the-coordinates-of-an-instance-s-pin in the forum, using:

    $ cv = geGetWindowCellView( hiGetCurrentWindow( ) )

    $ cv ~> instances ~> instTerms ~> term ~> pins

    All the pins of the multiple instances point to the same object(i.e being unable to retrieve the coordinates for each pin of each instance). I am sorry if I was not able to explain myself properly, I am still learning skill. Thanks again.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to FranciscoAndreo

    If you can find the pin object for each terminal (using an approach like you've shown), then you can do this:

    dbTransformPoint(centerBox(pin~>fig~>bBox) inst~>transform)

    (where inst is the instance of the transistor above). So if you know it's terminal "D" you could do dbFindTermByName(inst~>master "D")~>pin~>fig - this is assuming there's a single pin and a single figure to find it.

    There's no higher level function that does this for you, but it's quite simple to do.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • FranciscoAndreo
    FranciscoAndreo over 1 year ago in reply to Andrew Beckett

    I have been able to make it work. Thanks! I was unfamiliar with the function dbTransformPoint().

    I will write the code in case someone stumbles upon this and needs it (suboptimal, probably).

    cv = geGetWindowCellView( hiGetCurrentWindow( ) )

    InstList = cv ~> instances

    N0 = nth(0, InstList)

    N1 = nth(1, InstList)

    foreach( pin I0~>instTerms when( pin ~> name == "PIN_NAME" PIN_NAME0 =pin ~> term ~> pins))

    foreach( pin I1~>instTerms when( pin ~> name == "PIN_NAME" PIN_NAME1=pin ~> term ~> pins))

    A = dbTransformPoint(centerBox(car(PIN_NAME0)~>fig~>bBox) N0~>transform)

    B = dbTransformPoint(centerBox(car(PIN_NAME1)~>fig~>bBox) N1~>transform)

    schCreateWire( cv "route" "full" list(A B) 0 0 0)

    • 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