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 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 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/ 2.2 Using Binary coded-decimal, https://stackoverflow.com/questions/2624973/why-doesnt-my-processor-have-built-in-bigint-support 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]> 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]> 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]> 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]> >>> 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 >>>> >>>> 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]. >>>> 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]. >>> 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]. >> 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]. > 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]. To view this discussion visit https://groups.google.com/a/kicad.org/d/msgid/devlist/CAE0Ak8awnYeEqbpz0SwNc7wAf_hmS1ybhDWNbRuyr7efEPUf-w%40mail.gmail.com.
