• 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 following cursor of action in virtuoso

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 144
  • Views 19329
  • 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 following cursor of action in virtuoso

bojue00
bojue00 over 13 years ago

hi all

  i have a problem !

 How to following cursor of action in virtuoso ?

 how to get the X and Y coordinate of the cursor and dX(dY) on the status bar.

    Tank

  • Cancel
  • psill
    psill over 13 years ago

    Not sure how you are going to use it, so here are some functions that may help you.

     

     

     hiGetPoint(getCurrentWindow())

     

    For edit in place: 

     geWindowToEditPoint( hiGetCurrentWindow() enterPoint())

     

    Getting the delta of cursor may be in the cellWindow variables

     

    getCurrentWindow()~>?? ( there a lot of variable to sort through > 150 variable I think)

     

    or you may try  

    leGetRefPoint(geGetWindowCellView())

    to you current position.

     

    Sorry I could be more help with the delta x/y but I have not much need to find those values since Cadence does a good job on displaying that information.

     

    I did some limited testing on the functions, but I don't know how you are going to be using the function in your script. 

     

    Paul 

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • bojue00
    bojue00 over 13 years ago

    Paul

     thanks for your reply.

    I know these function.  I want to get to when the cursor moves auto print cursor( not pointer ) of coordinate.  Just like dX(dY) or X(Y) display on the status bar  in virtuoso.  I don't know what function may do it.

    Example:  1. Enter point (reference point)  in the draw path mode ( leHiCreatePath() ) .
                    2. Move cursor to anywhere.
                    3. Auto get current cursor of coordinate in the place.
                    4. Calculate between the last point entered(reference point) and cursor distance.

    So step 3 is important.  But almost function all need click the mouse to get point.'

    procedure( NextPathStartPoint()

     cvw = getCurrentWindow()
     GetCursorPoint = hiGetPoint(cvw)

     xStartNextPoint = xCoord( drStartNextPoint )
     yStartNextPoint = yCoord( drStartNextPoint )

     dxCoord = xCoord( GetCursorPoint ) - xStartNextPoint
     dyCoord = yCoord( GetCursorPoint ) - yStartNextPoint


     if(( dxCoord < GetCurrentPathWidth ) then

      NextPathDirectionMark = "up-down"

     else
      if(( dyCoord < GetCurrentPathWidth  ) then

       NextPathDirectionMark = "left-right"

      else
       println( list( "dx:" dxCoord ))
       println( list( "dy:" dyCoord ))
      );end if
     );end if


     when(( PathDirection == "Horizontal" )

      when(( NextPathDirectionMark == "up-down" )

       ;up-down direction
       if(( dyCoord > 0 ) then

        ;up
        yNewNextCoord = yStartNextPoint - GetCurrentPathWidth/2
        NewStartPoint = list( xStartNextPoint yNewNextCoord )

       else
          if(( dyCoord < 0 ) then

         ;down
           yNewNextCoord = yStartNextPoint + GetCurrentPathWidth/2
         NewStartPoint = list( xStartNextPoint yNewNextCoord )

          else
         NewStartPoint = drStartNextPoint
          );end if
       );end if
      );end when


      when(( NextPathDirectionMark == "left-right" )

       if(( dxCoord > 0 ) then

        ;right
        xNewNextCoord = x2RefPoint - xConOffsetCoord
        NewStartPoint = list( xNewNextCoord yStartNextPoint )

       else
          if(( dxCoord < 0 ) then

         ;left
         xNewNextCoord = x2RefPoint + xConOffsetCoord
         NewStartPoint = list( xNewNextCoord yStartNextPoint )

          else
         NewStartPoint = drStartNextPoint

          );end if
       );end if
      );end when

      println( list( "Horizontal: " NewStartPoint ))

     );end when

     

     when(( PathDirection == "Vertical" )

      when(( NextPathDirectionMark  == "up-down" )

       if(( dyCoord > 0 ) then

        yNewNextCoord = y2RefPoint - yConOffsetCoord
        NewStartPoint = list( xStartNextPoint yNewNextCoord )

       else
          if(( dyCoord < 0 ) then

         yNewNextCoord = y2RefPoint + yConOffsetCoord
         NewStartPoint = list( xStartNextPoint yNewNextCoord )
          else

         NewStartPoint = drStartNextPoint
          );end if
       );end if
      );end when

      when(( NextPathDirectionMark == "left-right" )

       if(( dxCoord > 0 ) then

        xNewNextCoord = xStartNextPoint - GetCurrentPathWidth/2
        NewStartPoint = list( xNewNextCoord yStartNextPoint  )

       else
          if(( dxCoord < 0 ) then

         xNewNextCoord = xStartNextPoint + GetCurrentPathWidth/2
         NewStartPoint = list( xNewNextCoord yStartNextPoint )

          else

         NewStartPoint = drStartNextPoint

          );end if
       );end if
      );end when

      println( list( "Vertical: " NewStartPoint))

     );end when


     when(( NewStartPoint != nil )

      deletePoint()
      enterPoint( ?points NewStartPoint )
     );end when


    );end procedure

            Tank

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • psill
    psill over 13 years ago

    Did try Dynamic Display?

    From the cellview window Options->Dynamic Display... and Click on the  Show Info button. Draw a path, rectangle, or hover a shape and info about the what you are doing or the shape will be displayed.

     It has some nice features. I wish Cadence would add a skill function to print out to the info balloon.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dmay
    dmay over 13 years ago

    You can. Take a look at the odcReg* commands.

    You can define a custom SKILL extension to specify your own information to be displayed in the Info Balloon box. The information you specify appears below a dashed line in the info balloon box.

    The SKILL extension must be defined at the object level. Global levels (VLS, Objects, and Shapes) are not supported. Also, the application must be specified for each SKILL function.

    For example,
    odcRegShapeRect("Layout-XL" "test custom SKILL function")

    To turn the display of the SKILL extension on, click the Custom SKILL Function button on the Setup tab of the Dynamic Display form for the object specified in the SKILL function.

    Here is an example that will print a custom via's override parameters to the info balloon in L and XL:
    procedure(myv(obj @optional (x nil)) sprintf(nil "%L" obj~>viaHeader~>overrideParams))
    odcRegVia("Layout" "myv")
    odcRegVia("Layout-XL" "myv")

    Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • bojue00
    bojue00 over 13 years ago

    i'm tried it.
    but callback info: error eval undefined function - odcRegVia

    i not finding odcReg* command. whether have more detail documents and usage method.

    tank

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 13 years ago

    Hi Tank,

    Which version are you using?  Your last post would suggest that you are using IC5141 rather than an IC61x version.

    Regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dmay
    dmay over 13 years ago

    You must be using an older version of Cadence. Are you running 5.1.41? 6.1.5? I was responding to psill's comment about Dynamic Display.

    Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • bojue00
    bojue00 over 13 years ago

    i'm using IC5141.

    tank

    • 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