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

Re: gEDA-user: Pick-And-Place Extract



Dan McMahill wrote:
Tony Radice wrote:

Do you have any feel for how widely used IPC-D-356 is? I think I was asking about how useful this would be to folks several years ago and no one seemed interested. Perhaps this has changed now?
Dan - I'm not sure how widely this is used, it came up as one of the
formats a flying-probe testing unit that will be used to test my bare
boards accepts. Since it's documented I figured I would go in that
direction.
ok.  I'm all for supporting it.  The good news is that it is a 
documented standard.  I can't remember if I ever got as far as looking 
at the standard to see what it would take.  The BOM HID 
(pcb/src/hid/bom/) has the existing x-y export code and may help with 
what you need.  It is a bit different from the other exporters since it 
doesn't deal with traces at all, only footprints.  Then 
pcb/src/hid/gerber/ is also useful to look at since it has the RS274-X 
and Excellon export.  Those of course have a bit more.
The x-y export code can show you how to get locations of all pins and 
pads.  Via locations aren't hard either.  If you need connectivity 
information, then it is probably still doable but I would have to go 
digging.
I took a quick look.  I think you want the BOM code as the example. 
Looks to me like the biggest part of IPC-D-356 is listing out 
pin/via/pad locations and the x-y part of the BOM exporter has most of 
that.  You will need to see how the connectivity part goes.  I'm just 
not quite familiar enough with that bit to know the answer off hand.
The other thing you'll probably need is a couple of functions for 
mangling both net names as well as refdes and pin numbers.  The reason I 
say this is that it appears that IPC-D-356 is somewhat restrictive (more 
so than pcb) on things like net name but yet net name is crucial for the 
IPC output.
Here is what you don't want:

printf("%s", truncate_to_14_chars( netname ));

because now 2 unique netnames may show up in the output as the same. *NOT* good.
Instead you probably need something like

reset_net_name_mangling(); /* call this at the start of exporting */

......
printf("%s", mangle_net_name( netname ));

where mangle_net_name() is smart enough to always produce an output which is legal for IPC-D-356 but in a way where it doesn't artificially short things out. Maybe it is as simple as allowing 10 characters from the real name and reserving the final 4 for a hash of sorts.
note that these name mangling functions don't exist but shouldn't be so 
hard to write.
To get going with a new exporter,  create pcb/src/hid/ipc-d-356/, edit 
pcb/configure.ac, pcb/src/Makefile.am, (search for 'bom' for examples of 
where and how to edit these), create a pcb/src/hid/ipd-d-356/hid.conf 
(using pcb/src/hid/bom/hid.conf as an example), copy 
pcb/src/hid/bom/bom.c to pcb/src/hid/ipc-d-356/ipc-d-356.c and edit it 
to do what you need and you should be good to go.
hmmm... this short summary should probably go in a manual appendix or 
something...
Hope this helps and don't be afraid to ask questions if you need help.

-Dan



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