• 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 find and replace missing vias in layout using Skill...

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 145
  • Views 18322
  • 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 find and replace missing vias in layout using Skill function

Sohaib
Sohaib over 10 years ago

Hi,

I have designed some analog/RF blocks in a 5 layer SiGe technology process. Now, i want to re-use the same blocks in a 7 layer SiGe technology process. The two processes are exactly same apart from the 2 additional metal layers which has been added to get 7 layer process. When i open the layout of any RF block(designed in 5 layer process) in 7 layer process, everything is fine apart from the flashing signs which i get where ever interconnection between different metal layers are performed using vias since vias for 2 additional metal layers are missing. I will try to explain it in a better way below:

Process A (5 Layers)          Process B (7 Layers)

M1                                          M1
M2                                          M2
M3                                          M3
M4                                          M4
M5                                          Mx
                                                My
                                               M5

Now, i get missing vias error wherever, M4 to M5 interconnection is present since in 7 layer process, two additional vias are needed to go from M4 to M5 compared to 5 layer process.


Since the designed block is quite complex and hierarchical, it is quite tough and time consuming to locate the missing vias positions and adding missing vias manually at all such positions. Can a program be written in skill to search for the missing vias position and then adding the 2 missing vias in whole layout of the complete block automatically ? 

If yes, can you direct me towards any documents/examples regarding what is the most efficient way to achieve above described goal ? I would like to write a skill function, which on execution can find and replace all stacked vias(5 Layers process) with newly 7 layer stacked vias. Any help in this regard would be great.

/Sohaib

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago
    Which version of Virtuoso are you using?
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Sohaib
    Sohaib over 10 years ago

    Hi Andrew,

    It is 6.1.6.500.7 . Anyone who has faced similar problem and come up with any solution ? Any hint/help will be really good. Thanks

    /Sohaib

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Sohaib
    Sohaib over 10 years ago
    Hi Andrew, Any suggestion you have ?
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • theopaone
    theopaone over 10 years ago

    One way would be to create a custom via pcell which contains placements of the M4-Mx, Mx-My, and My-M5 vias. Then you would use search/replace in the hierarchy to replace the M4-M5 via with the new custom one. The via would have the same parameters as the M4-M5 and would have to figure out the rules for the via instances inside.

    Ted

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Sohaib
    Sohaib over 10 years ago

    Hi,

    Thanks for your suggestion but i have already done some work on this problem and reached some point, even though it is not working as it should.

    I am able to search in the layout for missing via hierarchically but when i try to replace these missing vias using 'leReplace' function the cadence just crashes every time. Here is the code which i am using:

    cv=geGetEditCellView() 


    viaList = leSearchHierarchy(cv cv~>bBox 32 "via" list(list("via definition" "==" "VM2_MQ")))

    /Uptill here it works fine. It search for via 'VM2_MQ' and returns it db ID.


    leReplace(cv viaList list(list("via definition" "==" "VM2_M3")))

    But cadence crashes when i execute the above function to replace the vias found with function used in second step. Anyone have any idea what could be the reason ? Also, i would like to point that searched vias using 'leSearchHierarchy' are ghost vias since they are not physically present in the layout. They are missing vias and give only flashing signs like a missing object gives. 

    Any feedback would be great.

    /Sohaib

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Abul
    Abul over 8 years ago
    HI
    viaList = leSearchHierarchy(cv cv~>bBox 32 "via" list(list("via definition" "==" "VM2_MQ")))
    The above statement will returns db ID's.
    How can i find missing vias on metal overlap of having same connectivity.Please let me know u have any feedback to find missing vias

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

    Rather than reinventing the wheel, Voltus-Fi has the ability to find missing vias (or insufficient via coverage).

    Regards,

    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