• 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. Asking SKILL Code for Virtouso

Stats

  • Locked Locked
  • Replies 20
  • Subscribers 145
  • Views 21553
  • 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

Asking SKILL Code for Virtouso

archive
archive over 19 years ago

I'm new to the forums and really need this code.

Here goes, I would like a SKILL code for Virtouso that goes something like this. It's a "Flip Command". The code should flip any object-->instance, path/wire, polygons, rectangle, contacts etc. either "vertical" or "horizontal". And added to that, if you select multiple objects, you could also flip them "vertical or horizontal". it's like a picture when you flip it or mirror it.

like, the objects are selected, "123" when FLIPPED all objects becomes "321".

Thanks. I hope someone could help me, i have other request for Virtouso but they don't have any forums.


Originally posted in cdnusers.org by wonderkamote
  • Cancel
Parents
  • archive
    archive over 19 years ago

    My first reaction is why don't you do this without skill in Virtuoso? Just select the
    things, type m to move, click the swap button from the form, and click the right
    mouse button to place them flipped.
    If you want to do this with skill, you not only need to swap each instance but also
    calculate a new origin for each instance.

    Greetings, William.


    I have an example how to rotate instances here. It is not difficult to modify this for
    flipping only. However, only the orientation is modified, not the origin.

    procedure( wrRotateInst( )

      let( ( wrOrient)

        foreach( instancepointer geGetSelectedSet( )
          unless( null( instancepointer->orient)
        wrOrient = instancepointer->orient
        case( wrOrient
          ( "R0"
            wrOrient = "R90"
          )
          ( "R90"
            wrOrient = "R180"
          )
          ( "R180"
            wrOrient = "R270"
          )
          ( "R270"
            wrOrient = "R0"
          )
          ( "MY"
            wrOrient = "MYR90"
          )
          ( "MYR90"
            wrOrient = "MX"
          )
          ( "MX"
            wrOrient = "MXR90"
          )
          ( "MXR90"
            wrOrient = "MY"
          )
        ) ;; case
        instancepointer->orient = wrOrient
          ) ;; unless
        ) ;; foreach
      ) ;; let
    )



    Originally posted in cdnusers.org by relyveld
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • archive
    archive over 19 years ago

    My first reaction is why don't you do this without skill in Virtuoso? Just select the
    things, type m to move, click the swap button from the form, and click the right
    mouse button to place them flipped.
    If you want to do this with skill, you not only need to swap each instance but also
    calculate a new origin for each instance.

    Greetings, William.


    I have an example how to rotate instances here. It is not difficult to modify this for
    flipping only. However, only the orientation is modified, not the origin.

    procedure( wrRotateInst( )

      let( ( wrOrient)

        foreach( instancepointer geGetSelectedSet( )
          unless( null( instancepointer->orient)
        wrOrient = instancepointer->orient
        case( wrOrient
          ( "R0"
            wrOrient = "R90"
          )
          ( "R90"
            wrOrient = "R180"
          )
          ( "R180"
            wrOrient = "R270"
          )
          ( "R270"
            wrOrient = "R0"
          )
          ( "MY"
            wrOrient = "MYR90"
          )
          ( "MYR90"
            wrOrient = "MX"
          )
          ( "MX"
            wrOrient = "MXR90"
          )
          ( "MXR90"
            wrOrient = "MY"
          )
        ) ;; case
        instancepointer->orient = wrOrient
          ) ;; unless
        ) ;; foreach
      ) ;; let
    )



    Originally posted in cdnusers.org by relyveld
    • 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