• 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 specify coords for leHiCreateInst() ?

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 143
  • Views 15539
  • 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 specify coords for leHiCreateInst() ?

jaleco
jaleco over 12 years ago

 Is there any way to either add coordinates to or pass coordinates to leHiCreateIns() without clicking in the interface?

I would like to place instances generally at the origin, but often at other known coordinates, and would like to do so without first zooming in close enough to get an exact snapped coordinate, or alternatively by clicking at a random location to place, and then having to select the instance, get its properties, and finally specify the correct coordinate location.

Any insight into streamlining this or if there is a script to do it would be much appreciated.

 

  • Cancel
  • skillUser
    skillUser over 12 years ago

    Hi James,

    Yes, you can use preXY() to specify a point before a command (such as leHiCreateInst()) to enter the point in a queue. This should do what you are asking I think.

    Best regards,

    Lawrence.

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

    And, if you are asking about this interactively (rather than 'scripted') then you can just enter the coordinates in the CIW, e.g. 0:0 or "list(0 0)".  So, in short, if you are running a command interactively then you can typically supply one or more pairs of coordinates in the CIW, but if you are trying to use a scripted flow (such as in a regression suite) then you might use preXY() before a command.

    Regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jaleco
    jaleco over 12 years ago

     Thank you Lawrence,

    Can you offer any code to successfully execute the preXY() cmd before a command such as leHiCreateInst() in a script?

    If I type these commands in the CIW successively, preXY() accepts my supplied coordinates, but they seem to be disregarded by the leHiCreateInst() command following....leHiCreateInst() seems intent on waiting for a user click - although I can successfully (re)type the coordinates into the CIW for Create Instance to accept.  (That in itself is very helpful though.)

    Ideally I would love to have the X and Y coords added to the Create Inst form, or any similar form.  I could create a form that has coordinate fields but do not know how to pass these to the Create Instance command if it does not seem to accept them via CIW....

    - James

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago
    If typing in the CIW, put the preXY on the same line as leHiCreateInst. Note that this will only work if the form is already completed (ie the lib/cell/view is filled in).

    Otherwise perhaps you're better off using dbCreateInst?

    Andrew
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jaleco
    jaleco over 12 years ago

    Thanks Andrew and Lawrence for your suggestions.

    Typing coords in the CIW is good for one-time instance placement at random spec'd coordinates.

    However, I realized that the majority of the time I am creating a new layout view, I place an instance at the origin, and typing (0:0) in the CIW got old, so I found a solution to automate it by assigning a bindkey to the addPoint() function.  Here is some sample code:

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Create new instance procedure to redefine the "o" key
    ; so an instance can be placed at the origin
      
    procedure( SNLhiCreateInstO()
     hiSetBindKey("Layout" "<Key>o" "addPoint((0:0))")
     leHiCreateInst()
     hiSetBindKey("Layout" "<Key>o" "leHiCreateContact()")
    ); procedure

    hiSetBindKey("Layout" "<Key>i" "SNLhiCreateInstO()")

    I have re-defined the "i" bindkey to call a custom hiCreateInst() function, which re-assigns the "o" key to add a point at the origin.  Once the CreateInst form is closed, the "o" key is re-assigned to its standard function of leHiCreateContact().  Between the option of typing a coordinate list to the CIW and having a bindkey for the most-often used coordinates, this is working pretty well for me.

    BTW, Andrew, I did look into using dbCreateInst, but it lacks the array and spacing functionality (parameters) of the leHiCreateInst form, so not as powerful an option.  For example I could create an instance at specified coordinates using dbCreateInst, but could not create an array instance of a unit cell unless I use the leHiCreateInst form.

    Thanks again!

    - James

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    James,

    You could use dbCreateSimpleMosaic if you want to create an array rather than a single instance.

    Regards,

    Andrew.

    • 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