Corrected what looks like a very long-standing error in the DRC
engine. Rule checks of triggering rules are not subject to clipping to the clip area. However, they *must* be clipped to the (larger) overall DRC check area, because no layout is valid outside of that area. This clipping was missed, allowing triggering rules to trigger on areas outside the valid layout, resulting in mysterious false-positive DRC errors. This has been fixed.
This commit is contained in:
parent
02e16b8bce
commit
8e25303db4
|
|
@ -148,11 +148,14 @@ areaCheck(tile, arg)
|
|||
TiToRect(tile, &rect);
|
||||
|
||||
/* Only consider the portion of the suspicious tile that overlaps
|
||||
* the clip area for errors, unless this is a trigger rule.
|
||||
* the clip area for errors, unless this is a trigger rule, in
|
||||
* which case it should be restricted only to the full check area.
|
||||
*/
|
||||
|
||||
if (!(arg->dCD_cptr->drcc_flags & DRC_TRIGGER))
|
||||
GeoClip(&rect, arg->dCD_clip);
|
||||
else
|
||||
GeoClip(&rect, arg->dCD_rect);
|
||||
|
||||
GeoClip(&rect, arg->dCD_constraint);
|
||||
if ((rect.r_xbot >= rect.r_xtop) || (rect.r_ybot >= rect.r_ytop))
|
||||
|
|
@ -301,6 +304,8 @@ areaNMCheck(tile, arg)
|
|||
|
||||
if (!(arg->dCD_cptr->drcc_flags & DRC_TRIGGER))
|
||||
GeoClip(&rect, arg->dCD_clip);
|
||||
else
|
||||
GeoClip(&rect, arg->dCD_rect);
|
||||
|
||||
GeoClip(&rect, arg->dCD_constraint);
|
||||
if ((rect.r_xbot >= rect.r_xtop) || (rect.r_ybot >= rect.r_ytop))
|
||||
|
|
|
|||
|
|
@ -722,6 +722,7 @@ infodir
|
|||
docdir
|
||||
oldincludedir
|
||||
includedir
|
||||
runstatedir
|
||||
localstatedir
|
||||
sharedstatedir
|
||||
sysconfdir
|
||||
|
|
@ -827,6 +828,7 @@ datadir='${datarootdir}'
|
|||
sysconfdir='${prefix}/etc'
|
||||
sharedstatedir='${prefix}/com'
|
||||
localstatedir='${prefix}/var'
|
||||
runstatedir='${localstatedir}/run'
|
||||
includedir='${prefix}/include'
|
||||
oldincludedir='/usr/include'
|
||||
docdir='${datarootdir}/doc/${PACKAGE}'
|
||||
|
|
@ -1079,6 +1081,15 @@ do
|
|||
| -silent | --silent | --silen | --sile | --sil)
|
||||
silent=yes ;;
|
||||
|
||||
-runstatedir | --runstatedir | --runstatedi | --runstated \
|
||||
| --runstate | --runstat | --runsta | --runst | --runs \
|
||||
| --run | --ru | --r)
|
||||
ac_prev=runstatedir ;;
|
||||
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
|
||||
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
|
||||
| --run=* | --ru=* | --r=*)
|
||||
runstatedir=$ac_optarg ;;
|
||||
|
||||
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
||||
ac_prev=sbindir ;;
|
||||
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
||||
|
|
@ -1216,7 +1227,7 @@ fi
|
|||
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
|
||||
datadir sysconfdir sharedstatedir localstatedir includedir \
|
||||
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
|
||||
libdir localedir mandir
|
||||
libdir localedir mandir runstatedir
|
||||
do
|
||||
eval ac_val=\$$ac_var
|
||||
# Remove trailing slashes.
|
||||
|
|
@ -1369,6 +1380,7 @@ Fine tuning of the installation directories:
|
|||
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
||||
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
||||
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
||||
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
|
||||
--libdir=DIR object code libraries [EPREFIX/lib]
|
||||
--includedir=DIR C header files [PREFIX/include]
|
||||
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
||||
|
|
|
|||
Loading…
Reference in New Issue