[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: pcb crooked traces
Replying personally, because this is getting nowhere:
Rick Collins wrote:
I don't think you are trying very hard. If the value input by the
user in metric is rounded off to a value that is not exact, there is a
loss of precision that can not be recovered no matter how "well
programmed" the application is. I gave an example of when this would
be significant and you seem to think that the programmer can make
special cases to work around this. I'll lay it out again working in
the abstract to show the possibilities. If you don't like the
abstract, just adjust for a 0.8 mm pin spacing and you will see a real
example that is close to the limit.
The user has a connector with metric spaced pins. When the metric
value is input, the value is rounded off to the nearest 0.01 mil
giving an error of 0.005 mil. At this point there is no way to
recover that error, it is recorded in the system that way and the
precision is lost. This value is used to calculate the position of
all the pins in the connector resulting in an accumulated error of
0.005 * N.
Wrong: the input data of a footprint is listed pin by pin.
If a generator tool, that can handle metric and say uses double numbers,
is used to create the footprint it will:
a) compute the true positions of all pins to double accuracy
b) then convert this value to some fractional mil-number, pin by pin
c) round that position to 1/100th mil to make pcb happy, pin by pin
The footprint file format as I said lists all the pin/pads and gets read
sequentially
by pcb - pcb doesn't have the slightest idea, what spacing the pins are
- they could
be at random positions.
Double is probably more than sufficient to get 100 increments of 0.8mm right
to 1/100-mil, but if it weren't, use a Sparc with Quad-precision floats
to generate
the footprint. Say the true increment in 1/100th mil were
548.666666666-periodic.
Then a good generator will produce the following differences in the
footprint file:
549, 549, 548, 549, 549, 548, 549,549, 548,...
If pcb itself is used as a generator by e.g. using a 0.1mm pitch grid
and manually
painting the pins, it's up to the implementation, to round values of a
foreign grid
to the correct internal number - I can't answer this for pcb.
In principle it is possible, to precompute a sequence for every metric
pitch offered,
that will convert the N'th construction grid position to the correct
1/100th mil.
What pcb really does in this respect you must ask the developers. All I
want to say
is, that a 100-pin footprint not necessarily has anything to do with
adding up
a single-pitch roundoff error 100x and that pcb by it's structure does
not have
the notion of arrays and multipliers in a geometrical sense. It treats
all pin
positions as "where they are according to footprint" one by one.
If you found this useful, you may post it ;-)
_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user