• 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. layout pin creation after binding the devices between schematic...

Stats

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

layout pin creation after binding the devices between schematic and layout

Inas Mohammed
Inas Mohammed over 8 years ago

Hello,

I bind between a schematic and its layout using the bndAddInstsBindingByName and lxSetConnRef. So i can select both the nets and the instances between the schematic and layout.

How can i create the pins to be connected and also use the connectivity to place the pins for each instance in the layout using skill script

Thanks

Regards,

Inas

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

    Hmm, you appear to be rather sensitive. I did not at any point say (or even imply) "you are a loser". All I was doing was reiterating a point that is made quite clearly in the Forum Guidelines - that you should ask specific and bounded questions, and supply all relevant information. This is nothing to do with your expertise in SKILL - I quite expect people asking questions on these forums to not necessarily be SKILL experts - if they were, they probably wouldn't need to ask such questions. That doesn't excuse you from asking a well-framed, clear, question which describes what you are doing - I'd expect anyone with an engineering background (even if they are a student) to be able to do that.

    Even though I work for Cadence, I don't respond here as part of my job - I do it to help others out in the community. I think I've demonstrated a fair degree of willingness to respond to pretty imprecise questions over the years, but given that we all have limited time, answering what I think is your question rather than what is actually your question isn't terribly efficient. You will see that I often ask posters to be more precise in their questions and the information that they provide. 

    I generally prefer it if people can clearly describe what they are trying to do, explain what they've tried and have been unsuccessful with, what their aims are and so on - that is far easier than trying to interpret from a rather loose description.

    Your original question just said "How can i create the pins to be connected and also use the connectivity to place the pins for each instance in the layout using skill script". No indication that you wanted the pins on a particular layer, or where you wanted those pins to be placed. Without that information the answer could just have been use lxGenFromSource() or lxUpdateComponentsAndNets(), but I would have assumed that you'd found that. Personally I didn't answer earlier because I was on vacation last week - and probably others didn't answer because they have less patience than me to dig out what you are really hoping to do.

    So, I'm sorry if you're offended or feel bad, but that's your interpretation of what I said rather than what I actually said.

    Even now, your question isn't that clear. Do you have a top-level pin for each pin of every instance? Or are some of the instances connected together? Is there only one instance in the cellView? What are you really trying to do here?

    If it's just a matter of changing the layer used for the pins, you could do that with:

    envSetVal("layoutXL" "initIOPinLayer" 'string "Metal1 drawing") ; or whatever layer you want

    before initialising XL. Or you could use:

    lxUpdateComponentsAndNetsStart(schId layId)
    lxSetNetPinSpecs(?nets schId~>terminals~>net~>name ?lpp list("Metal3" "drawing") ?width 0.2 ?height 0.2)
    lxSetGenerateOptions(?instances nil) ; if you don't want the instances to be created
    lxUpdateComponentsAndNetsFinish(schId layId)

    If you are just trying to create pins on top of the instance pins, that would be a matter of doing something like this:

    foreach(inst listOfInstances
      foreach(instTerm inst~>instTerms
        ; if this is an I/O of this cell
        when(instTerm~>net~>term
          foreach(pin instTerm~>term~>pins
            foreach(fig pin~>figs
              ; propagate the pin shape up to this level
              newFig=dbCreateRect(layId list("Metal1" "drawing") dbTransformBBox(fig~>bBox inst~>transform))
              dbCreatePin(instTerm~>net newFig nil instTerm~>net~>term)
            )
          )
        )
      )
    )

    Something like that (this is untested). It all depends what pin connectivity model you want if there is more than one instance terminal connected to the same net - but since you didn't clearly state your problem, I'm having to guess. 

    Kindest Regards,

    Andrew.

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

    Hmm, you appear to be rather sensitive. I did not at any point say (or even imply) "you are a loser". All I was doing was reiterating a point that is made quite clearly in the Forum Guidelines - that you should ask specific and bounded questions, and supply all relevant information. This is nothing to do with your expertise in SKILL - I quite expect people asking questions on these forums to not necessarily be SKILL experts - if they were, they probably wouldn't need to ask such questions. That doesn't excuse you from asking a well-framed, clear, question which describes what you are doing - I'd expect anyone with an engineering background (even if they are a student) to be able to do that.

    Even though I work for Cadence, I don't respond here as part of my job - I do it to help others out in the community. I think I've demonstrated a fair degree of willingness to respond to pretty imprecise questions over the years, but given that we all have limited time, answering what I think is your question rather than what is actually your question isn't terribly efficient. You will see that I often ask posters to be more precise in their questions and the information that they provide. 

    I generally prefer it if people can clearly describe what they are trying to do, explain what they've tried and have been unsuccessful with, what their aims are and so on - that is far easier than trying to interpret from a rather loose description.

    Your original question just said "How can i create the pins to be connected and also use the connectivity to place the pins for each instance in the layout using skill script". No indication that you wanted the pins on a particular layer, or where you wanted those pins to be placed. Without that information the answer could just have been use lxGenFromSource() or lxUpdateComponentsAndNets(), but I would have assumed that you'd found that. Personally I didn't answer earlier because I was on vacation last week - and probably others didn't answer because they have less patience than me to dig out what you are really hoping to do.

    So, I'm sorry if you're offended or feel bad, but that's your interpretation of what I said rather than what I actually said.

    Even now, your question isn't that clear. Do you have a top-level pin for each pin of every instance? Or are some of the instances connected together? Is there only one instance in the cellView? What are you really trying to do here?

    If it's just a matter of changing the layer used for the pins, you could do that with:

    envSetVal("layoutXL" "initIOPinLayer" 'string "Metal1 drawing") ; or whatever layer you want

    before initialising XL. Or you could use:

    lxUpdateComponentsAndNetsStart(schId layId)
    lxSetNetPinSpecs(?nets schId~>terminals~>net~>name ?lpp list("Metal3" "drawing") ?width 0.2 ?height 0.2)
    lxSetGenerateOptions(?instances nil) ; if you don't want the instances to be created
    lxUpdateComponentsAndNetsFinish(schId layId)

    If you are just trying to create pins on top of the instance pins, that would be a matter of doing something like this:

    foreach(inst listOfInstances
      foreach(instTerm inst~>instTerms
        ; if this is an I/O of this cell
        when(instTerm~>net~>term
          foreach(pin instTerm~>term~>pins
            foreach(fig pin~>figs
              ; propagate the pin shape up to this level
              newFig=dbCreateRect(layId list("Metal1" "drawing") dbTransformBBox(fig~>bBox inst~>transform))
              dbCreatePin(instTerm~>net newFig nil instTerm~>net~>term)
            )
          )
        )
      )
    )

    Something like that (this is untested). It all depends what pin connectivity model you want if there is more than one instance terminal connected to the same net - but since you didn't clearly state your problem, I'm having to guess. 

    Kindest Regards,

    Andrew.

    • 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