• 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. Faster way to move instances

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 14679
  • 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

Faster way to move instances

Lynks
Lynks over 11 years ago

I was wondering if there's a neat trick to move instances in Virtuoso when working with large layouts? For example, I'm currently looking at a location in a large layout where I would like to move an instance to. I go to the Navigator panel to click the desired instance but the screen jumps to that instance's location so I lost the destination location. Even then, after pressing 'm' to move the instance, the action is relative to an anchor point that I'd usually would create by clicking near the instance.

It would be great if I can sort of have the same action as placing a "new instance", when moving an instance. i.e. I switch to "special move mode", click on instance via the navigator (screen doesn't jump to instance's location), press 'm', the instance appears immediately under my cursor and then I click to place it. All of this would happen while the layout editor is fixed at current location.

Does a feature like this already exist? Or is there an efficient way of handling this particular use case?

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

    Use:

    envSetVal("layout" "autoZoomPan" 'boolean nil)

    and use this code - load it and then put the function abMoveAutoRefPoint() on a bindkey. It should then behave as you describe. The envSetVal will stop the navigator zooming or panning, and the bindkey will automatically set the reference point. You need to move the cursor slightly to see the ghosted image.

    Regards,

    Andrew.

    /* abMoveAutoRefPoint.il
    
    Author     A.D.Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       Aug 08, 2014 
    Modified   
    By         
    
    A function that can be used on a bindkey to behave like move,
    except auto-set the reference point to the centre of the first
    selected object. If nothing is selected, it behaves just like
    move normally does.
    
    Can be used with:
    
    envSetVal("layout" "autoZoomPan" 'boolean nil)
    
    to allow the navigator to be used to select an instance when zoomed
    in, and then have the bindkey move the selected object (which might
    be outside the current zoom window) and then it will ghost under the
    cursor in the current zoom region.
    
    ***************************************************
    
    SCCS Info: @(#) abMoveAutoRefPoint.il 08/08/14.17:35:27 1.1
    
    */
    
    procedure(abMoveAutoRefPoint()
      let((infix selSet)
        selSet=geGetSelSet()
        if(selSet then
          ;------------------------------------------------------------------
          ; temporarily turn off infix if on to ensure that
          ; reference point can be set
          ;------------------------------------------------------------------
          infix=hiGetCIWindow()->infix
          hiGetCIWindow()->infix=nil
          ;------------------------------------------------------------------
          ; Set the reference point to be the centre of the first selected
          ; figure (somewhat arbitrary)
          ;------------------------------------------------------------------
          preXY(centerBox(car(selSet)~>bBox))
          leHiMove()
          hiGetCIWindow()->infix=infix
        else
          leHiMove()
        )
      )
    )
     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    Use:

    envSetVal("layout" "autoZoomPan" 'boolean nil)

    and use this code - load it and then put the function abMoveAutoRefPoint() on a bindkey. It should then behave as you describe. The envSetVal will stop the navigator zooming or panning, and the bindkey will automatically set the reference point. You need to move the cursor slightly to see the ghosted image.

    Regards,

    Andrew.

    /* abMoveAutoRefPoint.il
    
    Author     A.D.Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       Aug 08, 2014 
    Modified   
    By         
    
    A function that can be used on a bindkey to behave like move,
    except auto-set the reference point to the centre of the first
    selected object. If nothing is selected, it behaves just like
    move normally does.
    
    Can be used with:
    
    envSetVal("layout" "autoZoomPan" 'boolean nil)
    
    to allow the navigator to be used to select an instance when zoomed
    in, and then have the bindkey move the selected object (which might
    be outside the current zoom window) and then it will ghost under the
    cursor in the current zoom region.
    
    ***************************************************
    
    SCCS Info: @(#) abMoveAutoRefPoint.il 08/08/14.17:35:27 1.1
    
    */
    
    procedure(abMoveAutoRefPoint()
      let((infix selSet)
        selSet=geGetSelSet()
        if(selSet then
          ;------------------------------------------------------------------
          ; temporarily turn off infix if on to ensure that
          ; reference point can be set
          ;------------------------------------------------------------------
          infix=hiGetCIWindow()->infix
          hiGetCIWindow()->infix=nil
          ;------------------------------------------------------------------
          ; Set the reference point to be the centre of the first selected
          ; figure (somewhat arbitrary)
          ;------------------------------------------------------------------
          preXY(centerBox(car(selSet)~>bBox))
          leHiMove()
          hiGetCIWindow()->infix=infix
        else
          leHiMove()
        )
      )
    )
     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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