Home > Community > Forums > Custom IC Design > How to create evenly spaced pins in Virtuoso?

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 to create evenly spaced pins in Virtuoso? 

Last post Mon, Jul 27 2009 7:36 AM by skillUser. 3 replies.
Started by Finn 20 Jul 2009 04:48 PM. Topic has 3 replies and 5908 views
Page 1 of 1 (4 items)
Sort Posts:
  • Mon, Jul 20 2009 4:48 PM

    • Finn
    • Not Ranked
    • Joined on Mon, Jul 20 2009
    • Posts 8
    • Points 130
    How to create evenly spaced pins in Virtuoso? Reply
    I have a evenly spaced bus but their pin numbers are spaced larger than one, like A<1>, A<3>, A<5> ... I know I can create A<1:5> by specifying delta X or delta Y, but A<1:5:2> doesn't work here. Could someone help me? Thanks a lot!
    Filed under:
    • Post Points: 20
  • Mon, Jul 27 2009 4:42 AM

    • skillUser
    • Top 10 Contributor
    • Joined on Fri, Sep 19 2008
    • Austin, TX
    • Posts 2,535
    • Points 14,940
    Re: How to create evenly spaced pins in Virtuoso? Reply

     Hi,

    well apart from doing what you've said (using A<1:5>) and modifying the pitch so that when you remove the unwanted pins everything is correct, the only other suggestion that I can make is to use the leCreatePin() SKILL function with a wrapper around it to use it multiple times, once per pin.  You could use an enter function to gather points from the user (e.g. enterBox) and have a command form so that you can control the bus expansion part.  This might be a lot of work if you are not going to use it all the time, so I'd suggest using the first approach.

    Regards,

    Lawrence.

    • Post Points: 20
  • Mon, Jul 27 2009 6:16 AM

    • Finn
    • Not Ranked
    • Joined on Mon, Jul 20 2009
    • Posts 8
    • Points 130
    Re: How to create evenly spaced pins in Virtuoso? Reply

    Hi Lawrence,

    Thanks a lot. I don't know much about SKILL, so probably I will use the first approach. Do you mean for example, I first creat a bus A<1:5>, delete A<2> and A<4> manually, then I get A<1:5:2> with desired pitch?

    • Post Points: 20
  • Mon, Jul 27 2009 7:36 AM

    • skillUser
    • Top 10 Contributor
    • Joined on Fri, Sep 19 2008
    • Austin, TX
    • Posts 2,535
    • Points 14,940
    Re: How to create evenly spaced pins in Virtuoso? Reply

    Hi,

    Yes, that was the idea, basically to create the superfluous pins so that the automatic pin creation could be used, and then to delete the unwanted pins, either manually or through SKILL.

    The latter would be relatively easy to do, for example, the
    terminal objects can be found one at a time by using the SKILL function dbFindTermByName(), or something like this:


    cv = geGetEditCellView()
    a_terms = setof(term cv~>terms rexMatchp("A<" term~>name))
    => (db:215089524 db:215089592 db:215090640 db:215090688 db:215062840)
    a_terms~>name
    => ("A<5>" "A<4>" "A<3>" "A<2>" "A<1>")

    or
    even_a_terms = setof(term cv~>terms rexMatchp("A<" term~>name) && evenp(atoi(cadr(parseString(term~>name "<>"))))
    => (db:215089592 db:215090688)


    Once you have the terminal object you should be able to delete it and any associated physical shapes.  E.g.

    foreach(eventerm even_a_terms 
      dbDeleteObject(car(eventerm~>pins))
      dbDeleteObject(eventerm)
    )


    There may be more things to remove...

    Regards,

    Lawrence

    • Post Points: 5
Page 1 of 1 (4 items)
Sort Posts:
Started by Finn at 20 Jul 2009 04:48 PM. Topic has 3 replies.