Hi Mark and Seth,
Thanks for your reply.
Yes, you're right, it will lose some precision when using double.
Just curious, I did some search online.
*1. I found that the key players in the PCB market still have limits.*
OrCAD X: 200 in. x 200 in = 5 meter * 5 meter;
https://www.cadence.com/en_US/home/tools/pcb-design-and-analysis/
orcad.html#pcb-layout <https://www.cadence.com/en_US/home/tools/pcb-
design-and-analysis/orcad.html#pcb-layout>
Altium Designer: 200 in. x 200 in = 2.5 meter * 2.5 meter
https://www.altium.com/documentation/knowledge-base/altium-designer/
indicate-visual-cues-at-the-coordinate-limit-of-pcb-design-space-beyond-
which-objects-should-not-be-placed <https://www.altium.com/
documentation/knowledge-base/altium-designer/indicate-visual-cues-at-
the-coordinate-limit-of-pcb-design-space-beyond-which-objects-should-
not-be-placed>
Allegro: I can't find any detail information, but I tried the software,
it seems still have limit. *Anyone know the board size limit for Allegro?*
*
*
*2. If we really want to solve this problem, there are options below.*
2.1 Using software integer library, such as GMP;
We can give an option to the user, let the user choose to enable
it or not.
If enabled, Kicad can support a bigger board size, but software
will slow;
If enabled, Kicad runs as usual.
**https://gmplib.org/ <https://gmplib.org/>
2.2 Using Binary coded-decimal,
https://stackoverflow.com/questions/2624973/why-doesnt-my-processor-
have-built-in-bigint-support <https://stackoverflow.com/
questions/2624973/why-doesnt-my-processor-have-built-in-bigint-support>
https://en.wikipedia.org/wiki/Binary-coded_decimal <https://
en.wikipedia.org/wiki/Binary-coded_decimal>
2.3 *Give the control of precision and board size to the user.*
If a user wants to have a smaller board size, he/she will have
more precision location and something else;
If a user wants to have a bigger board size, he/she will have
less precision location and something else;
*@Mark what's your opinion? *
*
*
*@Seth,
*
>Addressing this means reworking our internal coordinate system
Could you please kindly give me some location for those codes? so I can
dig into it.
*
*
Sincerely
Liang
On Tue, 26 Nov 2024 at 02:02, Mark Roszko <[email protected]
<mailto:[email protected]>> wrote:
Floats are not accurate beyond 6-7 digits and worse, floating point
behavior is actually not fully well defined. You can actually get
different quirks depending on platform, compiler and arch. Though
generally the risk isn't in the arithmetic but supporting functions
that are part of libc.
>And why did Kicad choose integer as internal measurement resolution?
Using integers is standard programming behavior for applications
that want well defined and bounded mathematical behavior.
When you do floating point math, even if we ignore the inaccurate
power part of the number, that error still sits in the number. When
you carry out sufficient and numerous operations using numbers that
carry these not used digits, they can actually creep in and start
affecting the digits you do care about and cause errors.
>Last, so that means there is no way to handle this issue?
We have come to the conclusion that if somebody needs PCB designs
larger than 4 meters, which is already an ridiculous size. They need
to discuss with us the use case which is already going to be
ridiculously niche for that one person because there is no standard
PCB manufacturing equipment for a board of that size.
On Mon, Nov 25, 2024, 8:01 AM Liang Jia <[email protected]
<mailto:[email protected]>> wrote:
Hi Mark,
Thanks for your email.
Could you please explain more about the relation between "Change
the measurement store from 32-bit to *64-bit*" and "128-bit
integer math support in processors"?
And why did Kicad choose integer as internal measurement resolution?
>mm is not adequate to express the resolution of position data
required for a board design.
How about this? use mm for internal measurement resolution, but
use nanometer or *double(instead of integer)* for board design.
Last, so that means there is no way to handle this issue?
On Mon, 25 Nov 2024 at 19:21, Mark Roszko <[email protected]
<mailto:[email protected]>> wrote:
>This means it is possible to create boards up to
approximately 4 meters by 4 meters
Yes, KiCad is limited to 4x4 meter boards currently.
> Change the measurement store from 32-bit to 64-bit, so
Kicad can support a larger board.
This is not an easy task in the slightest. Specifically
because we can't get 128-bit integer math support in
processors, and many compilers do not support 128-bit
integers. I think gcc has some experimental support.
> Change the resolution of all objects to mm
mm is not adequate to express the resolution of position
data required for a board design.
Basically the bug here is we simply do not tell the users
the DXF is beyond our board support limit.
On Mon, Nov 25, 2024 at 5:07 AM Liang Jia
<[email protected]
<mailto:[email protected]>> wrote:
Hi All,
I am writing to inquire about the challenges we are
facing when importing DXF files which contain large
numbers into our system.
I have noticed that when the number exceeds a certain
threshold(such as 4437 mm), the import process results
in an int overflow error.
I did the search below:
1. Found that there was a ticket to track it, but it
seems *it still opens*.
https://gitlab.com/kicad/code/kicad/-/issues/12392
<https://gitlab.com/kicad/code/kicad/-/issues/12392>
2. From the Kicad document:
The internal measurement resolution of all objects in
KiCad is *1 nanometer*, and measurements are stored as
*32-bit integers*. This means it is possible to create
boards up to approximately 4 meters by 4 meters
I think the *root cause* is here: Kicad tried to convert
the DXF number into nanometer, but those numbers
exceeded the limit of integer.
Questions:
1. Is there any workaround for this case, and let Kicad
import those files successfully?
2. If I want to fix ticket 12392, what should I do?
Change the measurement store from 32-bit to 64-bit,
so Kicad can support a larger board.
Change the resolution of all objects to mm
Looking forward to any comment or workaround.
Sincerely
Liang
--
You received this message because you are subscribed to
the Google Groups "KiCad Developers" group.
To unsubscribe from this group and stop receiving emails
from it, send an email to [email protected]
<mailto:[email protected]>.
To view this discussion visit https://groups.google.com/
a/kicad.org/d/msgid/devlist/CAE0Ak8bd%3DgDwW%3DDWVXH-
TKj%3Dr4nsgW370aNqB6PbP7T8b2QU6A%40mail.gmail.com
<https://groups.google.com/a/kicad.org/d/msgid/devlist/
CAE0Ak8bd%3DgDwW%3DDWVXH-
TKj%3Dr4nsgW370aNqB6PbP7T8b2QU6A%40mail.gmail.com?
utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the
Google Groups "KiCad Developers" group.
To unsubscribe from this group and stop receiving emails
from it, send an email to [email protected]
<mailto:[email protected]>.
To view this discussion visit https://groups.google.com/a/
kicad.org/d/msgid/devlist/
CAJjB1qKoN689BoyB1uWpWYmDCpbaCRKCyW2qmnBOoG5Au_Nnfg%40mail.gmail.com
<https://groups.google.com/a/kicad.org/d/msgid/devlist/CAJjB1qKoN689BoyB1uWpWYmDCpbaCRKCyW2qmnBOoG5Au_Nnfg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the
Google Groups "KiCad Developers" group.
To unsubscribe from this group and stop receiving emails from
it, send an email to [email protected]
<mailto:[email protected]>.
To view this discussion visit https://groups.google.com/a/
kicad.org/d/msgid/devlist/
CAE0Ak8bmAyB7ciCe6nrps8gw0meXgaj25r5Zq-
o2Z9x_-8CFDA%40mail.gmail.com <https://groups.google.com/a/
kicad.org/d/msgid/devlist/
CAE0Ak8bmAyB7ciCe6nrps8gw0meXgaj25r5Zq-
o2Z9x_-8CFDA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google
Groups "KiCad Developers" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected]
<mailto:[email protected]>.
To view this discussion visit https://groups.google.com/a/kicad.org/
d/msgid/devlist/
CAJjB1qLDDND2JZpaBCOHZpoz9HvsVF%2Brn%3D5nSGAQVDzyrFFRBA%40mail.gmail.com
<https://groups.google.com/a/kicad.org/d/msgid/devlist/CAJjB1qLDDND2JZpaBCOHZpoz9HvsVF%2Brn%3D5nSGAQVDzyrFFRBA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google
Groups "KiCad Developers" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To view this discussion visit https://groups.google.com/a/kicad.org/d/
msgid/devlist/CAE0Ak8awnYeEqbpz0SwNc7wAf_hmS1ybhDWNbRuyr7efEPUf-
w%40mail.gmail.com <https://groups.google.com/a/kicad.org/d/msgid/
devlist/CAE0Ak8awnYeEqbpz0SwNc7wAf_hmS1ybhDWNbRuyr7efEPUf-
w%40mail.gmail.com?utm_medium=email&utm_source=footer>.