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
|
// Count the largest node number used in the cell
|
||||||
maxnode = -1;
|
maxnode = -1;
|
||||||
for (ob = ptr->cell; ob; ob = ob->next)
|
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)
|
if (ob->node >= maxnode)
|
||||||
maxnode = ob->node + 1;
|
maxnode = ob->node + 1;
|
||||||
numnodes = maxnode;
|
numnodes = maxnode;
|
||||||
|
|
|
||||||
|
|
@ -224,6 +224,13 @@ int matchnocase(char *st1, char *st2)
|
||||||
char *sp1 = st1;
|
char *sp1 = st1;
|
||||||
char *sp2 = st2;
|
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') {
|
while (*sp1 != '\0' && *sp2 != '\0') {
|
||||||
if (to_lower[*sp1] != to_lower[*sp2]) break;
|
if (to_lower[*sp1] != to_lower[*sp2]) break;
|
||||||
sp1++;
|
sp1++;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue