• 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. Via conversion using leReplace command

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 142
  • Views 7047
  • 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

Via conversion using leReplace command

Tejaskill
Tejaskill over 2 years ago

Hi all,

I am able to replace via using leReplace command as follows
leReplace(geGetEditCellView() geGetSelSet() list(list("via definition" "==" "M2_M1")))

But I am unable to change the via cut Width, Length, Row spacing, Column spacing using the following,
leReplace(cv via list(list("via definition" "==" "M2_M1") list("cut Width" "==" 0.2) list("cut Length" "==" 0.2)))

Can anyone suggest me a solution

Thanks,
Teja.

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

    As you can see on the Find/Replace form, it should be "width" and "length", not "cut Width" and "cut Length":

    leReplace(cv viaList list(list("via definition" "==" "M2_M1") list("width" "==" 0.2) list("length" "==" 0.2)))

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Tejaskill
    Tejaskill over 2 years ago in reply to Andrew Beckett

    Thanks for the reply Andrew

    It works fine now

    But I have to get the database id of the newly created via, is there any way for that.

    Teja.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Tejaskill
    Tejaskill over 2 years ago in reply to Andrew Beckett

    Thanks for the reply Andrew

    It works fine now

    But I have to get the database id of the newly created via, is there any way for that.

    Teja.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to Tejaskill

    This isn't entirely trivial because the leReplace function doesn't return the new objects. If you'd use the underlying database functions to recreate the via, then it would have been possible, but if using the simpler leReplace approach, then you could do it this way:

    ; create a unique (hopefully) fig group to hold the vias you're going to replace (this uses the time to make a unique name)
    fg=dbCreateFigGroup(cv lsprintf("vias%d" stringToTime(getCurrentTime())) nil 0:0 "R0")
    foreach(via viaList dbAddFigToFigGroup(fg via))
    ; now do the replace
    leReplace(cv viaList list(list("via definition" "==" "M3_M2") list("width" "==" 0.2) list("length" "==" 0.2)))
    ; the good news is that the fig group will hold the new vias:
    newViaList=fg~>figs
    ; we can remove the temporary fig group
    dbDeleteObject(fg)

    A little bit of a trick, but it seems to work!

    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