Compare commits
4 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
9b4185fe62 | |
|
|
ddd95c4fe6 | |
|
|
c0c9993980 | |
|
|
8a20b90074 |
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7544,6 +7544,11 @@ struct nlist *addproxies(struct hashlist *p, void *clientdata)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lob = ob;
|
lob = ob;
|
||||||
|
if (ob == NULL) {
|
||||||
|
Fprintf(stdout, "Error: Premature end of pin list on "
|
||||||
|
"instance %s.\n", firstpin->instance.name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
ob->type = i++;
|
ob->type = i++;
|
||||||
ob = ob->next;
|
ob = ob->next;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,8 @@ struct hashdict verilogparams;
|
||||||
// Global storage for verilog definitions
|
// Global storage for verilog definitions
|
||||||
struct hashdict verilogdefs;
|
struct hashdict verilogdefs;
|
||||||
// Record file pointer that is associated with the hash tables
|
// Record file pointer that is associated with the hash tables
|
||||||
int hashfile = -1;
|
int hashfilep = -1; /* for parameters */
|
||||||
|
int hashfiled = -1; /* for definitions */
|
||||||
|
|
||||||
// Global storage for wire buses
|
// Global storage for wire buses
|
||||||
struct hashdict buses;
|
struct hashdict buses;
|
||||||
|
|
@ -2999,18 +3000,25 @@ char *ReadVerilogTop(char *fname, int *fnum, int blackbox)
|
||||||
hashfunc = hashcase;
|
hashfunc = hashcase;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((hashfile != -1) && (hashfile != *fnum)) {
|
if ((hashfilep != -1) && (hashfilep != *fnum)) {
|
||||||
/* Started a new file, so remove all the parameters and definitions */
|
/* Started a new file, so remove all the parameters */
|
||||||
RecurseHashTable(&verilogparams, freeprop);
|
RecurseHashTable(&verilogparams, freeprop);
|
||||||
HashKill(&verilogparams);
|
HashKill(&verilogparams);
|
||||||
|
hashfilep = -1;
|
||||||
|
}
|
||||||
|
if ((hashfiled != -1) && (hashfiled != *fnum)) {
|
||||||
|
/* Started a new file, so remove all the definitions */
|
||||||
RecurseHashTable(&verilogdefs, freeprop);
|
RecurseHashTable(&verilogdefs, freeprop);
|
||||||
HashKill(&verilogdefs);
|
HashKill(&verilogdefs);
|
||||||
hashfile = -1;
|
hashfiled = -1;
|
||||||
}
|
}
|
||||||
if (hashfile == -1) {
|
if (hashfilep == -1) {
|
||||||
InitializeHashTable(&verilogparams, OBJHASHSIZE);
|
InitializeHashTable(&verilogparams, OBJHASHSIZE);
|
||||||
|
hashfilep = filenum;
|
||||||
|
}
|
||||||
|
if (hashfiled == -1) {
|
||||||
InitializeHashTable(&verilogdefs, OBJHASHSIZE);
|
InitializeHashTable(&verilogdefs, OBJHASHSIZE);
|
||||||
hashfile = *fnum;
|
hashfiled = filenum;
|
||||||
}
|
}
|
||||||
definitions = &verilogdefs;
|
definitions = &verilogdefs;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue