Corrected a rather obscure error in which an otherwise unconnected
port-to-port short (formed by "assign" in verilog or zero-valued resistors in SPICE) does not get checked when counting nodes before adding a proxy pin to a subcircuit in that cell, causing the proxy pin to be assigned the same node number and forming an unintended connection to the port-to-port connecting net.
This commit is contained in:
parent
8022e1370f
commit
e821381900
|
|
@ -7360,7 +7360,7 @@ struct nlist *addproxies(struct hashlist *p, void *clientdata)
|
|||
// Count the largest node number used in the cell
|
||||
maxnode = -1;
|
||||
for (ob = ptr->cell; ob; ob = ob->next)
|
||||
if (ob->type >= FIRSTPIN || ob->type == NODE)
|
||||
if (ob->type >= FIRSTPIN || ob->type == NODE || ob->type == PORT)
|
||||
if (ob->node >= maxnode)
|
||||
maxnode = ob->node + 1;
|
||||
numnodes = maxnode;
|
||||
|
|
|
|||
|
|
@ -224,6 +224,13 @@ int matchnocase(char *st1, char *st2)
|
|||
char *sp1 = st1;
|
||||
char *sp2 = st2;
|
||||
|
||||
/* In case of a property that does not exist in one netlist, matchnocase()
|
||||
* may be passed a null value, so return 0 to indicate a non-match.
|
||||
* *Both* values null will also be treated as a mismatch (debatable
|
||||
* behavior).
|
||||
*/
|
||||
if (!sp1 || !sp2) return 0;
|
||||
|
||||
while (*sp1 != '\0' && *sp2 != '\0') {
|
||||
if (to_lower[*sp1] != to_lower[*sp2]) break;
|
||||
sp1++;
|
||||
|
|
|
|||
Loading…
Reference in New Issue