A few minor changes to message reporting, plus some additional

support for compressed formats, specifically when given on the
command line (which is handled in a Tcl script, not in the C
code).
This commit is contained in:
R. Timothy Edwards 2025-12-19 09:30:35 -05:00
parent 00c692b140
commit 97134848ab
4 changed files with 39 additions and 5 deletions

View File

@ -1 +1 @@
8.3.582
8.3.583

View File

@ -828,6 +828,7 @@ dbcConnectLabelFunc(scx, lab, tpath, csa2)
CellDef *orig_def = scx->scx_use->cu_def;
Label *slab;
int lidx = lab->lab_port;
bool foundOne;
const TileTypeBitMask *connectMask;
/* Check for equivalent ports. For any found, call */
@ -839,6 +840,7 @@ dbcConnectLabelFunc(scx, lab, tpath, csa2)
/* are more equivalent ports, they will be found when */
/* processing this label's area. */
foundOne = FALSE;
for (slab = orig_def->cd_labels; slab != NULL; slab = slab->lab_next)
if ((slab->lab_flags & PORT_DIR_MASK) && (slab != lab))
if (slab->lab_port == lidx)
@ -899,6 +901,20 @@ dbcConnectLabelFunc(scx, lab, tpath, csa2)
csa2->csa2_list[csa2->csa2_top].connectMask = connectMask;
csa2->csa2_list[csa2->csa2_top].dinfo = 0;
#if 0
/* This warning is useful but currently is generating
* multiple messages per instance and so its more of
* an annoyance than an aid.
*/
if (foundOne == FALSE)
TxError("Warning: Port %s at location (%d %d) connects"
" a net across multiple disconnected areas!\n",
lab->lab_text, lab->lab_rect.r_xbot,
lab->lab_rect.r_ybot);
#endif
foundOne = TRUE;
/* See above: Process only one equivalent port at a time */
break;
}
@ -1247,7 +1263,8 @@ DBTreeCopyConnect(scx, mask, xMask, connect, area, doLabels, destUse)
if (DBTreeSrLabels(scx, newmask, xMask, &tpath, searchtype,
dbcConnectLabelFunc, (ClientData) &csa2) != 0)
{
TxError("Connection search hit memory limit and stopped.\n");
TxError("Connection search was interrupted or hit "
"memory limit and stopped.\n");
break;
}
}

View File

@ -3318,7 +3318,8 @@ dbFindPropGCFFunc(key, value, ggcf)
break;
else if (numvals != 4)
{
TxError("Error: Cannot parse %s property value!\n", key);
TxError("Error: Cannot parse %s property value at \"%s\"!\n",
key, vptr);
break;
}
else
@ -3337,7 +3338,7 @@ dbFindPropGCFFunc(key, value, ggcf)
/* Skip forward four values in value */
for (n = 0; n < 4; n++)
{
while (!isspace(*vptr)) vptr++;
while (!isspace(*vptr) && (*vptr != '\0')) vptr++;
while (isspace(*vptr) && (*vptr != '\0')) vptr++;
}
}

View File

@ -373,7 +373,13 @@ if {[info commands magic::openwrapper] != {}} {
foreach cellname $celllist {
set fext [file extension $cellname]
puts stdout "handling file entry $cellname extension $fext"
switch $fext {
.gz {}
"" {}
default {
puts stdout "Handling file entry $cellname extension $fext"
}
}
switch $fext {
.lef -
.LEF {lef read $cellname}
@ -390,6 +396,16 @@ if {[info commands magic::openwrapper] != {}} {
.tcl {source $cellname}
.mag -
"" {magic::load $cellname}
.gz {
set rootname [file root $cellname]
set fext [file extension $rootname]
puts stdout "Handling compressed entry $cellname extension $fext"
switch $fext {
.gds {gds read $cellname}
.mag {magic::load $cellname}
default {puts stderr "only compressed .mag and .gds are handled."}
}
}
default {puts stderr "don't know how to load file $cellname"}
}
}