• 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 select the specific type of object by coordinati...

Stats

  • Locked Locked
  • Replies 10
  • Subscribers 143
  • Views 18448
  • 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 select the specific type of object by coordination

wenckey
wenckey over 6 years ago

In a layout cellview, I have the coordinate of the object, but in that location many objects there, like path/ via/ polygon

if I only want to select the type "via", what skill command I can use?

How about select all object in the location?

Also I want to move the selected object to a certain location. What's the command?

  • Cancel
Parents
  • Marben
    Marben over 6 years ago

    Hi Wenckey

    Something like these.

    Hope this helps.

    procedure( svx()
     cv = geGetEditCellView()
     x = 13.899
     y = 0.37
     
     foreach(via cv~>vias
      via_x = car(via~>xy)
      via_y = cadr(via~>xy)
      if( via_x == 13.899 && via_y == 0.37 then
       geSelectFig(via)
      ) ;if
     );for
    ) ;proc


    ; To select all object in that location.
    procedure( sva()
     x = 13.899
     y = 0.37
     cv = geGetEditCellView()
     geSelectAll()
     foreach( obj geGetSelSet()
      x_coord = car(obj~>xy)
      y_coord = cadr(obj~>xy)
      printf("\nx = %L y = %L" x_coord y_coord)
      if( x_coord != x && y_coord != y then
       geDeselectFig(obj)
      ) ;if
     ) ;for
    );proc


    Best regards,

    Marben

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • wenckey
    wenckey over 6 years ago in reply to Marben

    Thanks for your response. One problem is my xy is not the via's xy, it may be the center of the via.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • wenckey
    wenckey over 6 years ago in reply to Marben

    Thanks for your response. One problem is my xy is not the via's xy, it may be the center of the via.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • ZoltanT
    ZoltanT over 6 years ago in reply to wenckey

    My naiv intuation says that once you have a subset of vias you can iterate over them and check whether their bBox includes your point.  Somethig like that:

    if( car(bl) < car(point) && car(ur) > car(point) && cadr(bl) < cadr(point) && cadr(ur) > cadr(point) then via_is_over_the_location() )

    bl: bottom left coords
    ur: upper right

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to ZoltanT

    ZoltanT said:

    My naiv intuation says that once you have a subset of vias you can iterate over them and check whether their bBox includes your point. 

    However, as I said in the other branch of this thread, that's not going to be very efficient when you have a million vias (for example). Far better to use the region query functionality that is available as this is designed to rapidly identify objects in a particular region of the layout (this is used all over the place, including to identify which objects in the database should be displayed in the current zoom window, so it has to be very fast). So the dbViaQuery approach I suggested in the other part of the thread would do this much more efficiently. 

    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