[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