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

Re: gEDA-user: PCB paste layer, revisited.



DJ Delorie wrote:
>>> My current workflow is ps -> dxf via converter.
> 
> Then ps-bloat will work for you.

Well, it reduces the pain, but it isn't sufficient to make the problem 
go away.  I could pick a bloat that helps TQFP's (or pick your pad 
family) but still be left with hand editing others, like voltage regulators.

> 
>>>> That's why multi-pins have paste and mask specified separately from
>>>> copper, for each layer.
>>> So how would all that be specified in the footprint?
> 
> There's nothing in there yet - at all.
> 
> But I'm thinking a whole new syntax for the new item:
<syntax snip>
Well, I can see that it is general.  Its really a whole new footprint 
syntax.  Rather than dup'ing pins, I think it would be better to define 
a pattern for and then instantiate pins.  And it might make more sense 
to create a new element type that allows more freedom in creating a 
block structured syntax.  The end result would be a much more general 
way of describing a footprint.  Being able to cleanly specify keep-outs 
(both 2D and 3D) would be a radical improvement.

But... I'm not particularly in the mood to boil the ocean right now.  I 
want to build robots. To build robots, I need PCB's. To get PCB's, I 
need gerbers.  To get gerbers, I use pcb.  I'm willing to crank out some 
code that gets me closer to robots. Getting a working solder stencil 
with minimal intervention gets me closer to robots.

I think a simple paste[] directive could be implemented within the 
current architecture and syntax of footprints, and be upward compatible 
with MultiPin functionality in the future.

So, here is an 0603 from my current library, with Paste directives.  It 
is 100% equivalent to today's functionality, because the Paste 
directives are copy of the Pad directives.  Obvious, this is a silly 
example, the only reason to use a Paste directive is to get a 
*different* paste aperture.

Element["" "0603 1.6mm x 0.8mm, 0.3mm terminal" "" "" 0 0 0 0 0 100 ""]
(
         # Generated 13-June-2007 gedasymbols.org two pad footprint 
generator
         # C = 8 mil
         # M = 6 mil
         # PL = 2.0mm
         # PT = 0.5mm
         # PW = 1.0mm
         # SO = 8 mil
         # SW = 10 mil
         Pad[-2953 984 -2953 -984 1968 1600 3168 "1" "1" "square"]
         Pad[2953 984 2953 -984 1968 1600 3168 "2" "2" "square"]
         Paste[-2953 984 -2953 -984 1968 1600 3168 "1" "1" "square"]
         Paste[2953 984 2953 -984 1968 1600 3168 "2" "2" "square"]
         ElementLine[-3937 -3268 5237 -3268 1000]
         ElementLine[-3937 3268 5237 3268 1000]
         ElementLine[5237 -3268 5237 3268 1000]
         ElementLine[-5237 -1968 -5237 1968 1000]
         ElementArc[-3937 -1968 1300 1300 0 -90 1000]
         ElementArc[-3937 1968 1300 1300 0 90 1000]
)

Seems to me that the implementation is something like this:
1) tweak flex and bison to recognize "Paste"
2) clone Pad data structure allocation and manipulation code
3) during parse, tuck away paste information as encountered
4) during parse, if an element is closed without encountering a paste 
directive, synthesize paste directives that are copies of the pad 
directives. (Preserves upward compatibility with existing footprint.)
5) tweak the printout code to look at the paste data instead of the pad 
data.

-dave



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