Hi Seth,

Thanks for your quick response.
I will check it.

Have a nice day.

Sincerely
Liang

On Tue, 26 Nov 2024 at 11:48, 'Seth Hillbrand' via KiCad Developers <
[email protected]> wrote:

> BCD is not relevant to integer values where all bits are used.
>
> GMP is slow.  Very very slow.
>
> Making this configurable means adding an additional, little used code
> path.  One will end up being a second class citizen.
>
> Similarly for allowing configurable minimum units.
>
> You can look at vector2.h for many of the places but not all.
>
> Seth
>
>
>
>
> On Mon, Nov 25, 2024, 7:25 PM Liang Jia <[email protected]> wrote:
>
>> 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
>> <https://groups.google.com/a/kicad.org/d/msgid/devlist/CAE0Ak8awnYeEqbpz0SwNc7wAf_hmS1ybhDWNbRuyr7efEPUf-w%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/CAFdeG-rsD3kZTHX8w9xpxr-UXKj_rhRS%2B6t8UwfJcrQSDXGquQ%40mail.gmail.com
> <https://groups.google.com/a/kicad.org/d/msgid/devlist/CAFdeG-rsD3kZTHX8w9xpxr-UXKj_rhRS%2B6t8UwfJcrQSDXGquQ%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/CAE0Ak8beBenyRKZm3ZenK2ixfWvZsDGe1D4iC2gJQ2%2B8oUHmbQ%40mail.gmail.com.

Reply via email to