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

Re: gEDA-user: gEDA/gaf capabilities



>>> I tend to list the weaknesses of geda/pcb from my perspective.
>>>
>>> 1) Lack of support for hierarchical buses.
>>> 2) pcb lacks buried, blind and micro vias.
>>> 3) no back annotation between pcb and gschem.
>>
>> #3 should read "limited back annotation between pcb and gschem".  If you
>>  renumber reference designators in pcb via the Renumber() action, the
>> capability to back annotate that to schematics exists today.  But that
>> is it.  Manual renumbers, new instances, value changes (0.1 uF -> 0.01
>> uF), pin swap, gate swaps, etc are not supported for back annotation.


> Where is a description of how this backannotation works?  Post layout 
> renumbering is my biggest concern for backannotation.  What is the 
> mechanism for backannotation from PCB?  If a third party tool provided a 
> text based reference designator cross reference file, would it be 
> possible to use the same mechanism as is used for the backannotation 
> from PCB?

I'd have to search for where it is fully documented, if anywhere :(, but 
here's the short end of it.

In pcb,

- save your layout (always good advice)

- use the Renumber() action.  Currently it looks like it is not bound to 
a menu choice although perhaps it should be.  For now, use ":" to bring 
up the command entry box/window and enter "Renumber()" (without the 
double quotes) and hit enter.  You'll be asked for a filename to record 
the changes in.  Give a file name.

- Use the script pcb_backannotate which comes with gEDA/gaf to propagate 
those changes back into the schematics.  "pcb_backannotate --help" gives 
more info.



> I was looking at the .sch files and it appeared that every reference 
> designator was prefixed by refdes= so it seems like a very scriptable 
> function if a simple cross reference file is available, even for a 
> hardware guy.  I was thinking of writing something to perform this task 
> if necessary. Is there a gotcha I'm missing here?

That is exactly how both pcb_backannotate and pads_backannotate work.


In pads, the way forward/backward annotation work is a netlist of sorts 
is produced from both the layout and the schematic.  Then a comparison 
tool is run that produces an engineering change order (ECO) file.  You 
specify if you wanted to do forward (schematic->layout) or backward 
(layout->schematic) annotation.  The ASCII .eco file, which btw has a 
documented format, is then loaded by either the schematic editor or 
layout editor to apply the changes.

Quite a few years ago, I wrote pads_backannotate which takes a pads 
generated .eco file and applies it to gschem schematics.  That lets you 
use gschem for schematics and pads for layout with forward and backward 
annotation working.  I didn't implement all features of the backward 
annotation.  Renumbers work, but for some features, you'll just get a 
message saying "you need to do _x_ to your schematics by hand".  This is 
fully documented somewhere on the geda wiki.

The renumbering request came up from time to time for pcb so I added the 
Renumber() action.  The file it produces is somewhat similar in spirit 
to a pads .eco file in that it contains information about changes which 
need to be applied.  Ultimately I think having a netlist compare tool 
capable of producing a more full featured changes file would be really 
useful.  Also I think it would be good to teach libgeda how to read one 
of these change files directly and let pcb_backannotate fade away or 
perhaps use libgeda for accessing the schematic database.

So to answer your question about using the same backannotation mechanism 
as pcb, yes, absolutely.  It should be quite easy to modify the 
pcb_backannotate or pads_backannotate script to parse any other format 
of refdes crossreference file.

Hope this helps.

-Dan



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