Corrected an extraction issue in which an error message about
"unexpected asymmetric device" is printed prematurely, as it is inside a loop checking over all device entries compatible with a device type. Also: Flagged an issue with the "label" keyword in the "cifinput" section of a tech file. The "label" keyword cannot be used in conjunction with boolean operators. It can only connect labels on a specific GDS type to one magic type. Unfortunately, because this was not flagged before as an error or warning, the incorrect usage has crept into a lot of tech files. This uncovers an underlying issue that labels must be allowed to automatically reconnect types, which is undermined by the "no-reconnect-labels" cifinput option. That issue will be addressed in an upcoming commit.
This commit is contained in:
parent
8798a3256c
commit
5b29870fce
|
|
@ -872,10 +872,20 @@ CIFReadTechLine(sectionName, argc, argv)
|
||||||
goto wrongNumArgs;
|
goto wrongNumArgs;
|
||||||
}
|
}
|
||||||
CIFParseReadLayers(argv[1], &mask, TRUE);
|
CIFParseReadLayers(argv[1], &mask, TRUE);
|
||||||
for (i=0; i<MAXCIFRLAYERS; i+=1)
|
for (i = 0; i < MAXCIFRLAYERS; i++)
|
||||||
{
|
{
|
||||||
if (TTMaskHasType(&mask,i))
|
if (TTMaskHasType(&mask, i))
|
||||||
{
|
{
|
||||||
|
/* Only one magic type can be assigned to a GDS layer, so
|
||||||
|
* multiple assignments should be flagged as errors.
|
||||||
|
*/
|
||||||
|
if (cifCurReadStyle->crs_labelLayer[i] != TT_SPACE)
|
||||||
|
TechError("Labels on layer \"%s\" attached to \"%s\" supersedes "
|
||||||
|
"prior attachment to \"%s\".\n",
|
||||||
|
cifReadLayers[i],
|
||||||
|
DBTypeLongNameTbl[cifCurReadLayer->crl_magicType],
|
||||||
|
DBTypeLongNameTbl[cifCurReadStyle->crs_labelLayer[i]]);
|
||||||
|
|
||||||
cifCurReadStyle->crs_labelLayer[i]
|
cifCurReadStyle->crs_labelLayer[i]
|
||||||
= cifCurReadLayer->crl_magicType;
|
= cifCurReadLayer->crl_magicType;
|
||||||
if (argc == 3)
|
if (argc == 3)
|
||||||
|
|
@ -899,8 +909,8 @@ CIFReadTechLine(sectionName, argc, argv)
|
||||||
if (argc != 2) goto wrongNumArgs;
|
if (argc != 2) goto wrongNumArgs;
|
||||||
CIFParseReadLayers(argv[1], &mask, TRUE);
|
CIFParseReadLayers(argv[1], &mask, TRUE);
|
||||||
/* trash the value in crs_labelLayer so that any labels on this
|
/* trash the value in crs_labelLayer so that any labels on this
|
||||||
layer get junked, also. dcs 4/11/90
|
* layer get junked, also. dcs 4/11/90
|
||||||
*/
|
*/
|
||||||
for (i=0; i < cifNReadLayers; i++)
|
for (i=0; i < cifNReadLayers; i++)
|
||||||
{
|
{
|
||||||
if (TTMaskHasType(&mask,i))
|
if (TTMaskHasType(&mask,i))
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/
|
||||||
* CmdAddPath --
|
* CmdAddPath --
|
||||||
*
|
*
|
||||||
* Implement the "addpath" command: append to the global cell search path.
|
* Implement the "addpath" command: append to the global cell search path.
|
||||||
* (Usage superceded by extended "path" command; retained for compatibility)
|
* (Usage superseded by extended "path" command; retained for compatibility)
|
||||||
*
|
*
|
||||||
* Usage:
|
* Usage:
|
||||||
* addpath path
|
* addpath path
|
||||||
|
|
|
||||||
|
|
@ -785,7 +785,7 @@ CmdMove(w, cmd)
|
||||||
* box exists.
|
* box exists.
|
||||||
* If no selection exists, but the box does, then move the box
|
* If no selection exists, but the box does, then move the box
|
||||||
* anyway (hace 10/8/97)
|
* anyway (hace 10/8/97)
|
||||||
* The above method is superceded by "box move <dir> <dist>"
|
* The above method is superseded by "box move <dir> <dist>"
|
||||||
* but is retained for backward compatibility.
|
* but is retained for backward compatibility.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3490,16 +3490,10 @@ extTransPerimFunc(bp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
/* Do not print error messages here, as errors may
|
||||||
/* Do not generate error messages on "Ignore" or "Short"
|
* be resolved when checking the next device entry.
|
||||||
* device types
|
|
||||||
*/
|
*/
|
||||||
if (strcmp(extTransRec.tr_devrec->exts_deviceName, "Ignore") &&
|
|
||||||
strcmp(extTransRec.tr_devrec->exts_deviceName, "Short"))
|
|
||||||
TxError("Warning: Unexpected asymmetric device at %d, %d!\n",
|
|
||||||
bp->b_outside->ti_ll.p_x, bp->b_outside->ti_ll.p_y);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
/* Add the length to this terminal's perimeter */
|
/* Add the length to this terminal's perimeter */
|
||||||
extTransRec.tr_termlen[thisterm] += len;
|
extTransRec.tr_termlen[thisterm] += len;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue