pin align

R

rick

Guest
This message was posted 9 years ago and had no response. I have the
same need, does anyone have a method to align the pins by the
flightlines.


I am looking for some sort of automatic method to place pins on their
correxponding nets with virtuoso-XL. These pins are used to connect
between different levels in the hierarchy. Sometimes in one layout we
have hundreds of pins. In Virtuoso-XL, a flightline is drawn from the
pin to the net it should be connected to. Is there a way to
automatically move the pin so that it will be placed anywhere on the
net (preferably towards the edge of the layout)? a routine/function
that would place the pin at the spot where the flightline starts would
be good. From there, it would be much easier to align the pin to
exactly the right spot, if needed.
 
rick wrote, on 11/02/09 18:49:
This message was posted 9 years ago and had no response. I have the
same need, does anyone have a method to align the pins by the
flightlines.


I am looking for some sort of automatic method to place pins on their
correxponding nets with virtuoso-XL. These pins are used to connect
between different levels in the hierarchy. Sometimes in one layout we
have hundreds of pins. In Virtuoso-XL, a flightline is drawn from the
pin to the net it should be connected to. Is there a way to
automatically move the pin so that it will be placed anywhere on the
net (preferably towards the edge of the layout)? a routine/function
that would place the pin at the spot where the flightline starts would
be good. From there, it would be much easier to align the pin to
exactly the right spot, if needed.
VirtuosoXL has a function Place->Pin Placement which allows you to place pins
along edges, and so on (in IC5141). In IC613 it's even more powerful, because
you can also place pins in sub-blocks. You can also use alignment of pins to
pins in sub-blocks and so on (and indeed alignment of pins in soft blocks to top
level pins) - as part of the floorplanning capabilities in VLS-GXL.

I don't think your requirements entirely made sense - moving the pin to place
the pin where the "flightline starts" - surely that's where it is anyway, since
the flightline will be drawn from the pin to connected objects?


Regards,

Andrew.
 
On Nov 2, 12:09 pm, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm>
wrote:
rick wrote, on 11/02/09 18:49:

This message was posted 9 years ago and had no response.  I have the
same need, does anyone have a method to align the pins by the
flightlines.

I am looking for some sort of automatic method to place pins on their
correxponding nets with virtuoso-XL.  These pins are used to connect
between different levels in the hierarchy.  Sometimes in one layout we
have hundreds of pins.  In Virtuoso-XL, a flightline is drawn from the
pin to the net it should be connected to.  Is there a way to
automatically move the pin so that it will be placed anywhere on the
net (preferably towards the edge of the layout)?  a routine/function
that would place the pin at the spot where the flightline starts would
be good. From there, it would be much easier to align the pin to
exactly the right spot, if needed.

VirtuosoXL has a function Place->Pin Placement which allows you to place pins
along edges, and so on (in IC5141). In IC613 it's even more powerful, because
you can also place pins in sub-blocks. You can also use alignment of pins to
pins in sub-blocks and so on (and indeed alignment of pins in soft blocks to top
level pins) - as part of the floorplanning capabilities in VLS-GXL.

I don't think your requirements entirely made sense - moving the pin to place
the pin where the "flightline starts" - surely that's where it is anyway, since
the flightline will be drawn from the pin to connected objects?

Regards,

Andrew.
Actually it does have alot of value, think of the case at the block
level you have a couple of hundred
pins and a handful of blocks. After gen-from-source, the pins are
scattered and scrabbled. In many
cases especially at the top level chip integration level, the bulk of
the connections will be a direct
connection from block to pin. Wouldnt be nice to have a function
that would "snap" the pin to to its
connection. Pin placement is a big time overhead but is highly
valuable especially in block abutment
type of designs.

Rick
 
rick wrote, on 11/03/09 15:26:
On Nov 2, 12:09 pm, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm
wrote:
rick wrote, on 11/02/09 18:49:

This message was posted 9 years ago and had no response. I have the
same need, does anyone have a method to align the pins by the
flightlines.
I am looking for some sort of automatic method to place pins on their
correxponding nets with virtuoso-XL. These pins are used to connect
between different levels in the hierarchy. Sometimes in one layout we
have hundreds of pins. In Virtuoso-XL, a flightline is drawn from the
pin to the net it should be connected to. Is there a way to
automatically move the pin so that it will be placed anywhere on the
net (preferably towards the edge of the layout)? a routine/function
that would place the pin at the spot where the flightline starts would
be good. From there, it would be much easier to align the pin to
exactly the right spot, if needed.
VirtuosoXL has a function Place->Pin Placement which allows you to place pins
along edges, and so on (in IC5141). In IC613 it's even more powerful, because
you can also place pins in sub-blocks. You can also use alignment of pins to
pins in sub-blocks and so on (and indeed alignment of pins in soft blocks to top
level pins) - as part of the floorplanning capabilities in VLS-GXL.

I don't think your requirements entirely made sense - moving the pin to place
the pin where the "flightline starts" - surely that's where it is anyway, since
the flightline will be drawn from the pin to connected objects?

Regards,

Andrew.

Actually it does have alot of value, think of the case at the block
level you have a couple of hundred
pins and a handful of blocks. After gen-from-source, the pins are
scattered and scrabbled. In many
cases especially at the top level chip integration level, the bulk of
the connections will be a direct
connection from block to pin. Wouldnt be nice to have a function
that would "snap" the pin to to its
connection. Pin placement is a big time overhead but is highly
valuable especially in block abutment
type of designs.

Rick
I now understand what you mean. You want the pin to be directly over the pin on
the instance to which it is connected.

There are two ends of the flightline - you meant the opposite end of the
flightline from the pin (sorry, I didn't twig).

I still think the pin placement stuff helps. There are also alignment options in
IC613 which can do just want you want (I believe - I don't have time right now
to try it out, but I'm pretty sure you could use the pin alignment to place the
pins directly on top).

Regards,

Andrew.
 
On Nov 3, 9:23 am, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm>
wrote:
rick wrote, on 11/03/09 15:26:



On Nov 2, 12:09 pm, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm
wrote:
rick wrote, on 11/02/09 18:49:

This message was posted 9 years ago and had no response. I have the
same need, does anyone have a method to align the pins by the
flightlines.
I am looking for some sort of automatic method to place pins on their
correxponding nets with virtuoso-XL. These pins are used to connect
between different levels in the hierarchy. Sometimes in one layout we
have hundreds of pins. In Virtuoso-XL, a flightline is drawn from the
pin to the net it should be connected to. Is there a way to
automatically move the pin so that it will be placed anywhere on the
net (preferably towards the edge of the layout)? a routine/function
that would place the pin at the spot where the flightline starts would
be good. From there, it would be much easier to align the pin to
exactly the right spot, if needed.
snip

Yes, this is possible to do. I did this via Skill programming. It took
me quite a few lines of code.

I don't know your familiarity with software programming. Personally, I
am a Physical Design Engineer, and not a programmer, but it is
possible to do some scripting even as a layout guy.

Skill is pretty powerful and it seems to me it is similar to the Lisp
language but with a C syntax (Cadence manuals mention something like
this). If you are not able to program, then you may want to start out
with a forgiving syntax language like Perl, or maybe even dive into a
more strict language like C. That is what I did. I then picked up a
Lisp book, because the Skill was a little strange to me. After
perusing a Intro Lisp book, Skill made a lot of sense. From there, I
just started messing with Skill programming. I don't have that much
time to program, because I do layout, but once a year I get a slow
period, and I can try of think of things to automate, and then I'll
write a script.

If you do decide to write a Skill script, then you will find tons of
information here and especially with the Cadence manuals.. Good
Luck!
 
On Nov 5, 5:35 pm, vlsidesign <ford...@gmail.com> wrote:
On Nov 3, 9:23 am, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm
wrote:

rick wrote, on 11/03/09 15:26:

On Nov 2, 12:09 pm, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm
wrote:
rick wrote, on 11/02/09 18:49:

This message was posted 9 years ago and had no response.  I have the
same need, does anyone have a method to align the pins by the
flightlines.
I am looking for some sort of automatic method to place pins on their
correxponding nets with virtuoso-XL.  These pins are used to connect
between different levels in the hierarchy.  Sometimes in one layout we
have hundreds of pins.  In Virtuoso-XL, a flightline is drawn from the
pin to the net it should be connected to.  Is there a way to
automatically move the pin so that it will be placed anywhere on the
net (preferably towards the edge of the layout)?  a routine/function
that would place the pin at the spot where the flightline starts would
be good. From there, it would be much easier to align the pin to
exactly the right spot, if needed.

snip

Yes, this is possible to do. I did this via Skill programming. It took
me quite a few lines of code.

I don't know your familiarity with software programming. Personally, I
am a Physical Design Engineer, and not a programmer, but it is
possible to do some scripting even as a layout guy.

Skill is pretty powerful and it seems to me it is similar to the Lisp
language but with a C syntax (Cadence manuals mention something like
this). If you are not able to program, then you may want to start out
with a forgiving syntax language like Perl, or maybe even dive into a
more strict language like C. That is what I did. I then picked up a
Lisp book, because the Skill was a little strange to me. After
perusing a Intro Lisp book, Skill made a lot of sense. From there, I
just started messing with Skill programming. I don't have that much
time to program, because I do layout, but once a year I get a slow
period, and I can try of think of things to automate, and then I'll
write a script.

If you do decide to write a Skill script, then you will find tons of
information here and especially with the Cadence manuals..   Good
Luck!
Perhaps you could share your routine, Im sure others would love to
have this also

thanks
 
On Nov 6, 7:17 am, rick <ej...@pacbell.net> wrote:
On Nov 5, 5:35 pm, vlsidesign <ford...@gmail.com> wrote:



On Nov 3, 9:23 am, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm
wrote:

rick wrote, on 11/03/09 15:26:

On Nov 2, 12:09 pm, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm
wrote:
rick wrote, on 11/02/09 18:49:

This message was posted 9 years ago and had no response. I have the
same need, does anyone have a method to align the pins by the
flightlines.
I am looking for some sort of automatic method to place pins on their
correxponding nets with virtuoso-XL. These pins are used to connect
between different levels in the hierarchy. Sometimes in one layout we
have hundreds of pins. In Virtuoso-XL, a flightline is drawn from the
pin to the net it should be connected to. Is there a way to
automatically move the pin so that it will be placed anywhere on the
net (preferably towards the edge of the layout)? a routine/function
that would place the pin at the spot where the flightline starts would
be good. From there, it would be much easier to align the pin to
exactly the right spot, if needed.

snip

Yes, this is possible to do. I did this via Skill programming. It took
me quite a few lines of code.

I don't know your familiarity with software programming. Personally, I
am a Physical Design Engineer, and not a programmer, but it is
possible to do some scripting even as a layout guy.

Skill is pretty powerful and it seems to me it is similar to the Lisp
language but with a C syntax (Cadence manuals mention something like
this). If you are not able to program, then you may want to start out
with a forgiving syntax language like Perl, or maybe even dive into a
more strict language like C. That is what I did. I then picked up a
Lisp book, because the Skill was a little strange to me. After
perusing a Intro Lisp book, Skill made a lot of sense. From there, I
just started messing with Skill programming. I don't have that much
time to program, because I do layout, but once a year I get a slow
period, and I can try of think of things to automate, and then I'll
write a script.

If you do decide to write a Skill script, then you will find tons of
information here and especially with the Cadence manuals.. Good
Luck!

Perhaps you could share your routine, Im sure others would love to
have this also

thanks
I am not the owner of the program, the company is.

If you study and become an expert, then you will learn the whole
paradigm and all the technical language, concepts, etc (I'm not
there). But here are some pointers and tips for the layman and noob.

Roughly speaking, your layout window and all the parts are objects
that have various properties/values.
For instance, go to your Cadence Virtuoso window, and open up and edit
a XL compliant layout window, then
1. select a path
2. go to the CIW and type:
myPath = css()
3. go to the CIW and type:
myPath~>??

Now look at the output in the CIW. You can see from this, that the
object has certain properties/values associated with them (somewhat
similar to the Edit~>Properties GUI that you can change by hand). It
has an objType, it should have a net. Now:

4. go to CIW and type:
myPath~>net~>??

Now look at the net object, it also has properties, one of them is a
name. Try doing this to instances and see what you get.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Here is roughly the thinking behind the program I created.

a. Your layout has to be XL compliant because it uses pin and net
information to work.
b. You then generate your hundreds of pins in XL and see them along
the bottom.

c. Then you run the script.
1. The script looks at the pins (top level pins along the bottom) to
see what nets they are connected to.
2. then it checks what instance pins (lower level pins that the
instantiated cells have) are connected to the net.
3. you then can get the instance's pins X/Y information to determine
where to move the pin.
4. It then calculates the top level pins current XY position and
calculates the difference to where the pins on the instance are at,
and moves them accordingly.

That is roughly it in a nutshell. I added some additional operations
like checking to see the layer purpose pair of the instance's pins and
I automatically change the top level pin to that, and some other
things like that. There are some other technical aspects that you will
find it or get help on once you've started working on this. I've found
a lot of answers in the manuals, and here. Andrew Beckett and others
have posted quite a bit of stuff here.
 
On Nov 2, 12:49 pm, rick <ej...@pacbell.net> wrote:
This message was posted 9 years ago and had no response.  I have the
same need, does anyone have a method to align the pins by the
flightlines.

I am looking for some sort of automatic method to place pins on their
correxponding nets with virtuoso-XL.  These pins are used to connect
between different levels in the hierarchy.  Sometimes in one layout we
have hundreds of pins.  In Virtuoso-XL, a flightline is drawn from the
pin to the net it should be connected to.  Is there a way to
automatically move the pin so that it will be placed anywhere on the
net (preferably towards the edge of the layout)?  a routine/function
that would place the pin at the spot where the flightline starts would
be good. From there, it would be much easier to align the pin to
exactly the right spot, if needed.
Hi Rick,

In Pin Placement GUI, if u select edge as "none", it should place pins
as u expected.

Thanks,
 
On Nov 2, 1:49 pm, rick <ej...@pacbell.net> wrote:
This message was posted 9 years ago and had no response.  I have the
same need, does anyone have a method to align the pins by the
flightlines.

I am looking for some sort of automatic method to place pins on their
correxponding nets with virtuoso-XL.  These pins are used to connect
between different levels in the hierarchy.  Sometimes in one layout we
have hundreds of pins.  In Virtuoso-XL, a flightline is drawn from the
pin to the net it should be connected to.  Is there a way to
automatically move the pin so that it will be placed anywhere on the
net (preferably towards the edge of the layout)?  a routine/function
that would place the pin at the spot where the flightline starts would
be good. From there, it would be much easier to align the pin to
exactly the right spot, if needed.
Initially pins at the lower hierarchy are placed manually. However
once there is a redundancy with pins up the hierarchy there can be a
large advantage to having pins automatically generated and placed. IE:
Padrings. We had a script developed by out PDK group that generates
pins from instance pins at the lower level and will match the pin
layer and font. If you have a CAD Engineer on your staff you can have
that person generate that script. You just have to make sure you do
not generate the pins from the schematic when involking Virtuoso -XL.
Hop this helps !!
 

Welcome to EDABoard.com

Sponsor

Back
Top