Merge branch 'master' into netgen-1.5
This commit is contained in:
commit
4a7b6bf22a
|
|
@ -7223,7 +7223,7 @@ struct nlist *addproxies(struct hashlist *p, void *clientdata)
|
||||||
int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
|
int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
|
||||||
{
|
{
|
||||||
char *cover, *ctemp;
|
char *cover, *ctemp;
|
||||||
char *bangptr1, *bangptr2;
|
char *bangptr1, *bangptr2, *backslashptr1, *backslashptr2;
|
||||||
struct objlist *ob1, *ob2, *obn, *obp, *ob1s, *ob2s, *obt;
|
struct objlist *ob1, *ob2, *obn, *obp, *ob1s, *ob2s, *obt;
|
||||||
struct NodeClass *NC;
|
struct NodeClass *NC;
|
||||||
struct Node *N1, *N2;
|
struct Node *N1, *N2;
|
||||||
|
|
@ -7449,14 +7449,21 @@ int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
|
||||||
/* This should not happen if unconnected pins are eliminated */
|
/* This should not happen if unconnected pins are eliminated */
|
||||||
/* so apply only to black-box (CELL_PLACEHOLDER) entries. */
|
/* so apply only to black-box (CELL_PLACEHOLDER) entries. */
|
||||||
/* (Semi-hack: Allow "!" global flag) */
|
/* (Semi-hack: Allow "!" global flag) */
|
||||||
|
/* (Another semi-hack: Ignore the leading backslash in */
|
||||||
|
/* backslash-escaped verilog names. Removing the backslash */
|
||||||
|
/* and ending space character is a common way to convert to */
|
||||||
|
/* legal SPICE. */
|
||||||
|
|
||||||
ob1 = tc1->cell;
|
ob1 = tc1->cell;
|
||||||
|
|
||||||
|
for (i = 0; i < numorig; i++) {
|
||||||
bangptr1 = strrchr(ob1->name, '!');
|
bangptr1 = strrchr(ob1->name, '!');
|
||||||
if (bangptr1 && (*(bangptr1 + 1) == '\0'))
|
if (bangptr1 && (*(bangptr1 + 1) == '\0'))
|
||||||
*bangptr1 = '\0';
|
*bangptr1 = '\0';
|
||||||
else bangptr1 = NULL;
|
else bangptr1 = NULL;
|
||||||
|
|
||||||
for (i = 0; i < numorig; i++) {
|
backslashptr1 = (*(ob1->name) == '\\') ? ob1->name + 1 : ob1->name;
|
||||||
|
|
||||||
if (*(cover + i) == (char)0) {
|
if (*(cover + i) == (char)0) {
|
||||||
j = 0;
|
j = 0;
|
||||||
for (ob2 = tc2->cell; ob2 != NULL; ob2 = ob2->next) {
|
for (ob2 = tc2->cell; ob2 != NULL; ob2 = ob2->next) {
|
||||||
|
|
@ -7469,8 +7476,10 @@ int MatchPins(struct nlist *tc1, struct nlist *tc2, int dolist)
|
||||||
*bangptr2 = '\0';
|
*bangptr2 = '\0';
|
||||||
else bangptr2 = NULL;
|
else bangptr2 = NULL;
|
||||||
|
|
||||||
name1 = ob1->name;
|
backslashptr2 = (*(ob2->name) == '\\') ? ob2->name + 1 : ob2->name;
|
||||||
name2 = ob2->name;
|
|
||||||
|
name1 = backslashptr1;
|
||||||
|
name2 = backslashptr2;
|
||||||
|
|
||||||
/* Recognize proxy pins as matching unconnected pins */
|
/* Recognize proxy pins as matching unconnected pins */
|
||||||
if (!strncmp(name1, "proxy", 5) && (ob2->node == -1)) name1 +=5;
|
if (!strncmp(name1, "proxy", 5) && (ob2->node == -1)) name1 +=5;
|
||||||
|
|
|
||||||
|
|
@ -1669,7 +1669,7 @@ nextinst:
|
||||||
|
|
||||||
// Read the pin list
|
// Read the pin list
|
||||||
while (nexttok != NULL) {
|
while (nexttok != NULL) {
|
||||||
SkipTokComments(VLOG_DELIMITERS);
|
SkipTokComments(VLOG_PIN_CHECK_DELIMITERS);
|
||||||
if (match(nexttok, ")")) break;
|
if (match(nexttok, ")")) break;
|
||||||
else if (match(nexttok, ",")) continue;
|
else if (match(nexttok, ",")) continue;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue