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

Re: gEDA-user: gsch2pcb deleting almost all elements



DJ Delorie wrote:
>> We have talked many times about the need for gsch2pcb to defer
>> actual layout processing into PCB. I don't know if there are
>> sufficiently flexible PCB actions to do this without some work on
>> PCB though.
> 
> I'm willing to add actions, if someone defines what they need to do.

I think whats needed is a way to instantiate a footprint to the layout. 
  Arguments should be something like name of footprint 
("TQFN68EP"),refdes ("U32"), value ("MAX12559") x, y, rotation.  If not 
defined rotation should be 0, if not defined, x,y should be 0,0 or maybe 
half of the bounding box in each direction,  its probably ok to require 
the first 3.


The trick is if we find footprints in a search path way or a 
library+name way.  Personally, it has always been a complaint of mine 
that gschem/gnetlist use a search path mechanism which can cause strange 
conflicts if a library gets updated and you suddenly have 2 symbols with 
the same name.

In the old-style way in pcb of grabbing the footprints 1 by 1 in the gui 
(yuck!), you don't have this since you know exactly where it came from. 
  In the gsch2pcb approach, you have a search path approach for newlib 
footprints and the m4 ones basically require no conflicting names.  So 
again, there is a little exposure if you're not careful with library orders.

I think I generally like the method of referencing a footprint and/or a 
symbol via library:name which makes things a little more unambigous.

Maybe the short term fix is to provide the action to instantiate a 
footprint and also provide actions to modify the m4 vs newlib preference 
and set the newlib search path.  That should be doable with todays code 
without too many other far reaching changes.

So how about:

InstantiateFootprint(name, refdes, value, [x, y, [rotation, [{top/bot}]])
SetLibPref({m4,newlib,m4newlib, newlibm4})
SetNewlibPath(dir1:dir2:....)

That gets you the ability for gsch2pcb to add elements.

We'd also want something like:

WriteFootprintList(filename)

to get out a file in a fixed format that gsch2pcb could read to see what 
needs updating.  I'm thinking of basically a netlist minus the 
connectivity.  Maybe resource file format?  Maybe this is an opportunity
to try the verilog or vhdl approach that Al has suggested?

For each instance, we'd write out all attributes we know about (name of 
footprint, refdes, value, x, y, rotation, board side, any other 
attributes that show up in the future).

Maybe if we do it right gsch2pcb won't need to continually reproduce the 
pcb file parser.

-Dan


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