[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: next PCB release - 1.99za vs 4.0



Hi all,

We use Cadence Allegro at work, and how they implement keepouts may be 
interesting.  There are several non-copper layers that are used to control the 
keep outs and keep-in.  In this tool the keep in / keep out is related to how 
courtyards are defined.

Each library symbol (called a package in allegro) has a layer called 
place-boundary upon which a shape is drawn which defines it's courtyard.  This 
can be a simple rectangle for an SMD component, or something more complex.  This 
shape can have a height property.  This defines a 3-D "No fly zone" for other 
components.  You can have multiple shapes on this layer for one library part and 
they can have different height properties, including a clearance area above the 
board (I believe specified by a negative height).  This allows constructs like 
"you can place a component here, as long as it is less than this tall. This is 
useful for odd components like a heatsink that overhangs part of the board. 


When placing components on the board, the shapes on this place-boundary layer 
(there is one for top and one for bottom) can not overlap. they can be adjacent 
but not overlap, unless the height of one of them fits under the minimum height 
of the other (the heatsink example above).  This works well, but there is a 
downside in that the package to package spacing is defined in the library by the 
size of this shape on each part, but when you go to a high volume assembly 
house, they often have different rules as to how close some components can be.  
If their value is different than your . assumption, changing this value is not 
just a simple DRC rule change in the board, it has to be changed in the library.

To do keepin / keep out there are special board layers called package keep in 
and package keep out (there are several of these layers, one for top, one for 
bottom, and one for all layers, you could generalize this to one per each layer 
if need be).  On these layers you place outlines of the assorted regions you are 
trying to define.   If any packages courtyard is even partially outside a 
package keepin layer, this is a DRC violation.  If any packages courtyard is 
even partially inside a package keepout, this is also a violation.  You can have 
multiple shapes on a package keep out layer, so there can be multiple regions 
you wish to keep parts out of.  I believe you can also define a height property 
to these regions as well, so that you can have an area of the board for only 
components less tall than X, say under a shield can or under a heatsink.

There are also analogous layers called route keepin and route keepout, which 
define where traces go and can not go.  You can route a trace through a package 
keepout, under the assumption that the trace height wont cause a mechanical 
clearance issue.  But a route keep out will prevent any traces from going 
through that area (good for an area where you remove soldermask for some 
reason).  All traces (routes in allegro terminology) must be inside the route 
keepin.

One way to use these is at the board edge.  You may have an outline layer that 
defines the size of the board, but may wish a route-keepin shape that is say 20 
mils inside the outline, to keep the traces away from the board edge, and a 
package keepin shape that is say 40 mils smaller, to keep components in from the 
edge.

Incidentally the height property of the courtyard is often used by 3rd party 3D 
board rendering tools when a true 3d model of the component does not exist, the 
courtyard outline is extended upwards by the height property for a quick 
approximation of the 3D component. 

Regards,

--Neil.



_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user