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).
This commit is contained in:
parent
0c24c33451
commit
091d7ba2ae
23
drc/DRCcif.c
23
drc/DRCcif.c
|
|
@ -200,7 +200,7 @@ drcCifWidth(argc, argv)
|
|||
|
||||
dpnext = drcCifRules[thislayer][DRC_CIF_SPACE];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie)));
|
||||
drcAssign(dpnew, centidistance, dpnext, &CIFSolidBits,
|
||||
drcCifAssign(dpnew, centidistance, dpnext, &CIFSolidBits,
|
||||
&CIFSolidBits, why, centidistance,
|
||||
DRC_FORWARD, thislayer, 0);
|
||||
drcCifRules[thislayer][DRC_CIF_SPACE] = dpnew;
|
||||
|
|
@ -292,7 +292,7 @@ drcCifSpacing(argc, argv)
|
|||
centidistance *= drcCifStyle->cs_expander; // BSI
|
||||
dpnext = drcCifRules[layer[0]][DRC_CIF_SOLID];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) sizeof (DRCCookie));
|
||||
drcAssign(dpnew, centidistance, dpnext, &DBSpaceBits,
|
||||
drcCifAssign(dpnew, centidistance, dpnext, &DBSpaceBits,
|
||||
&cmask, why, centidistance, DRC_FORWARD, layer[1], 0);
|
||||
drcCifRules[layer[0]][DRC_CIF_SOLID] = dpnew;
|
||||
if (needReverse) dpnew->drcc_flags |= DRC_BOTHCORNERS;
|
||||
|
|
@ -300,7 +300,7 @@ drcCifSpacing(argc, argv)
|
|||
// Add rule in reverse direction
|
||||
dpnext = drcCifRules[layer[0]][DRC_CIF_SPACE];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) sizeof (DRCCookie));
|
||||
drcAssign(dpnew, centidistance, dpnext, &DBSpaceBits,
|
||||
drcCifAssign(dpnew, centidistance, dpnext, &DBSpaceBits,
|
||||
&cmask, why, centidistance, DRC_REVERSE, layer[1], 0);
|
||||
drcCifRules[layer[0]][DRC_CIF_SPACE] = dpnew;
|
||||
|
||||
|
|
@ -312,14 +312,14 @@ drcCifSpacing(argc, argv)
|
|||
dpnew->drcc_flags |= DRC_BOTHCORNERS;
|
||||
dpnext = drcCifRules[layer[1]][DRC_CIF_SOLID];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie)));
|
||||
drcAssign(dpnew, centidistance, dpnext, &DBSpaceBits, &cmask,
|
||||
drcCifAssign(dpnew, centidistance, dpnext, &DBSpaceBits, &cmask,
|
||||
why, centidistance, DRC_FORWARD|DRC_BOTHCORNERS, layer[0], 0);
|
||||
drcCifRules[layer[1]][DRC_CIF_SOLID] = dpnew;
|
||||
|
||||
// Add rule in reverse direction
|
||||
dpnext = drcCifRules[layer[1]][DRC_CIF_SPACE];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) sizeof (DRCCookie));
|
||||
drcAssign(dpnew, centidistance, dpnext, &DBSpaceBits, &cmask,
|
||||
drcCifAssign(dpnew, centidistance, dpnext, &DBSpaceBits, &cmask,
|
||||
why, centidistance, DRC_REVERSE|DRC_BOTHCORNERS, layer[0], 0);
|
||||
drcCifRules[layer[1]][DRC_CIF_SPACE] = dpnew;
|
||||
|
||||
|
|
@ -327,14 +327,14 @@ drcCifSpacing(argc, argv)
|
|||
{
|
||||
dpnext = drcCifRules[layer[1]][DRC_CIF_SPACE];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie)));
|
||||
drcAssign(dpnew, centidistance, dpnext, &DBSpaceBits,
|
||||
drcCifAssign(dpnew, centidistance, dpnext, &DBSpaceBits,
|
||||
&cmask, why, centidistance, DRC_REVERSE | DRC_BOTHCORNERS,
|
||||
layer[0], 0);
|
||||
drcCifRules[layer[1]][DRC_CIF_SPACE] = dpnew;
|
||||
|
||||
dpnext = drcCifRules[layer[0]][DRC_CIF_SPACE];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie)));
|
||||
drcAssign(dpnew, centidistance, dpnext, &DBSpaceBits, &cmask,
|
||||
drcCifAssign(dpnew, centidistance, dpnext, &DBSpaceBits, &cmask,
|
||||
why, centidistance, DRC_REVERSE | DRC_BOTHCORNERS,
|
||||
layer[1], 0);
|
||||
drcCifRules[layer[0]][DRC_CIF_SPACE] = dpnew;
|
||||
|
|
@ -345,13 +345,13 @@ drcCifSpacing(argc, argv)
|
|||
{
|
||||
dpnext = drcCifRules[layer[1]][DRC_CIF_SPACE];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie)));
|
||||
drcAssign(dpnew, scalefactor, dpnext, &DBSpaceBits, &DBZeroTypeBits,
|
||||
drcCifAssign(dpnew, scalefactor, dpnext, &DBSpaceBits, &DBZeroTypeBits,
|
||||
why, scalefactor, DRC_FORWARD, layer[0], 0);
|
||||
drcCifRules[layer[1]][DRC_CIF_SPACE] = dpnew;
|
||||
|
||||
dpnext = drcCifRules[layer[0]][DRC_CIF_SPACE];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie)));
|
||||
drcAssign(dpnew, scalefactor, dpnext, &DBSpaceBits, &DBZeroTypeBits,
|
||||
drcCifAssign(dpnew, scalefactor, dpnext, &DBSpaceBits, &DBZeroTypeBits,
|
||||
why, scalefactor, DRC_FORWARD, layer[1], 0);
|
||||
drcCifRules[layer[0]][DRC_CIF_SPACE] = dpnew;
|
||||
}
|
||||
|
|
@ -1066,7 +1066,7 @@ drcCifArea(argc, argv)
|
|||
centiarea *= (drcCifStyle->cs_expander * drcCifStyle->cs_expander);
|
||||
dpnext = drcCifRules[thislayer][DRC_CIF_SPACE];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie)));
|
||||
drcAssign(dpnew, centihorizon, dpnext, &CIFSolidBits, &CIFSolidBits,
|
||||
drcCifAssign(dpnew, centihorizon, dpnext, &CIFSolidBits, &CIFSolidBits,
|
||||
why, centiarea, DRC_AREA | DRC_FORWARD, thislayer, 0);
|
||||
drcCifRules[thislayer][DRC_CIF_SPACE] = dpnew;
|
||||
|
||||
|
|
@ -1136,11 +1136,10 @@ drcCifMaxwidth(argc, argv)
|
|||
centidistance *= drcCifStyle->cs_expander; // BSI
|
||||
dpnext = drcCifRules[thislayer][DRC_CIF_SPACE];
|
||||
dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie)));
|
||||
drcAssign(dpnew, centidistance, dpnext, &CIFSolidBits, &CIFSolidBits,
|
||||
drcCifAssign(dpnew, centidistance, dpnext, &CIFSolidBits, &CIFSolidBits,
|
||||
why, centidistance, DRC_MAXWIDTH | bend, thislayer, 0);
|
||||
drcCifRules[thislayer][DRC_CIF_SPACE] = dpnew;
|
||||
|
||||
|
||||
return ((centidistance+scalefactor-1)/scalefactor);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -872,17 +872,13 @@ DRCTechLine(sectionName, argc, argv)
|
|||
}
|
||||
|
||||
void
|
||||
drcAssign(cookie, dist, next, mask, corner, why, cdist, flags, planeto, planefrom)
|
||||
drcCifAssign(cookie, dist, next, mask, corner, why, cdist, flags, planeto, planefrom)
|
||||
DRCCookie *cookie, *next;
|
||||
int dist, cdist;
|
||||
TileTypeBitMask *mask, *corner;
|
||||
char *why;
|
||||
int flags, planeto, planefrom;
|
||||
{
|
||||
/* Diagnostic */
|
||||
if (planeto >= DBNumPlanes) {
|
||||
TxError("Bad plane in DRC assign!\n");
|
||||
}
|
||||
(cookie)->drcc_dist = dist;
|
||||
(cookie)->drcc_next = next;
|
||||
(cookie)->drcc_mask = *mask;
|
||||
|
|
@ -896,6 +892,27 @@ drcAssign(cookie, dist, next, mask, corner, why, cdist, flags, planeto, planefro
|
|||
(cookie)->drcc_cmod = 0;
|
||||
}
|
||||
|
||||
// This is like drcCifAssign, but checks for bad plane numbers in planeto and
|
||||
// planefrom
|
||||
|
||||
void
|
||||
drcAssign(cookie, dist, next, mask, corner, why, cdist, flags, planeto, planefrom)
|
||||
DRCCookie *cookie, *next;
|
||||
int dist, cdist;
|
||||
TileTypeBitMask *mask, *corner;
|
||||
char *why;
|
||||
int flags, planeto, planefrom;
|
||||
{
|
||||
/* Diagnostic */
|
||||
if (planeto >= DBNumPlanes)
|
||||
TechError("Bad plane in DRC assignment.\n");
|
||||
if (planefrom >= DBNumPlanes)
|
||||
TechError("Bad edge plane in DRC assignment.\n");
|
||||
|
||||
drcCifAssign(cookie, dist, next, mask, corner, why, cdist, flags, planeto,
|
||||
planefrom);
|
||||
}
|
||||
|
||||
/*
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue