Commit Graph

22 Commits

Author SHA1 Message Date
Tim Edwards c776c82445 Fixed an error in the DRC rule optimization ("||" used instead of
"|"), pointed out by Jim Everitt.  The error is pretty major, but
because the section of code it affects is just eliminating
unnecessary DRC rules, I believe that the only effect is that the
DRC ruleset ends up using more memory than it needs to.  But, good
to have fixed.
2021-08-01 12:04:13 -04:00
Tim Edwards 0503ce0ebf Corrected the "surround_ok" spacing rule, which did not prevent
the layers2->layers1 swapped case from being implemented;  the
surround_ok rule type is by definition asymmetric and the two
layer sets cannot just be swapped.
2021-06-04 12:26:11 -04:00
Tim Edwards aa88c69636 Updated from pull request #49 (required a manual merge due to
change in DRC flags type).
2021-02-17 20:53:17 -05:00
Tim Edwards e53a23de59 Added an "off-grid geometry" check, in two versions. The simple
one is an "off_grid" DRC type, which can be used to check geometry
that is below the manufacturing grid.  Normally magic prevents the
grid from being subdivided below the manufacturing grid, but this
limit can be removed and replaced by DRC checks to check for such
errors in a GDS file of unknown origin.  The second version looks
for interactions between subcells that end up with intersections
of non-manhattan geometry landing on points that are not on the
database internal grid.  Such errors cannot be seen by magic's DRC
engine by definition, and so must be detected while flattening
geometry for the DRC checks.
2021-02-04 17:35:43 -05:00
Tim Edwards 2a4baa82c3 Substantially overhauled the way that the DRC checker finds and
processes "interaction areas".  This should eliminate weirdnesses
where errors will fail to show up in a subcell that does not
interact with paint or other subcells in the top level edit cell.
These errors cannot be reported directly in the top level cell,
but a new error message has been created to direct the user to
check the subcell for errors.  Also:  Modified the toolkit procedures
to force DRC to be run on newly created or modified parameterized
cell layouts.  There is some oddity about the process that causes
DRC errors to be delayed unless a print statement is put before the
DRC check;  I would like to investigate this further.
2020-10-15 17:31:20 -04:00
Tim Edwards 5cb645e2d5 Fixed a missing requirement of a reverse direction check on spacing
rules with "surround_ok" on different planes.
2020-10-15 12:18:14 -04:00
fabian-l-c a263a5a5a5
Update directed case for drcSurround in DRCtech.c
Before this modification "directed" surround rule only worked for layers1 and layers2 belonging to the same plane.
After this modification the "directed" rule works also for different planes, even if layer1 is a contact type.
2020-06-09 16:11:22 -03:00
Tim Edwards 2af38a4191 Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
Tim Edwards 79ada35815 Merge branch 'master' into bplane
Conflicts:
	VERSION
	extract/ExtMain.c
	lef/lefWrite.c

Pulled master branch changes to lefWrite into the bplane branch.
2020-03-25 11:23:16 -04:00
Tim Edwards 6bae7c25c4 Enhanced the "lef write -hide" command option to check for metal
wide spacing rules; should result in LEF views that can import
back into magic without DRC errors.
2020-03-25 09:29:16 -04:00
Tim Edwards 007806521c Updated the "lef write -hide" to understand and use widespacing rules
(may still need additional enhancements, as it does not specifically
look for layer-to-obstruction rules).
2020-03-25 09:25:32 -04:00
Tim Edwards 1283317084 Corrected the improper use of the variable DRCErrorTable twice,
which results in conflicting hash tables and a crash, if a DRC
section is reloaded when doing an error count.
2020-03-06 13:46:40 -05:00
Tim Edwards 7413d89da1 Corrected the "lef writeall" command to add the "-hide" option, as
is available for "lef write".  This was inadvertently omitted.
2020-03-05 13:14:47 -05:00
Tim Edwards 2beb5ee0e9 Modified the handling of "why" strings in the DRC mechanism, so that
DRC records contain an index into a string array instead of containing
a copy of a string.  This is preliminary to changing the way the DRC
error plane is painted, so that the types painted will mark the error
type.  This will (1) allow "drc why" to simply scan the DRC error
plane rather than running the DRC engine, (2) allow DRC errors to be
counted by area rather than by tile, and (3) let the DRC count be the
same whether done by "drc listall why" or "drc count".
2020-02-25 13:57:41 -05:00
Tim Edwards 091d7ba2ae Corrected drcAssign for use with CIF drc rules, where the check for
plane is not relevant and can generate false-positive error messages
(although no actual errors occur).
2019-09-19 14:33:30 -04:00
Tim Edwards 547f0448d9 Cleanup of a number of uninitialized variable issues flagged by
the compiler.  Some are obscure functions (plot verstatec hasn't
been used in years) but others (like SPICE distributed junctions)
are potentially significant sources of unexpected crashes on
systems that don't zero uninitialized memory.
2019-06-07 14:13:50 -04:00
Tim Edwards ded7dcb93f Corrected an error that causes run-time issues with compiling the
non-Tcl/Tk version, as the routine DRCBreak() is called but never
defined.
2018-12-28 10:29:18 -05:00
Tim Edwards 005a4880a3 Modifed the DRC section of the techfile to add two additional
behaviors:  (1) An additional syntax for "widespacing" that allows
both the triggering metal's width AND run-length, which is typical
of rules in 65nm-and-below processes;  and (2) a new "option"
statement for the DRC section, with (for now) one possible flag
"wide-width-noninclusive", indicating that the metal width given
for "widespacing" rules means that a violation is only triggered
for material with a width greater than the given rule width (as
opposed to the default interpretation of a width greater than
or equal to the given rule width).
2018-09-19 17:04:13 -04:00
Tim Edwards 42ec70d4dc Re-implemented plow setup for the first time since about 2006,
enabling the "plow" command.  At this time, however, not all
rules are being implemented correctly given the numerous changes
to the DRC handling since the last time "plow" was working.  Fixes
are ongoing.
2018-04-01 14:40:10 -04:00
Tim Edwards 6492061480 Corrected two errors in the DRC checking, one of which passed a
much larger area than necessary to the interaction check, and
the other which failed to scale the tech halo distance down
after scaling all the rules.  Both of these led to huge areas
of a layout being unnecessarily checked when even a tiny part
of the layout was modified.  Corrected behavior matches
expectations for interactive DRC response.
2018-03-15 10:51:07 -04:00
Tim Edwards 088fc759c4 Set of changes updating version 8.2 to the level of 8.1, since 8.2
development had been halted since it was first created back in April.
Version 8.2 is now the official development version, with the first
development push to create a Cairo graphics interface.
2017-08-01 22:14:42 -04:00
Tim Edwards 231a299b16 Initial commit at Tue Apr 25 08:41:48 EDT 2017 by tim on stravinsky 2017-04-25 08:41:48 -04:00