• 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 Design
  3. Auto Via in Edit-in-Place with metals on higher levels

Stats

  • Replies 1
  • Subscribers 134
  • Views 54
  • Members are here 0

Auto Via in Edit-in-Place with metals on higher levels

PK202501238151
PK202501238151 1 day ago

Hello,

I am using auto-via to generate vias between overlapping metals. I often work in edit-in-place, which means that some of the metals might be on higher hierarchy levels. These are apparently not considered when using auto vias. Is there a way of getting this to work?

  • Sign in to reply
  • Cancel
  • Andrew Beckett
    Andrew Beckett 1 day ago

    There is an enhancement request for this (Cadence Change Request #2458518) - one challenge of course is that when you edit-in-place and then place vias taking into account shapes outside of the descendent hierarchy of the cell you are editing, you may end up placing vias where other occurrences of the same cell have different metal above them. Sometimes that will be fine, but that's the reason why it's not done out of the box.

    You could use this SKILL code (could be called from a bind key). It will prompt you to enter points for a box to do the auto-via within:

    procedure(CCFgenViaInEIP(@optional (win hiGetCurrentWindow()))
      letseq(
        (
          (cv geGetEditCellView(win))
          (tf techGetTechFile(cv))
          (topCV geGetWindowCellView(win))
          (constraintGroupName cstGetDefaultConstraintGroupName(cv "Via"))
          (constraintGroup cstFindConstraintGroupIn(tf constraintGroupName))
          (viaOpts viaGetViaOptions(constraintGroup))
          ; compute transformation from top to EIP cellView
          ; could use dbInvertTransform(dbGetInstTransform(geGetInstHierPath(win))))
          ; but  this was only added in IC25.1 ISR3
          (dbu cv~>DBUPerUU)
          (xform list(win~>d2eTransX/dbu:win~>d2eTransY/dbu win~>d2eTransOrient))
          box topVias
        )
        box=enterBox(?prompts list("Enter area for via creation"))
        ; create the vias in the top cellView and then move them into the
        ; EIP cellView
        topVias=viaGenerateViasInArea(topCV box viaOpts ?startLevel 0 ?stopLevel 32)
        unless(cv==topCV
          foreach(via topVias
            dbMoveFig(via cv xform)
          )
        )
        t
      )
    )
    

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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.

© 2026 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information