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

Re: gEDA-user: pcb crooked traces



At 02:28 PM 10/8/2010, you wrote:
Andrew Poelstra:
> On Fri, Oct 08, 2010 at 11:46:39AM +0200, Armin Faltl wrote:
...
> > The only practical consideration I see is, that the internal unit of PCB
> > allows handling with integer-arithmetic (makes comparisons a lot
> > faster and safer than floating point).
...

That might be true, but if you are talking about an internal
representation with nm resolution, then you have the same problem as
for the floating point, there are too many separate values that
basically is the same value and you can't tell them apart looking at a
board.

...
> I don't think we could reasonably use floating-point. There is no
> room for rounding error when designing tight areas of a PCB.

That is nonsense, it is all about tolerances.

1, going from physical components to footprint file is basically a
   big averageing operation

2, going from pcb-file to physical pcb is a big rounding operation
   with some added noise, or do you believe you can make pcb's with
   nm's precision?

Yes, it is about tolerance... and error. How much error will be introduced into a design if the system rounds all metric measurements to 0.01 mils? How much tolerance is acceptable? When you can answer these two questions for all designs and all users you can't expect anyone to believe this is "nonsense"! If you have a connector, for example, with 100 pins spaced on metric centers, the accumulated error can approach a half mil or 0.0127 mm. That may be a significant fraction of the pin spacing and likely not a good idea. Larger connectors would have more accumulated error.

I think your response above shows you don't actually understand the issue. Of course the issue is one that would not be of concern to most users, most of the time for most designs, by far. But it started with an issue of traces that were showing up as multiple jagged traces where a straight one was expected because... a metric grid was selected and the round off error was making grid points off center.

There are other possible issues. When a metric input value is rounded off and then replicated, as someone said, for large connectors or mechanical attachments, the accumulated error can become significant and parts not fit.

...
> Suppose we stored a scaling factor in the .pcb files, of x10, x100,
> x254, etc? Then we could use nanometer precision by default and go
> bigger if we need a bigger board.

A, What is an integer plus a scaling factor?
   -- it is a floating point value.

No, it is a block floating point value. In this case the scale factor is not applied to the entire design until you display values or produce output. The internal calcs are still all integer.


B, If you implement it as an integer (value) and an integer (scale),
 you could just as well do the scaling thing in some postprocessing
 step, outside of the pcb program. That is basically how gschem handles
 dimensions, it doesn't care.

Or you can do it inside of PCB so that the user doesn't have to remember that all the displayed units are off by a factor of 10 or 2 or 5.


C, As a side note, if you use double's for the internal representaion,
 then you don't loose precision compared to having an int32_t. You can
 convert an int32_t to an double and back without loosing precision.

The issue is not using singles or doubles. The issue is whether the base unit is metric (which can perfectly represent inch units of interest) or whether the base unit are inch based which can't represent inch units perfectly.

I suppose they could always change the base units to some small fraction of a mil so that even the accumulated error would always be negligible. But why bother changing and only getting an approximation if you can get it perfect?

Rick


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