Compare commits

...

2 Commits

Author SHA1 Message Date
R. Timothy Edwards 9b4185fe62 Reverted a change from a long time ago regarding removal of zero
valued resistors connecting two ports.  I do not recall exactly
why I put that in but it appears to cause incorrect behavior.
2025-12-28 14:54:07 -05:00
R. Timothy Edwards ddd95c4fe6 Added a few lines to the setup file parser so that if there is a
missing brace in the file (a common error), then the fact that
there is an unevaluated command when the file has finished being
read will trigger an evaluation of the unfinished code and emit
an error.  Previously, the command and anything after the
unterminated brace would just silently get ignored, which was not
helpful for debugging setup syntax errors.
2025-12-11 12:08:31 -05:00
3 changed files with 21 additions and 3 deletions

View File

@ -1 +1 @@
1.5.312 1.5.314

View File

@ -2019,7 +2019,7 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
} }
} }
/* Do NOT remove shorting devices that */ /* Beware remove shorting devices that */
/* connect two ports. Otherwise the */ /* connect two ports. Otherwise the */
/* port lists get screwed up. It is */ /* port lists get screwed up. It is */
/* better in that case to force the */ /* better in that case to force the */
@ -2027,6 +2027,10 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
/* This is ignored for a top-level cell */ /* This is ignored for a top-level cell */
/* because it will just show up as a */ /* because it will just show up as a */
/* port mismatch error as it should. */ /* port mismatch error as it should. */
/* (12/12/2025---disabling this worked; */
/* may need to go back to a failing */
/* example and determine how pin */
/* matching gets scrambled.) */
if ((not_top == TRUE) && if ((not_top == TRUE) &&
(ecomp->cell1->class != CLASS_ISOURCE)) { (ecomp->cell1->class != CLASS_ISOURCE)) {
@ -2039,7 +2043,13 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
else if (ob2->node == node2) else if (ob2->node == node2)
found2 = TRUE; found2 = TRUE;
if (found1 && found2) { if (found1 && found2) {
found = FALSE; Fprintf(stdout, "Warning: "
"zero-valued device connects "
"port %s to another port; pin "
"matching may be affected.\n",
ob2->name);
// found = FALSE;
found = TRUE;
break; break;
} }
} }

View File

@ -516,6 +516,14 @@ proc netgen::lvs { name1 name2 {setupfile setup.tcl} {logfile comp.out} args} {
} }
} }
close $fsetup close $fsetup
if {$command != {}} {
# Incomplete command. Evaluate it to get a meaningful error message
if {[catch {uplevel 1 [list namespace eval netgen $command]} msg]} {
set msg [string trimright $msg "\n"]
puts stderr "Error $setupfile:$sline (ignoring), $msg"
incr perrors
}
}
} else { } else {
puts stdout "Error: Cannot read the setup file $setupfile" puts stdout "Error: Cannot read the setup file $setupfile"
} }