Home > Community > Forums > Custom IC SKILL > How do I transform cell orientation while edit in placed?

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 How do I transform cell orientation while edit in placed? 

Last post Tue, Jan 5 2010 11:46 AM by Andrew Beckett. 4 replies.
Started by Vaughn 29 Dec 2009 01:36 PM. Topic has 4 replies and 1823 views
Page 1 of 1 (5 items)
Sort Posts:
  • Tue, Dec 29 2009 1:36 PM

    • Vaughn
    • Not Ranked
    • Joined on Thu, Apr 23 2009
    • Posts 7
    • Points 140
    How do I transform cell orientation while edit in placed? Reply

    Hi guys,

     

    I have been using these forums for a few years now to get skill help. This is a great forum!

    Now I find I need to post my question here. 

    I have skill code that will modify a via pcell/cdf to add and sub rows and columns by key strokes. This all works great on flat data. Once I edit in place and the instance I am in is rotated throught the hierarchy somewhere, now the keys that were supposed to grow the via pcell north now go west or east.

     

    How can I pass the proper hierarchical orientation to my skill?

     

    • Post Points: 20
  • Wed, Dec 30 2009 9:26 AM

    Re: How do I transform cell orientation while edit in placed? Reply

    I think this is the right way around, but forgive me if it ends up with the transform back to front - I'm sure  you can fix it if it is. The trick is to use geGetInstHierPath() to find out the hierarchical path down to where you are, and then to concatenate the transformations at each stage. Because I'm not worried about the translation part (i.e. the offset), I don't worry about handling mosaics properly - this is just to collect the orientation.

    Anyway, something like this should do it:

    procedure(CCSgetCurrentOrient(@optional (win hiGetCurrentWindow()))
      let((hierPath transform)
        hierPath=geGetInstHierPath(win)
        transform=list(0:0 "R0" 1)
        foreach(instInfo hierPath
          transform=dbConcatTransform(transform car(instInfo)~>transform)
        )
        cadr(transform)
      )
    )

    Regards,

    Andrew.

    • Post Points: 20
  • Tue, Jan 5 2010 10:39 AM

    • Vaughn
    • Not Ranked
    • Joined on Thu, Apr 23 2009
    • Posts 7
    • Points 140
    Re: How do I transform cell orientation while edit in placed? Reply

    Thanks Andrew,

     

    This is exactly what I needed.

    Vaugh 

    • Post Points: 20
  • Tue, Jan 5 2010 11:03 AM

    • dmay
    • Top 25 Contributor
    • Joined on Thu, Jul 17 2008
    • Allen, TX
    • Posts 386
    • Points 7,290
    Re: How do I transform cell orientation while edit in placed? Reply

    This information is also readily available off the window id:

    hiGetCurrentWindow()~>e2dTransOrient

    You can also get the current edit-in-place cell x and y offset relative to the top level. Getting it from the window id will require that you divide by the geGetEditCellView()~>DBUPerUU (database units, usually 1000.0):
    hiGetCurrentWindow()~>e2dTransX
    hiGetCurrentWindow()~>e2dTransY

    OR
    geEditToWindowPoint(hiGetCurrentWindow() 0:0)

    Thus, the transform of the current edit-in-place cell is:
    layWin=hiGetCurrentWindow()
    curTransform=list(geEditToWindowPoint(layWin 0:0) layWin~>e2dTransOrient 1.0)

    Derek

     

    • Post Points: 20
  • Tue, Jan 5 2010 11:46 AM

    Re: How do I transform cell orientation while edit in placed? Reply
    Good point Derek. I'd forgotten about that.

    Regards,

    Andrew
    • Post Points: 5
Page 1 of 1 (5 items)
Sort Posts:
Started by Vaughn at 29 Dec 2009 01:36 PM. Topic has 4 replies.