Virtuoso cordinate

Discussion in 'Cadence' started by konnanur, Apr 10, 2007.

  1. konnanur

    konnanur Guest

    Hi,
    Is there a function/menu in Virtuoso that if I know the (x,y) then
    I can just type in the box and the cursor highlights the coordinate
    location.

    Thanks,
    Hari
     
    konnanur, Apr 10, 2007
    #1
  2. konnanur

    sajin Guest

    Hi Hari
    One way is press k in the layout window and then key in
    x:y in the ciw window and press enter. This will create a ruler with
    x,y as the starting point. For this to work your infix option should
    be switched off.(this option is present in options->user preferences
    in ciw)

    sajin
     
    sajin, Apr 11, 2007
    #2
  3. Or do Window->Pan (I think that's the menu it's under - I'm off the network
    current), and type in x:y in the CIW - it will pan to be centred at that
    location.

    Also, there are functions in this code below you might find useful:

    /* abPanPoint.il

    Author A.D.Beckett
    Group Structured Custom, Cadence Design Systems Ltd
    Machine SUN
    Date Sep 13, 1994
    Modified Mar 26, 2003
    By A.D.Beckett

    Pan to typed in coordinate or move cursor to typed in coordinates.

    There are two public functions:

    abPanPoint()
    abCursorPoint()

    ***************************************************

    SCCS Info: @(#) abPanPoint.il 03/26/03.17:22:21 1.4

    */


    /***************************************************************
    * *
    * (abCreatePanPointForm) *
    * *
    * Create the form for abPanPoint *
    * *
    ***************************************************************/

    (procedure (abCreatePanPointForm)
    (let (coords zoomLevel)
    (setq coords
    (hiCreatePointField
    ?name 'coords
    ?prompt "Coordinates"))
    (setq zoomLevel
    (hiCreateRadioField
    ?name 'zoomLevel
    ?choices '("As is" "10" "100" "1000")
    ?prompt "Zoom Level"))
    (setq abPanPointForm
    (hiCreateAppForm
    ?name 'abPanPointForm
    ?formTitle "Pan to coordinate"
    ?callback 'abPanPointCB
    ?fields (list
    (list coords 0:0 320:35 105)
    (list zoomLevel 0:35 320:35 105))
    ))
    ))

    /***************************************************************
    * *
    * (abPanPointCB form) *
    * *
    * Callback for abPanPoint *
    * *
    ***************************************************************/

    (procedure (abPanPointCB form)
    (let (win centre zoomLevel scaleFactor)
    (setq win (hiGetCurrentWindow))
    (setq centre (getq (getq form coords) value))
    /* scale the coordinates by the scaleFactor stored on the form */
    (when (setq scaleFactor (getq form scaleFactor))
    (setq centre (list
    (times (xCoord centre) scaleFactor)
    (times (yCoord centre) scaleFactor))))
    (if (equal (getq (getq form zoomLevel) value) "As is")
    /* pan to coordinates */
    (hiPan win centre)
    (progn
    /* otherwise zoom, using zoom level */
    (setq zoomLevel (quotient (atof (getq (getq form zoomLevel) value))
    2))
    (hiZoomIn win
    (list
    (list (difference (car centre) zoomLevel)
    (difference (cadr centre) zoomLevel))
    (list (plus (car centre) zoomLevel)
    (plus (cadr centre) zoomLevel))))
    ))
    t))


    /***************************************************************
    * *
    * (abPanPoint @optional scaleFactor) *
    * *
    * Create and bring up the form, with an optional scale factor *
    * to multiply the coordinates by. *
    * *
    ***************************************************************/

    (procedure (abPanPoint @optional scaleFactor)
    (unless (and (boundp 'abPanPointForm) abPanPointForm)
    (abCreatePanPointForm))
    (putpropq abPanPointForm scaleFactor scaleFactor)
    (hiDisplayForm abPanPointForm))

    /***************************************************************
    * *
    * (abCreateCursorPointForm) *
    * *
    * Create the form for the user to specify the cursor position *
    * *
    ***************************************************************/

    (procedure (abCreateCursorPointForm)
    (let (coords)
    (setq coords
    (hiCreatePointField
    ?name 'coords
    ?prompt "Coordinates"))
    (setq abCursorPointForm
    (hiCreateAppForm
    ?name 'abCursorPointForm
    ?formTitle "Move cursor to coordinate"
    ?callback 'abCursorPointCB
    ?fields (list
    (list coords 0:0 320:35 105)
    )
    ))
    ))

    /***************************************************************
    * *
    * (abCursorPointCB form) *
    * *
    * Callback for the cursor point form. Actually moves the *
    * cursor to that location. *
    * *
    ***************************************************************/

    (procedure (abCursorPointCB form)
    (let (win)
    (setq win (hiGetCurrentWindow))
    (when form->coords->value
    (leZoomToPoint win form->coords->value)
    )
    t
    )
    )

    /***************************************************************
    * *
    * (abCursorPoint) *
    * *
    * Create and bring up the form to move the cursor to the *
    * specified point *
    * *
    ***************************************************************/

    (procedure (abCursorPoint)
    (unless (and (boundp 'abCursorPointForm) abCursorPointForm)
    (abCreateCursorPointForm))
    (hiDisplayForm abCursorPointForm))
     
    Andrew Beckett, Apr 11, 2007
    #3
  4. konnanur

    S. Badel Guest

    Hi,
    This will zoom to the specified point :

    leZoomToPoint( hiGetCurrentWindow() x_coord:y_coord )

    This will create a marker at the point :

    geCreateMarkerByPoints(
    geGetWindowCellView(hiGetCurrentWindow())
    "warning"
    "user"
    sprintf(nil "coordinates : %g:%g" x_coord y_coord)
    ""
    list(x_coord:y_coord)
    )


    Stéphane
     
    S. Badel, Apr 11, 2007
    #4
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.