• 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. Generating vias of the overlap metals of the same net

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 142
  • Views 5840
  • 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

Generating vias of the overlap metals of the same net

Tejaskill
Tejaskill over 1 year ago

Hi all,

I want to generate vias for metals with overlap of the same net (May be Highlighted using leHiMarkNet())
For example, in my layout, there exists a situation where METAL1 and METAL2 are overlapping and connected to each other from a different point on the layout and there is no via at this overlap. 
Can anyone suggest me scripts to achieve this?

Thanks, in advance.
Teja.

  • Cancel
  • RobMan
    RobMan over 1 year ago

    Do you have access to Virtuoso Studio 23.1? The new Via Assistant offers great new functionality to find and add missing vias on overlap.

    Alternatively; 'Auto' on the 'Create -> Via' options is also an option.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 1 year ago

    Hi Teja,

    To enrich RobMan's answer,

    You can use the 'Auto' feature from the native 'Create Via' form.

    This works well with the 'Drag to Define Area' option using your mouse middle-click.

    To create only the vias between connected shapes, you can toggle the 'Connect Shapes On The Same Net' button as shown in the screenshot below :

    Alternatively, you can do it in SKILL, here is a code snippet that should do the job

    (inScheme
    (let nil
    
      (defun get_default_shapes (cv)
        "Return selected shapes in CV or all CV shapes if no shape is selected"
        (or (setof obj (geGetSelectedSet) obj->isShape)
            cv->shapes
            ));or ;def
    
      (defglobalfun ab_place_vias_between_shapes ( @key (same_net    t                                                    )
                                                        (net_names   ""                                                   )
                                                        (min_cuts    2                                                    )
                                                        (orientation "vertical"                                           )
                                                        (cv          (geGetEditCellView)                                  )
                                                        (shapes      (get_default_shapes cv)                              )
                                                        (tf          (techGetTechFile cv)                                 )
                                                        (cst_grp     (cstFindConstraintGroupIn tf "virtuosoDefaultSetup") )
                                                        (via_opts    (viaGetViaOptions cst_grp)                           )
                                                   @rest _args )
        "Place vias between SHAPES in CV.
    If SAME_NET is non-nil, only place vias between shapes of the same net.
    If NET_NAMES is a non-empty string, it should filter the specified net names."
        ;; Set automatic via options
        (foreach pair `((minNumCuts             ,min_cuts                )
                        (cutBBoxOrientation     ,(lowerCase orientation) )
                        (connectShapesOnSameNet ,same_net                )
                        (netNames               ,net_names               )
                        )
          (destructuringBind (var val) pair
            (setf (get (get via_opts 'automatic) var) val)
            ));destructuringBind ;foreach
        ;; Generate vias between shapes
        (viaGenerateViasFromShapes cv shapes via_opts)
        );def
    
      ));Scheme ;closure

    Cheers

    Aurélien

    • 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