Corrected an error placing proxy pins after the first pin of the
first object if the (presumably top-level) cell has no pins (top-level cells not in a subcircuit definition satisfy this condition).
This commit is contained in:
parent
5e9635e05f
commit
ace1c28507
|
|
@ -5078,7 +5078,6 @@ PropertyMatch(struct objlist *ob1, struct objlist *ob2, int do_print,
|
||||||
// t1 has no properties. See if t2's properties are required
|
// t1 has no properties. See if t2's properties are required
|
||||||
// to be checked. If so, flag t2 instance as unmatched
|
// to be checked. If so, flag t2 instance as unmatched
|
||||||
|
|
||||||
mismatches++;
|
|
||||||
for (i = 0;; i++) {
|
for (i = 0;; i++) {
|
||||||
vl2 = &(tp2->instance.props[i]);
|
vl2 = &(tp2->instance.props[i]);
|
||||||
if (vl2->type == PROP_ENDLIST) break;
|
if (vl2->type == PROP_ENDLIST) break;
|
||||||
|
|
@ -5088,6 +5087,7 @@ PropertyMatch(struct objlist *ob1, struct objlist *ob2, int do_print,
|
||||||
if (kl2 != NULL) break; // Property is required
|
if (kl2 != NULL) break; // Property is required
|
||||||
}
|
}
|
||||||
if (vl2->type != PROP_ENDLIST) {
|
if (vl2->type != PROP_ENDLIST) {
|
||||||
|
mismatches++;
|
||||||
if (do_print) Fprintf(stdout, "Circuit 2 %s instance %s has no"
|
if (do_print) Fprintf(stdout, "Circuit 2 %s instance %s has no"
|
||||||
" property match in circuit 1.\n",
|
" property match in circuit 1.\n",
|
||||||
Circuit2->name, inst2);
|
Circuit2->name, inst2);
|
||||||
|
|
@ -6597,8 +6597,14 @@ int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
|
||||||
obn->model.port = -1;
|
obn->model.port = -1;
|
||||||
obn->instance.name = NULL;
|
obn->instance.name = NULL;
|
||||||
obn->node = -1;
|
obn->node = -1;
|
||||||
obn->next = ob1->next;
|
if (ob1 == tc1->cell) {
|
||||||
ob1->next = obn;
|
obn->next = ob1;
|
||||||
|
tc1->cell = obn;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
obn->next = ob1->next;
|
||||||
|
ob1->next = obn;
|
||||||
|
}
|
||||||
ob1 = obn;
|
ob1 = obn;
|
||||||
hasproxy1 = 1;
|
hasproxy1 = 1;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3387,11 +3387,10 @@ int CombineSerial(char *model, int file)
|
||||||
/* a parameter '_tag', string value set to "+". */
|
/* a parameter '_tag', string value set to "+". */
|
||||||
|
|
||||||
for (obn = instlist[i][1]; obn->next &&
|
for (obn = instlist[i][1]; obn->next &&
|
||||||
obn->next->type != PROPERTY &&
|
obn->next->type > FIRSTPIN; obn = obn->next);
|
||||||
obn->next->type != FIRSTPIN; obn = obn->next);
|
|
||||||
obp = obn->next;
|
obp = obn->next;
|
||||||
|
|
||||||
if (obp == NULL || obp->type == FIRSTPIN) {
|
if (obp == NULL || obp->type != PROPERTY) {
|
||||||
struct objlist *nob;
|
struct objlist *nob;
|
||||||
/* No property record, so insert one */
|
/* No property record, so insert one */
|
||||||
nob = GetObject();
|
nob = GetObject();
|
||||||
|
|
@ -3466,8 +3465,8 @@ int CombineSerial(char *model, int file)
|
||||||
for (obp = instlist[i][0]; obp->next->type > FIRSTPIN ||
|
for (obp = instlist[i][0]; obp->next->type > FIRSTPIN ||
|
||||||
obp->next->type == PROPERTY; obp = obp->next);
|
obp->next->type == PROPERTY; obp = obp->next);
|
||||||
for (ob2 = obp; ob2->next != instlist[i][1]; ob2 = ob2->next);
|
for (ob2 = obp; ob2->next != instlist[i][1]; ob2 = ob2->next);
|
||||||
for (obs = ob2->next; obs->next && obs->next->type != FIRSTPIN;
|
for (obs = ob2->next; obs->next && (obs->next->type > FIRSTPIN
|
||||||
obs = obs->next);
|
|| obs->next->type == PROPERTY); obs = obs->next);
|
||||||
ob2->next = obs->next;
|
ob2->next = obs->next;
|
||||||
if (obs->next) obs->next = NULL; // Terminate 2nd instance record
|
if (obs->next) obs->next = NULL; // Terminate 2nd instance record
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue