mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-08-29 17:39:28 +02:00
routine, which in turn affects various DRC rules like maxrect, widespacing, and runlength spacing. drcTile() was computing the drcCanonicalMaxwidth() result for the tile and reusing it, failing to account for the fact that within the loop over DRCCookies, other rules might require calling drcCanonicalMaxwidth() on a neighboring tile, or on the same tile with a different width requirement. Implemented a cached version, in which three results are kept: One for neighboring tiles (which can never be reused on the same edge), one for the first required use of the routine for the tile, and one for any other use required for the tile. If there are one or two such rules for an edge, then the routine will work at maximum efficiency. If there are three rules, then one will always be a cache hit and reduce the total amount of computation, although it will still be doing a massive amount of redundant computation. If this seems to be something that occurs regularly, then it can be revisited. The existing implementation works fine for all the open PDKs. Some more advanced PDKs with a number of staged wide-spacing rules could have issues.
2 lines
8 B
Plaintext
2 lines
8 B
Plaintext
8.3.637
|