• 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 change via level with skill in IC6

Stats

  • Locked Locked
  • Replies 31
  • Subscribers 148
  • Views 29545
  • 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 change via level with skill in IC6

Eric L14
Eric L14 over 14 years ago

 In IC6, I have a bindkey which change via level (via1 to via2) . Main part of the code is:

; Current selected via
viaToBeChanged=car(geGetSelSet())

; new via identifier
newVia=dbOpenCellViewByType( technName viaName "layout" nil "r")
if( newVia then
  viaToBeChanged~>master=newVia
)

Do you know how doing the same thing in IC6 ?

Thanks in advance

Eric

  • Cancel
  • skillUser
    skillUser over 14 years ago

    Hi Eric,

    I've not really played with this, but I think that you can find the via definition using something like techFindViaDefByName() and then use that as one of the arguments to the dbCreateVia() function. In IC 6.1.x vias are objects in the database, whereas in IC51 ad earlier vias are instances, so they do need to be treated differently in IC61x.

    Hope this helps.

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Austin CAD Guy
    Austin CAD Guy over 14 years ago

     There are two types of vias in IC6, customVias which have cellViews and stdVias which do not have cellViews. My current tech file only has stdVias so I cannot include anything about customVias.

     As Lawrence implied, with IC6, if you want to put in a new via in place of the old, not modify the parameters on an existing one, you have to replace the via by creating a new via instanceusing dbCreateVia and delete the old.

    Ted

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Eric L14
    Eric L14 over 14 years ago

    Thanks for your replies.

    OK for creating a new via which is stdVia. dbCreateVia has some argmuments. There is no problem for me to get l_point and t_orient from the original via. But I don't know how to get l_paramList. Is there a function to get those parameters ?

    Eric

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Austin CAD Guy
    Austin CAD Guy over 14 years ago

     The non default parameter values are stored on the via header for that instance:

    instId~>viaHeader~>overrideParams

    The default parameter values have to be  extracted from the viaDef

    instId~>viaHeader~>viaDef~>params

     

    Ted

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Eric L14
    Eric L14 over 14 years ago

    Ted,

    Thanks for your help. It works fine 

    Regards

    Eric

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kpai
    kpai over 14 years ago

    Hi Lawrence,

    Based on what you mentioned the differenct between IC6.1.x vias are objects and IC51 are instance.   In this case, is a script in IC51 use  'leIsContact' to check if the via being selected and exist, what should I use accordingly in IC6.1.x?

     Thanks,

    Kathy

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 14 years ago

    Hi Kathy,

    there is a function dbIsCellViewStdViaMaster() that may help, but there may be another way to approach the problem. In IC61x you can access the vias from the cellview database object, as well as the viaHeaders and viaMasters (and viaVariants) - perhaps you can come from one of these and check to see if the object in question matches?

    Hope this helps.

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Kathy,

    In IC5141 vias were just instances, and it determined which instances were vias based on them being defined in the tech file as a via. So the leIsContact function could be passed an instance, and then it checked to see if it was one of the registered vias.

    In IC61 (because it's OpenAccess), vias are separate objects. So it's very easy to tell if a via is a via:

    inst~>objType=="stdVia" || inst~>objType=="customVia"

    or

    member(inst~>objType '("stdVia" "customVia"))

    take your pick!

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kpai
    kpai over 14 years ago

    Thanks Lawrence and Andrew for your prompt reply!

    I can find out my via is "stdVia".    Now, how can I found out this particular "stdVia" with it's col and row number?

    Thanks,

    Kathy

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Kathy,

    inst~>viaHeader~>?? 

    You can see there's a viaDefName attribute, an overrideParams attribute (which is an assoc list of things like cutRows, cutColumns). The original (default) parameters are at inst~>viaHeader~>viaDef~>params - but they're just a simple list. So, for example:

    paramNames='("cutLayer" "cutWidth" "cutHeight" "cutRows" "cutColumns"

    "cutSpacing" "layer1Enc" "layer2Enc" "layer1Offset" "layer2Offset"

    "originOffset" "imp1Enc" "imp2Enc" ;"cutPattern"

    )

    mapcar('list paramNames inst~>viaHeader~>viaDef~>params)

    (("cutLayer" "Via1")
        ("cutWidth" 0.14)
        ("cutHeight" 0.14)
        ("cutRows" 1)
        ("cutColumns" 1)
        ("cutSpacing"
        (0.2 0.2)
        )
        ("layer1Enc"
        (0.06 0.06)
        )
        ("layer2Enc"
        (0.06 0.06)
        )
        ("layer1Offset"
        (0.0 0.0)
        )
        ("layer2Offset"
        (0.0 0.0)
        )
        ("originOffset"
        (0.0 0.0)
        )
        ("imp1Enc" nil)
        ("imp2Enc" nil)
    )

    So if you had this:

    default=mapcar('list paramNames inst~>viaHeader~>viaDef~>params)
    override=inst~>viaHeader~>overrideParams

    cadr(assoc("cutRows" override)) => 2
    cadr(assoc("cutRows" default)) => 1

    Hope that helps!

    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