| Disclaimer: I have zero silicon design experience. However, I have designed computer game engines that use 32-bit floats throughout and encountered rounding errors in practice. I’ve found that there’s always a solution that avoids the need to go past 64 bits, and even that is a last resort. So for example the circle could be approximated with a polygon. Or fixed-point arithmetic can be used. Or simply use a quad-tree or related space partitioning algorithms to check for intersections. There are literally thousands of algorithms that sidestep these issues and are used extensively in computer games, typically at 32-bit precision exclusively. For example “back in the day” you would often see shimmering due to “z-fighting”. You would also often see white pixels due to “cracks” between adjacent polygons. All of these are largely gone now. The problems have been solved without the enormous performance hit of 64-bit doubles, let alone 128! Meanwhile contemporary CAD programs would insist on using 64-bit doubles, even through the OpenGL pipeline out to the screen. But if you sit down for a second and just divide your screen (or wafer mask) by the range of your chosen numbers you’ll instantly see that you have thousands of steps per pixel (or atom!) to work with. Any visible noise is your fault for choosing the wrong algorithm, not the fault of the hardware for not providing enough bits. |
With that in mind, does it make more sense to come up with new, experimental, untested algorithms... or just use wider numbers and slowly iterate on well known algorithms? Especially with LVS/DRC you really want the dumbest, easiest to reason about thing that is most likely to catch design issues no matter what. Even if it's excruciatingly slow, it's your last line of defense against writing off a set of masks as a hundreds of millions of dollars loss.
EDA / silicon CAD is a totally different world of design requirements compared to video games or even MCAD software.
EDIT: and just for context, here's a DRC set for the (very much not modern) SKY130 process: https://github.com/RTimothyEdwards/open_pdks/blob/master/sky...