parameterized string length and increased to 256
Rebasing over latest commit.
This commit is contained in:
parent
27b095754e
commit
a5375177c5
|
|
@ -131,7 +131,7 @@ if format = 1, use the actel .pin file format
|
||||||
struct nlist *tp;
|
struct nlist *tp;
|
||||||
struct objlist *ob, *ob2;
|
struct objlist *ob, *ob2;
|
||||||
char *ptr;
|
char *ptr;
|
||||||
char physicalpin[200];
|
char physicalpin[MAX_STR_LEN];
|
||||||
|
|
||||||
tp = LookupCell(name);
|
tp = LookupCell(name);
|
||||||
if (tp == NULL) return;
|
if (tp == NULL) return;
|
||||||
|
|
|
||||||
|
|
@ -176,4 +176,6 @@ extern int open(char *path, int oflag, ...); /* HPUX has it in <sys/fcntl.h> */
|
||||||
#define FALSE 0
|
#define FALSE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define MAX_STR_LEN 256
|
||||||
|
|
||||||
#endif /* _CONFIG_H */
|
#endif /* _CONFIG_H */
|
||||||
|
|
|
||||||
|
|
@ -629,7 +629,7 @@ struct embed *FlattenEmbeddingTree(struct embed *E)
|
||||||
int LenEmbed(char *prefix, struct nlist *np, struct embed *E, int flatten)
|
int LenEmbed(char *prefix, struct nlist *np, struct embed *E, int flatten)
|
||||||
/* return the number of characters required to print element E */
|
/* return the number of characters required to print element E */
|
||||||
{
|
{
|
||||||
char longstr[200];
|
char longstr[MAX_STR_LEN];
|
||||||
|
|
||||||
if (E == NULL) return(0);
|
if (E == NULL) return(0);
|
||||||
if (E->left == NULL && E->right == NULL) {
|
if (E->left == NULL && E->right == NULL) {
|
||||||
|
|
@ -668,7 +668,7 @@ void PrintEmb(FILE *outfile, char *prefix, struct nlist *np,
|
||||||
struct objlist *ob;
|
struct objlist *ob;
|
||||||
char *instancename;
|
char *instancename;
|
||||||
struct nlist *np2;
|
struct nlist *np2;
|
||||||
char name[200];
|
char name[MAX_STR_LEN];
|
||||||
|
|
||||||
ob = InstanceNumber(np,E->instancenumber);
|
ob = InstanceNumber(np,E->instancenumber);
|
||||||
instancename = ob->instance.name;
|
instancename = ob->instance.name;
|
||||||
|
|
@ -706,7 +706,7 @@ void PrintEmbed(FILE *outfile, char *prefix, struct nlist *np,
|
||||||
struct objlist *ob;
|
struct objlist *ob;
|
||||||
char *instancename;
|
char *instancename;
|
||||||
struct nlist *np2;
|
struct nlist *np2;
|
||||||
char name[200];
|
char name[MAX_STR_LEN];
|
||||||
|
|
||||||
ob = InstanceNumber(np,E->instancenumber);
|
ob = InstanceNumber(np,E->instancenumber);
|
||||||
instancename = ob->instance.name;
|
instancename = ob->instance.name;
|
||||||
|
|
|
||||||
46
base/ext.c
46
base/ext.c
|
|
@ -167,7 +167,7 @@ char *ReadExt(char *fname, int doflat, int *fnum)
|
||||||
int filenum;
|
int filenum;
|
||||||
|
|
||||||
if ((filenum = OpenParseFile(fname, *fnum)) < 0) {
|
if ((filenum = OpenParseFile(fname, *fnum)) < 0) {
|
||||||
char name[100];
|
char name[MAX_STR_LEN];
|
||||||
|
|
||||||
SetExtension(name, fname, EXT_EXTENSION);
|
SetExtension(name, fname, EXT_EXTENSION);
|
||||||
if ((filenum = OpenParseFile(name, *fnum)) < 0) {
|
if ((filenum = OpenParseFile(name, *fnum)) < 0) {
|
||||||
|
|
@ -208,7 +208,7 @@ char *ReadExt(char *fname, int doflat, int *fnum)
|
||||||
else if (match(nexttok, "style")) SkipNewLine(NULL);
|
else if (match(nexttok, "style")) SkipNewLine(NULL);
|
||||||
else if (match(nexttok, "resistclasses")) SkipNewLine(NULL);
|
else if (match(nexttok, "resistclasses")) SkipNewLine(NULL);
|
||||||
else if (match(nexttok, "node")) {
|
else if (match(nexttok, "node")) {
|
||||||
char name[200];
|
char name[MAX_STR_LEN];
|
||||||
|
|
||||||
/* No cell is generated until at least one valid "node" or "use" */
|
/* No cell is generated until at least one valid "node" or "use" */
|
||||||
/* has been read in the file. */
|
/* has been read in the file. */
|
||||||
|
|
@ -223,8 +223,8 @@ char *ReadExt(char *fname, int doflat, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "equiv")) {
|
else if (match(nexttok, "equiv")) {
|
||||||
char name[200];
|
char name[MAX_STR_LEN];
|
||||||
char name2[200];
|
char name2[MAX_STR_LEN];
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(name, nexttok);
|
GetExtName(name, nexttok);
|
||||||
if (LookupObject(name,CurrentCell) == NULL) Node(name);
|
if (LookupObject(name,CurrentCell) == NULL) Node(name);
|
||||||
|
|
@ -235,8 +235,8 @@ char *ReadExt(char *fname, int doflat, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "device")) {
|
else if (match(nexttok, "device")) {
|
||||||
char dev_name[100], dev_class[100];
|
char dev_name[MAX_STR_LEN], dev_class[MAX_STR_LEN];
|
||||||
char gate[200], drain[200], source[200], subs[200];
|
char gate[MAX_STR_LEN], drain[MAX_STR_LEN], source[MAX_STR_LEN], subs[MAX_STR_LEN];
|
||||||
char inststr[64];
|
char inststr[64];
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
strcpy(dev_class, nexttok);
|
strcpy(dev_class, nexttok);
|
||||||
|
|
@ -306,8 +306,8 @@ char *ReadExt(char *fname, int doflat, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "fet")) { /* old-style FET record */
|
else if (match(nexttok, "fet")) { /* old-style FET record */
|
||||||
char fet_class[100];
|
char fet_class[MAX_STR_LEN];
|
||||||
char gate[200], drain[200], source[200], subs[200];
|
char gate[MAX_STR_LEN], drain[MAX_STR_LEN], source[MAX_STR_LEN], subs[MAX_STR_LEN];
|
||||||
char inststr[64];
|
char inststr[64];
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
strcpy(fet_class, nexttok);
|
strcpy(fet_class, nexttok);
|
||||||
|
|
@ -365,7 +365,7 @@ char *ReadExt(char *fname, int doflat, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char ctop[200], cbot[200], cdummy[200];
|
char ctop[MAX_STR_LEN], cbot[MAX_STR_LEN], cdummy[MAX_STR_LEN];
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(ctop, nexttok);
|
GetExtName(ctop, nexttok);
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
|
|
@ -375,8 +375,8 @@ char *ReadExt(char *fname, int doflat, int *fnum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "use")) {
|
else if (match(nexttok, "use")) {
|
||||||
char name[200];
|
char name[MAX_STR_LEN];
|
||||||
char instancename[200];
|
char instancename[MAX_STR_LEN];
|
||||||
char *basename;
|
char *basename;
|
||||||
|
|
||||||
/* No cell is generated until at least one valid "node" or "use" */
|
/* No cell is generated until at least one valid "node" or "use" */
|
||||||
|
|
@ -390,7 +390,7 @@ char *ReadExt(char *fname, int doflat, int *fnum)
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(name, nexttok);
|
GetExtName(name, nexttok);
|
||||||
if ((basename = strrchr(name,'/')) != NULL) {
|
if ((basename = strrchr(name,'/')) != NULL) {
|
||||||
char tmp[200];
|
char tmp[MAX_STR_LEN];
|
||||||
strcpy(tmp, basename+1);
|
strcpy(tmp, basename+1);
|
||||||
strcpy(name, tmp);
|
strcpy(name, tmp);
|
||||||
}
|
}
|
||||||
|
|
@ -405,8 +405,8 @@ char *ReadExt(char *fname, int doflat, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "merge")) {
|
else if (match(nexttok, "merge")) {
|
||||||
char name[200];
|
char name[MAX_STR_LEN];
|
||||||
char name2[200];
|
char name2[MAX_STR_LEN];
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(name, nexttok);
|
GetExtName(name, nexttok);
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
|
|
@ -640,7 +640,7 @@ char *ReadSim(char *fname, int *fnum)
|
||||||
double simscale = 1.0;
|
double simscale = 1.0;
|
||||||
|
|
||||||
if ((filenum = OpenParseFile(fname, *fnum)) < 0) {
|
if ((filenum = OpenParseFile(fname, *fnum)) < 0) {
|
||||||
char name[100];
|
char name[MAX_STR_LEN];
|
||||||
|
|
||||||
SetExtension(name, fname, SIM_EXTENSION);
|
SetExtension(name, fname, SIM_EXTENSION);
|
||||||
if (OpenParseFile(name, *fnum) < 0) {
|
if (OpenParseFile(name, *fnum) < 0) {
|
||||||
|
|
@ -670,7 +670,7 @@ char *ReadSim(char *fname, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "n")) {
|
else if (match(nexttok, "n")) {
|
||||||
char gate[200], drain[200], source[200];
|
char gate[MAX_STR_LEN], drain[MAX_STR_LEN], source[MAX_STR_LEN];
|
||||||
char inststr[25], *instptr = NULL;
|
char inststr[25], *instptr = NULL;
|
||||||
|
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
|
|
@ -714,7 +714,7 @@ char *ReadSim(char *fname, int *fnum)
|
||||||
LinkProperties("n", kvlist);
|
LinkProperties("n", kvlist);
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "p")) {
|
else if (match(nexttok, "p")) {
|
||||||
char gate[200], drain[200], source[200];
|
char gate[MAX_STR_LEN], drain[MAX_STR_LEN], source[MAX_STR_LEN];
|
||||||
char inststr[25], *instptr = NULL;
|
char inststr[25], *instptr = NULL;
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(gate, nexttok);
|
GetExtName(gate, nexttok);
|
||||||
|
|
@ -754,7 +754,7 @@ char *ReadSim(char *fname, int *fnum)
|
||||||
LinkProperties("p", kvlist);
|
LinkProperties("p", kvlist);
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "e")) { /* 3-port capacitors (poly/poly2) */
|
else if (match(nexttok, "e")) { /* 3-port capacitors (poly/poly2) */
|
||||||
char gate[200], drain[200], source[200];
|
char gate[MAX_STR_LEN], drain[MAX_STR_LEN], source[MAX_STR_LEN];
|
||||||
char inststr[25], *instptr = NULL;
|
char inststr[25], *instptr = NULL;
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(gate, nexttok);
|
GetExtName(gate, nexttok);
|
||||||
|
|
@ -788,7 +788,7 @@ char *ReadSim(char *fname, int *fnum)
|
||||||
E(fname, instptr, gate, drain, source);
|
E(fname, instptr, gate, drain, source);
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "b")) { /* bipolars added by Tim 7/16/96 */
|
else if (match(nexttok, "b")) { /* bipolars added by Tim 7/16/96 */
|
||||||
char base[200], emitter[200], collector[200];
|
char base[MAX_STR_LEN], emitter[MAX_STR_LEN], collector[MAX_STR_LEN];
|
||||||
char inststr[25], *instptr = NULL;
|
char inststr[25], *instptr = NULL;
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(base, nexttok);
|
GetExtName(base, nexttok);
|
||||||
|
|
@ -826,7 +826,7 @@ char *ReadSim(char *fname, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char ctop[200], cbot[200], cdummy[200];
|
char ctop[MAX_STR_LEN], cbot[MAX_STR_LEN], cdummy[MAX_STR_LEN];
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(ctop, nexttok);
|
GetExtName(ctop, nexttok);
|
||||||
if (LookupObject(ctop, CurrentCell) == NULL)
|
if (LookupObject(ctop, CurrentCell) == NULL)
|
||||||
|
|
@ -851,7 +851,7 @@ char *ReadSim(char *fname, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char rtop[200], rbot[200];
|
char rtop[MAX_STR_LEN], rbot[MAX_STR_LEN];
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(rtop, nexttok);
|
GetExtName(rtop, nexttok);
|
||||||
if (LookupObject(rtop, CurrentCell) == NULL)
|
if (LookupObject(rtop, CurrentCell) == NULL)
|
||||||
|
|
@ -875,7 +875,7 @@ char *ReadSim(char *fname, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char rtop[200], rbot[200], rdummy[200];
|
char rtop[MAX_STR_LEN], rbot[MAX_STR_LEN], rdummy[MAX_STR_LEN];
|
||||||
char inststr[25], *instptr = NULL;
|
char inststr[25], *instptr = NULL;
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(rdummy, nexttok);
|
GetExtName(rdummy, nexttok);
|
||||||
|
|
@ -917,7 +917,7 @@ char *ReadSim(char *fname, int *fnum)
|
||||||
SkipNewLine(NULL);
|
SkipNewLine(NULL);
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "=")) {
|
else if (match(nexttok, "=")) {
|
||||||
char node1[200], node2[200];
|
char node1[MAX_STR_LEN], node2[MAX_STR_LEN];
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
GetExtName(node1, nexttok);
|
GetExtName(node1, nexttok);
|
||||||
SkipTok(NULL);
|
SkipTok(NULL);
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ void flattenCell(char *name, int file)
|
||||||
struct nlist *ChildCell;
|
struct nlist *ChildCell;
|
||||||
struct objlist *tmp, *ob2, *ob3;
|
struct objlist *tmp, *ob2, *ob3;
|
||||||
int notdone, rnodenum;
|
int notdone, rnodenum;
|
||||||
char tmpstr[200];
|
char tmpstr[MAX_STR_LEN];
|
||||||
int nextnode, oldmax;
|
int nextnode, oldmax;
|
||||||
#if !OLDPREFIX
|
#if !OLDPREFIX
|
||||||
int prefixlength;
|
int prefixlength;
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ void STRCPY(char *dest, char *source)
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char cell1[200], cell2[200];
|
char cell1[MAX_STR_LEN], cell2[MAX_STR_LEN];
|
||||||
|
|
||||||
Debug = 0;
|
Debug = 0;
|
||||||
if (argc != 1) {
|
if (argc != 1) {
|
||||||
|
|
|
||||||
|
|
@ -8144,8 +8144,8 @@ int Compare(char *cell1, char *cell2)
|
||||||
void NETCOMP(void)
|
void NETCOMP(void)
|
||||||
/* a simple command interpreter to manage embedding/routing */
|
/* a simple command interpreter to manage embedding/routing */
|
||||||
{
|
{
|
||||||
char name[100];
|
char name[MAX_STR_LEN];
|
||||||
char name2[100];
|
char name2[MAX_STR_LEN];
|
||||||
char ch;
|
char ch;
|
||||||
|
|
||||||
setjmp(jmpenv);
|
setjmp(jmpenv);
|
||||||
|
|
@ -8243,7 +8243,7 @@ void NETCOMP(void)
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
{
|
{
|
||||||
char model[100];
|
char model[MAX_STR_LEN];
|
||||||
/* equivalence two pins on a given class of element */
|
/* equivalence two pins on a given class of element */
|
||||||
Printf("Allow permutation of two pins.\n");
|
Printf("Allow permutation of two pins.\n");
|
||||||
promptstring("Enter cellname: ",model);
|
promptstring("Enter cellname: ",model);
|
||||||
|
|
|
||||||
|
|
@ -914,7 +914,7 @@ char *ReadNetlist(char *fname, int *fnum)
|
||||||
}
|
}
|
||||||
/* try appending extensions in sequence, and testing for file existance */
|
/* try appending extensions in sequence, and testing for file existance */
|
||||||
for (index = 0; formats[index].extension != NULL; index++) {
|
for (index = 0; formats[index].extension != NULL; index++) {
|
||||||
char testname[200];
|
char testname[MAX_STR_LEN];
|
||||||
strcpy(testname, fname);
|
strcpy(testname, fname);
|
||||||
strcat(testname, formats[index].extension);
|
strcat(testname, formats[index].extension);
|
||||||
if (OpenParseFile(testname, *fnum) >= 0) {
|
if (OpenParseFile(testname, *fnum) >= 0) {
|
||||||
|
|
@ -1019,7 +1019,7 @@ void WriteNetgenFile(char *name, char *filename)
|
||||||
|
|
||||||
char *ReadNetgenFile (char *fname, int *fnum)
|
char *ReadNetgenFile (char *fname, int *fnum)
|
||||||
{
|
{
|
||||||
char name[100];
|
char name[MAX_STR_LEN];
|
||||||
char *LastCellRead = NULL;
|
char *LastCellRead = NULL;
|
||||||
int filenum;
|
int filenum;
|
||||||
|
|
||||||
|
|
@ -1255,7 +1255,7 @@ int READ(void *buf, int bytes)
|
||||||
|
|
||||||
char *ReadNetgenFile (char *fname, int *fnum)
|
char *ReadNetgenFile (char *fname, int *fnum)
|
||||||
{
|
{
|
||||||
char name[100];
|
char name[MAX_STR_LEN];
|
||||||
int len, chars;
|
int len, chars;
|
||||||
char *LastCellRead = NULL;
|
char *LastCellRead = NULL;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ int AddToExistingDefinition = 0; /* default: overwrite cell when reopened */
|
||||||
extern int errno; /* Defined in stdlib.h */
|
extern int errno; /* Defined in stdlib.h */
|
||||||
|
|
||||||
#define MAX_STATIC_STRINGS 5
|
#define MAX_STATIC_STRINGS 5
|
||||||
static char staticstrings[MAX_STATIC_STRINGS][200];
|
static char staticstrings[MAX_STATIC_STRINGS][MAX_STR_LEN];
|
||||||
static int laststring;
|
static int laststring;
|
||||||
|
|
||||||
extern struct hashdict spiceparams; /* From spice.c */
|
extern struct hashdict spiceparams; /* From spice.c */
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,7 @@ void Ntk(char *name, char *filename)
|
||||||
|
|
||||||
char *ReadNtk (char *fname, int *fnum)
|
char *ReadNtk (char *fname, int *fnum)
|
||||||
{
|
{
|
||||||
char model[100], instancename[100], name[100];
|
char model[MAX_STR_LEN], instancename[MAX_STR_LEN], name[MAX_STR_LEN];
|
||||||
struct objlist *ob;
|
struct objlist *ob;
|
||||||
int CellDefInProgress = 0;
|
int CellDefInProgress = 0;
|
||||||
int filenum;
|
int filenum;
|
||||||
|
|
@ -218,7 +218,7 @@ char *ReadNtk (char *fname, int *fnum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "s")) {
|
else if (match(nexttok, "s")) {
|
||||||
char last[100];
|
char last[MAX_STR_LEN];
|
||||||
*last = '\0';
|
*last = '\0';
|
||||||
if (!CellDefInProgress) {
|
if (!CellDefInProgress) {
|
||||||
/* fake cell declaration for top-level call */
|
/* fake cell declaration for top-level call */
|
||||||
|
|
|
||||||
|
|
@ -739,7 +739,7 @@ struct nlist *RecurseCellHashTable2(struct nlist *(*foo)(struct hashlist *,
|
||||||
|
|
||||||
char *FixTemplate(char *t)
|
char *FixTemplate(char *t)
|
||||||
{
|
{
|
||||||
char buffer[200];
|
char buffer[MAX_STR_LEN];
|
||||||
char *rstr;
|
char *rstr;
|
||||||
int i,j;
|
int i,j;
|
||||||
int InsideBrace;
|
int InsideBrace;
|
||||||
|
|
@ -1250,7 +1250,7 @@ static char *OldNodeName(struct nlist *tp, int node)
|
||||||
struct objlist *firstuniqueglobal;
|
struct objlist *firstuniqueglobal;
|
||||||
struct objlist *firstglobal;
|
struct objlist *firstglobal;
|
||||||
struct objlist *firstpin;
|
struct objlist *firstpin;
|
||||||
static char StrBuffer[100];
|
static char StrBuffer[MAX_STR_LEN];
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* make second pass, looking for ports */
|
/* make second pass, looking for ports */
|
||||||
|
|
|
||||||
18
base/place.c
18
base/place.c
|
|
@ -511,8 +511,8 @@ int OpenEmbeddingFile(char *cellname, char *filename)
|
||||||
/* returns 1 if OK */
|
/* returns 1 if OK */
|
||||||
{
|
{
|
||||||
struct nlist *tp;
|
struct nlist *tp;
|
||||||
char outfilename[200];
|
char outfilename[MAX_STR_LEN];
|
||||||
char logfilename[200];
|
char logfilename[MAX_STR_LEN];
|
||||||
|
|
||||||
tp = LookupCell(cellname);
|
tp = LookupCell(cellname);
|
||||||
if (tp == NULL) {
|
if (tp == NULL) {
|
||||||
|
|
@ -783,7 +783,7 @@ void SetupArray(char *prompt1, char *prompt2, char *prompt3, int *data,
|
||||||
void (*proc)(void))
|
void (*proc)(void))
|
||||||
{
|
{
|
||||||
int i, oldfanout;
|
int i, oldfanout;
|
||||||
char name[100];
|
char name[MAX_STR_LEN];
|
||||||
|
|
||||||
Printf(prompt1);
|
Printf(prompt1);
|
||||||
for (i = 1; i <= MAX_TREE_DEPTH; i++)
|
for (i = 1; i <= MAX_TREE_DEPTH; i++)
|
||||||
|
|
@ -792,7 +792,7 @@ void SetupArray(char *prompt1, char *prompt2, char *prompt3, int *data,
|
||||||
|
|
||||||
oldfanout = 1;
|
oldfanout = 1;
|
||||||
for (i = 1; i <= MAX_TREE_DEPTH; i++) {
|
for (i = 1; i <= MAX_TREE_DEPTH; i++) {
|
||||||
char prompt[100];
|
char prompt[MAX_STR_LEN];
|
||||||
int newfanout;
|
int newfanout;
|
||||||
sprintf(prompt, prompt2, i);
|
sprintf(prompt, prompt2, i);
|
||||||
promptstring(prompt, name);
|
promptstring(prompt, name);
|
||||||
|
|
@ -822,7 +822,7 @@ void SetupArrayFromString(char *prompt1, char *prompt3, int *data,
|
||||||
void (*proc)(void), char *text)
|
void (*proc)(void), char *text)
|
||||||
{
|
{
|
||||||
int i, oldfanout, newfanout;
|
int i, oldfanout, newfanout;
|
||||||
char string[100];
|
char string[MAX_STR_LEN];
|
||||||
char *ch;
|
char *ch;
|
||||||
char *endch;
|
char *endch;
|
||||||
|
|
||||||
|
|
@ -962,7 +962,7 @@ void ProtoPrintParameters(void)
|
||||||
void PROTOCHIP(void)
|
void PROTOCHIP(void)
|
||||||
/* a simple command interpreter to manage embedding/routing */
|
/* a simple command interpreter to manage embedding/routing */
|
||||||
{
|
{
|
||||||
char name[100];
|
char name[MAX_STR_LEN];
|
||||||
char ch;
|
char ch;
|
||||||
|
|
||||||
InitializeFanout();
|
InitializeFanout();
|
||||||
|
|
@ -1136,7 +1136,7 @@ void PROTOCHIP(void)
|
||||||
|
|
||||||
oldfanout = 1;
|
oldfanout = 1;
|
||||||
for (i = 1; i <= MAX_TREE_DEPTH; i++) {
|
for (i = 1; i <= MAX_TREE_DEPTH; i++) {
|
||||||
char prompt[100];
|
char prompt[MAX_STR_LEN];
|
||||||
int newfanout;
|
int newfanout;
|
||||||
sprintf(prompt,"Fanout for level %d (0 to quit): ",i);
|
sprintf(prompt,"Fanout for level %d (0 to quit): ",i);
|
||||||
promptstring(prompt, name);
|
promptstring(prompt, name);
|
||||||
|
|
@ -1168,7 +1168,7 @@ void PROTOCHIP(void)
|
||||||
|
|
||||||
oldfanout = 1;
|
oldfanout = 1;
|
||||||
for (i = 1; i <= MAX_TREE_DEPTH; i++) {
|
for (i = 1; i <= MAX_TREE_DEPTH; i++) {
|
||||||
char prompt[100];
|
char prompt[MAX_STR_LEN];
|
||||||
int newfanout;
|
int newfanout;
|
||||||
sprintf(prompt,"Common nodes for level %d (0 to quit): ",i);
|
sprintf(prompt,"Common nodes for level %d (0 to quit): ",i);
|
||||||
promptstring(prompt, name);
|
promptstring(prompt, name);
|
||||||
|
|
@ -1200,7 +1200,7 @@ void PROTOCHIP(void)
|
||||||
|
|
||||||
oldfanout = 1;
|
oldfanout = 1;
|
||||||
for (i = 1; i <= MAX_TREE_DEPTH; i++) {
|
for (i = 1; i <= MAX_TREE_DEPTH; i++) {
|
||||||
char prompt[100];
|
char prompt[MAX_STR_LEN];
|
||||||
int newfanout;
|
int newfanout;
|
||||||
sprintf(prompt,"Used leaves for level %d (0 to quit): ",i);
|
sprintf(prompt,"Used leaves for level %d (0 to quit): ",i);
|
||||||
promptstring(prompt, name);
|
promptstring(prompt, name);
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ extern int ColumnBase;
|
||||||
|
|
||||||
struct filestr {
|
struct filestr {
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char buffer[200];
|
char buffer[MAX_STR_LEN];
|
||||||
int wrap; /* column to wrap around in, or 0 if no wrap */
|
int wrap; /* column to wrap around in, or 0 if no wrap */
|
||||||
} file_buffers[MAXFILES];
|
} file_buffers[MAXFILES];
|
||||||
|
|
||||||
|
|
@ -107,7 +107,7 @@ void Fprintf(FILE *f, char *format, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
int FileIndex;
|
int FileIndex;
|
||||||
char tmpstr[200];
|
char tmpstr[MAX_STR_LEN];
|
||||||
int bufferlongenough;
|
int bufferlongenough;
|
||||||
int linewrapexceeded;
|
int linewrapexceeded;
|
||||||
|
|
||||||
|
|
@ -203,7 +203,7 @@ void Printf(char *format, ...)
|
||||||
void Printf(char *format, ...)
|
void Printf(char *format, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char tmpstr[200];
|
char tmpstr[MAX_STR_LEN];
|
||||||
|
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
vsprintf(tmpstr, format, ap);
|
vsprintf(tmpstr, format, ap);
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
static int SuppressPrompts = 0;
|
static int SuppressPrompts = 0;
|
||||||
static char InputLine[200];
|
static char InputLine[MAX_STR_LEN];
|
||||||
|
|
||||||
void typeahead(char *str)
|
void typeahead(char *str)
|
||||||
{
|
{
|
||||||
|
|
@ -73,7 +73,7 @@ but reads from 'promptstring_infile' if nec. */
|
||||||
/* If interactive, puts out 'prompt' */
|
/* If interactive, puts out 'prompt' */
|
||||||
{
|
{
|
||||||
char *nexttok;
|
char *nexttok;
|
||||||
char tmpstr[200];
|
char tmpstr[MAX_STR_LEN];
|
||||||
int echo;
|
int echo;
|
||||||
|
|
||||||
if (promptstring_infile == NULL)
|
if (promptstring_infile == NULL)
|
||||||
|
|
@ -959,8 +959,8 @@ void Query(void)
|
||||||
{
|
{
|
||||||
/* little interactive debugger */
|
/* little interactive debugger */
|
||||||
char reply;
|
char reply;
|
||||||
char repstr[100];
|
char repstr[MAX_STR_LEN];
|
||||||
char repstr2[100];
|
char repstr2[MAX_STR_LEN];
|
||||||
float StartTime; /* for elapsed CPU times */
|
float StartTime; /* for elapsed CPU times */
|
||||||
int Timing; /* if true, print times of each command */
|
int Timing; /* if true, print times of each command */
|
||||||
int filenum = -1;
|
int filenum = -1;
|
||||||
|
|
|
||||||
210
base/spice.c
210
base/spice.c
|
|
@ -518,13 +518,13 @@ void ReadSpiceFile(char *fname, int filenum, struct cellstack **CellStackPtr,
|
||||||
int warnings = 0, update = 0, hasports = 0;
|
int warnings = 0, update = 0, hasports = 0;
|
||||||
char *eqptr, devtype, in_subckt;
|
char *eqptr, devtype, in_subckt;
|
||||||
struct keyvalue *kvlist = NULL;
|
struct keyvalue *kvlist = NULL;
|
||||||
char inst[256], model[256], instname[256];
|
char inst[MAX_STR_LEN], model[MAX_STR_LEN], instname[MAX_STR_LEN];
|
||||||
struct nlist *tp;
|
struct nlist *tp;
|
||||||
struct objlist *parent, *sobj, *nobj, *lobj, *pobj;
|
struct objlist *parent, *sobj, *nobj, *lobj, *pobj;
|
||||||
|
|
||||||
inst[255] = '\0';
|
inst[MAX_STR_LEN-1] = '\0';
|
||||||
model[255] = '\0';
|
model[MAX_STR_LEN-1] = '\0';
|
||||||
instname[255] = '\0';
|
instname[MAX_STR_LEN-1] = '\0';
|
||||||
in_subckt = (char)0;
|
in_subckt = (char)0;
|
||||||
|
|
||||||
while (!EndParseFile()) {
|
while (!EndParseFile()) {
|
||||||
|
|
@ -555,7 +555,7 @@ void ReadSpiceFile(char *fname, int filenum, struct cellstack **CellStackPtr,
|
||||||
|
|
||||||
/* Check for existence of the cell. We may need to rename it. */
|
/* Check for existence of the cell. We may need to rename it. */
|
||||||
|
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
tp = LookupCellFile(nexttok, filenum);
|
tp = LookupCellFile(nexttok, filenum);
|
||||||
|
|
||||||
/* Check for name conflict with duplicate cell names */
|
/* Check for name conflict with duplicate cell names */
|
||||||
|
|
@ -703,7 +703,7 @@ skip_ends:
|
||||||
|
|
||||||
SpiceTokNoNewline();
|
SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) continue; /* Ignore if no model name */
|
if (nexttok == NULL) continue; /* Ignore if no model name */
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
SpiceTokNoNewline();
|
SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
|
|
||||||
|
|
@ -887,29 +887,29 @@ skip_ends:
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (toupper(nexttok[0]) == 'Q') {
|
else if (toupper(nexttok[0]) == 'Q') {
|
||||||
char emitter[100], base[100], collector[100];
|
char emitter[MAX_STR_LEN], base[MAX_STR_LEN], collector[MAX_STR_LEN];
|
||||||
emitter[99] = '\0';
|
emitter[MAX_STR_LEN-1] = '\0';
|
||||||
base[99] = '\0';
|
base[MAX_STR_LEN-1] = '\0';
|
||||||
collector[99] = '\0';
|
collector[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(collector, nexttok, 99); SpiceTokNoNewline();
|
strncpy(collector, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(base, nexttok, 99); SpiceTokNoNewline();
|
strncpy(base, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(emitter, nexttok, 99); SpiceTokNoNewline();
|
strncpy(emitter, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(collector, CurrentCell) == NULL) Node(collector);
|
if (LookupObject(collector, CurrentCell) == NULL) Node(collector);
|
||||||
if (LookupObject(base, CurrentCell) == NULL) Node(base);
|
if (LookupObject(base, CurrentCell) == NULL) Node(base);
|
||||||
if (LookupObject(emitter, CurrentCell) == NULL) Node(emitter);
|
if (LookupObject(emitter, CurrentCell) == NULL) Node(emitter);
|
||||||
|
|
||||||
/* Read the device model */
|
/* Read the device model */
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
|
|
||||||
while (nexttok != NULL)
|
while (nexttok != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -940,30 +940,30 @@ skip_ends:
|
||||||
goto baddevice;
|
goto baddevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(instname, 255, "%s:%s", model, inst);
|
snprintf(instname, MAX_STR_LEN-1, "%s:%s", model, inst);
|
||||||
Cell(instname, model, collector, base, emitter);
|
Cell(instname, model, collector, base, emitter);
|
||||||
pobj = LinkProperties(model, kvlist);
|
pobj = LinkProperties(model, kvlist);
|
||||||
ReduceExpressions(pobj, NULL, CurrentCell, TRUE);
|
ReduceExpressions(pobj, NULL, CurrentCell, TRUE);
|
||||||
DeleteProperties(&kvlist);
|
DeleteProperties(&kvlist);
|
||||||
}
|
}
|
||||||
else if (toupper(nexttok[0]) == 'M') {
|
else if (toupper(nexttok[0]) == 'M') {
|
||||||
char drain[100], gate[100], source[100], bulk[100];
|
char drain[MAX_STR_LEN], gate[MAX_STR_LEN], source[MAX_STR_LEN], bulk[MAX_STR_LEN];
|
||||||
drain[99] = '\0';
|
drain[MAX_STR_LEN-1] = '\0';
|
||||||
gate[99] = '\0';
|
gate[MAX_STR_LEN-1] = '\0';
|
||||||
source[99] = '\0';
|
source[MAX_STR_LEN-1] = '\0';
|
||||||
bulk[99] = '\0';
|
bulk[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(drain, nexttok, 99); SpiceTokNoNewline();
|
strncpy(drain, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(gate, nexttok, 99); SpiceTokNoNewline();
|
strncpy(gate, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(source, nexttok, 99); SpiceTokNoNewline();
|
strncpy(source, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(drain, CurrentCell) == NULL) Node(drain);
|
if (LookupObject(drain, CurrentCell) == NULL) Node(drain);
|
||||||
|
|
@ -971,11 +971,11 @@ skip_ends:
|
||||||
if (LookupObject(source, CurrentCell) == NULL) Node(source);
|
if (LookupObject(source, CurrentCell) == NULL) Node(source);
|
||||||
|
|
||||||
/* handle the substrate node */
|
/* handle the substrate node */
|
||||||
strncpy(bulk, nexttok, 99); SpiceTokNoNewline();
|
strncpy(bulk, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (LookupObject(bulk, CurrentCell) == NULL) Node(bulk);
|
if (LookupObject(bulk, CurrentCell) == NULL) Node(bulk);
|
||||||
|
|
||||||
/* Read the device model */
|
/* Read the device model */
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
|
|
||||||
while (nexttok != NULL)
|
while (nexttok != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -1013,7 +1013,7 @@ skip_ends:
|
||||||
goto baddevice;
|
goto baddevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(instname, 255, "%s:%s", model, inst);
|
snprintf(instname, MAX_STR_LEN-1, "%s:%s", model, inst);
|
||||||
Cell(instname, model, drain, gate, source, bulk);
|
Cell(instname, model, drain, gate, source, bulk);
|
||||||
pobj = LinkProperties(model, kvlist);
|
pobj = LinkProperties(model, kvlist);
|
||||||
ReduceExpressions(pobj, NULL, CurrentCell, TRUE);
|
ReduceExpressions(pobj, NULL, CurrentCell, TRUE);
|
||||||
|
|
@ -1027,19 +1027,19 @@ skip_ends:
|
||||||
SpiceSkipNewLine();
|
SpiceSkipNewLine();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char ctop[100], cbot[100];
|
char ctop[MAX_STR_LEN], cbot[MAX_STR_LEN];
|
||||||
ctop[99] = '\0';
|
ctop[MAX_STR_LEN-1] = '\0';
|
||||||
cbot[99] = '\0';
|
cbot[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(ctop, nexttok, 99); SpiceTokNoNewline();
|
strncpy(ctop, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(cbot, nexttok, 99); SpiceTokNoNewline();
|
strncpy(cbot, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
|
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(ctop, CurrentCell) == NULL) Node(ctop);
|
if (LookupObject(ctop, CurrentCell) == NULL) Node(ctop);
|
||||||
|
|
@ -1058,7 +1058,7 @@ skip_ends:
|
||||||
|
|
||||||
model[0] = '\0';
|
model[0] = '\0';
|
||||||
if ((nexttok != NULL) && ((eqptr = strchr(nexttok, '=')) == NULL))
|
if ((nexttok != NULL) && ((eqptr = strchr(nexttok, '=')) == NULL))
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
|
|
||||||
/* Any other device properties? */
|
/* Any other device properties? */
|
||||||
while (nexttok != NULL)
|
while (nexttok != NULL)
|
||||||
|
|
@ -1071,7 +1071,7 @@ skip_ends:
|
||||||
}
|
}
|
||||||
else if (!strncmp(nexttok, "$[", 2)) {
|
else if (!strncmp(nexttok, "$[", 2)) {
|
||||||
// Support for CDL modeled capacitor format
|
// Support for CDL modeled capacitor format
|
||||||
snprintf(model, 99, "%s", nexttok + 2);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok + 2);
|
||||||
if ((eqptr = strchr(model, ']')) != NULL)
|
if ((eqptr = strchr(model, ']')) != NULL)
|
||||||
*eqptr = '\0';
|
*eqptr = '\0';
|
||||||
}
|
}
|
||||||
|
|
@ -1104,7 +1104,7 @@ skip_ends:
|
||||||
usemodel = 1;
|
usemodel = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(instname, 255, "%s:%s", model, inst);
|
snprintf(instname, MAX_STR_LEN-1, "%s:%s", model, inst);
|
||||||
if (usemodel)
|
if (usemodel)
|
||||||
Cell(instname, model, ctop, cbot);
|
Cell(instname, model, ctop, cbot);
|
||||||
else
|
else
|
||||||
|
|
@ -1121,19 +1121,19 @@ skip_ends:
|
||||||
SpiceSkipNewLine();
|
SpiceSkipNewLine();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char rtop[100], rbot[100];
|
char rtop[MAX_STR_LEN], rbot[MAX_STR_LEN];
|
||||||
rtop[99] = '\0';
|
rtop[MAX_STR_LEN-1] = '\0';
|
||||||
rbot[99] = '\0';
|
rbot[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(rtop, nexttok, 99); SpiceTokNoNewline();
|
strncpy(rtop, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(rbot, nexttok, 99); SpiceTokNoNewline();
|
strncpy(rbot, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(rtop, CurrentCell) == NULL) Node(rtop);
|
if (LookupObject(rtop, CurrentCell) == NULL) Node(rtop);
|
||||||
if (LookupObject(rbot, CurrentCell) == NULL) Node(rbot);
|
if (LookupObject(rbot, CurrentCell) == NULL) Node(rbot);
|
||||||
|
|
@ -1152,7 +1152,7 @@ skip_ends:
|
||||||
|
|
||||||
model[0] = '\0';
|
model[0] = '\0';
|
||||||
if ((nexttok != NULL) && ((eqptr = strchr(nexttok, '=')) == NULL))
|
if ((nexttok != NULL) && ((eqptr = strchr(nexttok, '=')) == NULL))
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
|
|
||||||
/* Any other device properties? */
|
/* Any other device properties? */
|
||||||
while (nexttok != NULL) {
|
while (nexttok != NULL) {
|
||||||
|
|
@ -1164,7 +1164,7 @@ skip_ends:
|
||||||
}
|
}
|
||||||
else if (!strncmp(nexttok, "$[", 2)) {
|
else if (!strncmp(nexttok, "$[", 2)) {
|
||||||
// Support for CDL modeled resistor format
|
// Support for CDL modeled resistor format
|
||||||
snprintf(model, 99, "%s", nexttok + 2);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok + 2);
|
||||||
if ((eqptr = strchr(model, ']')) != NULL)
|
if ((eqptr = strchr(model, ']')) != NULL)
|
||||||
*eqptr = '\0';
|
*eqptr = '\0';
|
||||||
}
|
}
|
||||||
|
|
@ -1197,7 +1197,7 @@ skip_ends:
|
||||||
else
|
else
|
||||||
strcpy(model, "r"); /* Use default resistor model */
|
strcpy(model, "r"); /* Use default resistor model */
|
||||||
|
|
||||||
snprintf(instname, 255, "%s:%s", model, inst);
|
snprintf(instname, MAX_STR_LEN-1, "%s:%s", model, inst);
|
||||||
if (usemodel)
|
if (usemodel)
|
||||||
Cell(instname, model, rtop, rbot);
|
Cell(instname, model, rtop, rbot);
|
||||||
else
|
else
|
||||||
|
|
@ -1208,25 +1208,25 @@ skip_ends:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (toupper(nexttok[0]) == 'D') { /* diode */
|
else if (toupper(nexttok[0]) == 'D') { /* diode */
|
||||||
char cathode[100], anode[100];
|
char cathode[MAX_STR_LEN], anode[MAX_STR_LEN];
|
||||||
cathode[99] = '\0';
|
cathode[MAX_STR_LEN-1] = '\0';
|
||||||
anode[99] = '\0';
|
anode[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(anode, nexttok, 99); SpiceTokNoNewline();
|
strncpy(anode, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(cathode, nexttok, 99); SpiceTokNoNewline();
|
strncpy(cathode, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(anode, CurrentCell) == NULL) Node(anode);
|
if (LookupObject(anode, CurrentCell) == NULL) Node(anode);
|
||||||
if (LookupObject(cathode, CurrentCell) == NULL) Node(cathode);
|
if (LookupObject(cathode, CurrentCell) == NULL) Node(cathode);
|
||||||
|
|
||||||
/* Read the device model */
|
/* Read the device model */
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
|
|
||||||
while (nexttok != NULL)
|
while (nexttok != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -1255,7 +1255,7 @@ skip_ends:
|
||||||
Fprintf(stderr, "Device \"%s\" has wrong number of ports for a diode.\n");
|
Fprintf(stderr, "Device \"%s\" has wrong number of ports for a diode.\n");
|
||||||
goto baddevice;
|
goto baddevice;
|
||||||
}
|
}
|
||||||
snprintf(instname, 255, "%s:%s", model, inst);
|
snprintf(instname, MAX_STR_LEN-1, "%s:%s", model, inst);
|
||||||
Cell(instname, model, anode, cathode);
|
Cell(instname, model, anode, cathode);
|
||||||
pobj = LinkProperties(model, kvlist);
|
pobj = LinkProperties(model, kvlist);
|
||||||
ReduceExpressions(pobj, NULL, CurrentCell, TRUE);
|
ReduceExpressions(pobj, NULL, CurrentCell, TRUE);
|
||||||
|
|
@ -1268,25 +1268,25 @@ skip_ends:
|
||||||
SpiceSkipNewLine();
|
SpiceSkipNewLine();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char node1[100], node2[100], node3[100], node4[100];
|
char node1[MAX_STR_LEN], node2[MAX_STR_LEN], node3[MAX_STR_LEN], node4[MAX_STR_LEN];
|
||||||
node1[99] = '\0';
|
node1[MAX_STR_LEN-1] = '\0';
|
||||||
node2[99] = '\0';
|
node2[MAX_STR_LEN-1] = '\0';
|
||||||
node3[99] = '\0';
|
node3[MAX_STR_LEN-1] = '\0';
|
||||||
node4[99] = '\0';
|
node4[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(node1, nexttok, 99); SpiceTokNoNewline();
|
strncpy(node1, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(node2, nexttok, 99); SpiceTokNoNewline();
|
strncpy(node2, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(node3, nexttok, 99); SpiceTokNoNewline();
|
strncpy(node3, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(node4, nexttok, 99); SpiceTokNoNewline();
|
strncpy(node4, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(node1, CurrentCell) == NULL) Node(node1);
|
if (LookupObject(node1, CurrentCell) == NULL) Node(node1);
|
||||||
if (LookupObject(node2, CurrentCell) == NULL) Node(node2);
|
if (LookupObject(node2, CurrentCell) == NULL) Node(node2);
|
||||||
|
|
@ -1298,7 +1298,7 @@ skip_ends:
|
||||||
|
|
||||||
model[0] = '\0';
|
model[0] = '\0';
|
||||||
if ((nexttok != NULL) && ((eqptr = strchr(nexttok, '=')) == NULL))
|
if ((nexttok != NULL) && ((eqptr = strchr(nexttok, '=')) == NULL))
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
|
|
||||||
/* Any other device properties? */
|
/* Any other device properties? */
|
||||||
while (nexttok != NULL) {
|
while (nexttok != NULL) {
|
||||||
|
|
@ -1334,7 +1334,7 @@ skip_ends:
|
||||||
else
|
else
|
||||||
strcpy(model, "t"); /* Use default xline model */
|
strcpy(model, "t"); /* Use default xline model */
|
||||||
|
|
||||||
snprintf(instname, 255, "%s:%s", model, inst);
|
snprintf(instname, MAX_STR_LEN-1, "%s:%s", model, inst);
|
||||||
|
|
||||||
if (usemodel)
|
if (usemodel)
|
||||||
Cell(instname, model, node1, node2, node3, node4);
|
Cell(instname, model, node1, node2, node3, node4);
|
||||||
|
|
@ -1347,20 +1347,20 @@ skip_ends:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (toupper(nexttok[0]) == 'L') { /* inductor */
|
else if (toupper(nexttok[0]) == 'L') { /* inductor */
|
||||||
char end_a[100], end_b[100];
|
char end_a[MAX_STR_LEN], end_b[MAX_STR_LEN];
|
||||||
int usemodel = 0;
|
int usemodel = 0;
|
||||||
end_a[99] = '\0';
|
end_a[MAX_STR_LEN-1] = '\0';
|
||||||
end_b[99] = '\0';
|
end_b[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(end_a, nexttok, 99); SpiceTokNoNewline();
|
strncpy(end_a, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(end_b, nexttok, 99); SpiceTokNoNewline();
|
strncpy(end_b, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(end_a, CurrentCell) == NULL) Node(end_a);
|
if (LookupObject(end_a, CurrentCell) == NULL) Node(end_a);
|
||||||
if (LookupObject(end_b, CurrentCell) == NULL) Node(end_b);
|
if (LookupObject(end_b, CurrentCell) == NULL) Node(end_b);
|
||||||
|
|
@ -1379,7 +1379,7 @@ skip_ends:
|
||||||
|
|
||||||
model[0] = '\0';
|
model[0] = '\0';
|
||||||
if ((nexttok != NULL) && ((eqptr = strchr(nexttok, '=')) == NULL))
|
if ((nexttok != NULL) && ((eqptr = strchr(nexttok, '=')) == NULL))
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
|
|
||||||
/* Any other device properties? */
|
/* Any other device properties? */
|
||||||
while (nexttok != NULL)
|
while (nexttok != NULL)
|
||||||
|
|
@ -1417,7 +1417,7 @@ skip_ends:
|
||||||
else
|
else
|
||||||
strcpy(model, "l"); /* Use default inductor model */
|
strcpy(model, "l"); /* Use default inductor model */
|
||||||
|
|
||||||
snprintf(instname, 255, "%s:%s", model, inst);
|
snprintf(instname, MAX_STR_LEN-1, "%s:%s", model, inst);
|
||||||
if (usemodel)
|
if (usemodel)
|
||||||
Cell(instname, model, end_a, end_b);
|
Cell(instname, model, end_a, end_b);
|
||||||
else
|
else
|
||||||
|
|
@ -1431,19 +1431,19 @@ skip_ends:
|
||||||
/* black-box subcircuits (class MODULE): V, I, E */
|
/* black-box subcircuits (class MODULE): V, I, E */
|
||||||
|
|
||||||
else if (toupper(nexttok[0]) == 'V') { /* voltage source */
|
else if (toupper(nexttok[0]) == 'V') { /* voltage source */
|
||||||
char pos[100], neg[100];
|
char pos[MAX_STR_LEN], neg[MAX_STR_LEN];
|
||||||
pos[99] = '\0';
|
pos[MAX_STR_LEN-1] = '\0';
|
||||||
neg[99] = '\0';
|
neg[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(pos, nexttok, 99); SpiceTokNoNewline();
|
strncpy(pos, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(neg, nexttok, 99); SpiceTokNoNewline();
|
strncpy(neg, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(pos, CurrentCell) == NULL) Node(pos);
|
if (LookupObject(pos, CurrentCell) == NULL) Node(pos);
|
||||||
|
|
@ -1499,19 +1499,19 @@ skip_ends:
|
||||||
DeleteProperties(&kvlist);
|
DeleteProperties(&kvlist);
|
||||||
}
|
}
|
||||||
else if (toupper(nexttok[0]) == 'I') { /* current source */
|
else if (toupper(nexttok[0]) == 'I') { /* current source */
|
||||||
char pos[100], neg[100];
|
char pos[MAX_STR_LEN], neg[MAX_STR_LEN];
|
||||||
pos[99] = '\0';
|
pos[MAX_STR_LEN-1] = '\0';
|
||||||
neg[99] = '\0';
|
neg[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(pos, nexttok, 99); SpiceTokNoNewline();
|
strncpy(pos, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(neg, nexttok, 99); SpiceTokNoNewline();
|
strncpy(neg, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(pos, CurrentCell) == NULL) Node(pos);
|
if (LookupObject(pos, CurrentCell) == NULL) Node(pos);
|
||||||
if (LookupObject(neg, CurrentCell) == NULL) Node(neg);
|
if (LookupObject(neg, CurrentCell) == NULL) Node(neg);
|
||||||
|
|
@ -1553,25 +1553,25 @@ skip_ends:
|
||||||
DeleteProperties(&kvlist);
|
DeleteProperties(&kvlist);
|
||||||
}
|
}
|
||||||
else if (toupper(nexttok[0]) == 'E') { /* controlled voltage source */
|
else if (toupper(nexttok[0]) == 'E') { /* controlled voltage source */
|
||||||
char pos[100], neg[100], ctrlp[100], ctrln[100];
|
char pos[MAX_STR_LEN], neg[MAX_STR_LEN], ctrlp[MAX_STR_LEN], ctrln[MAX_STR_LEN];
|
||||||
pos[99] = '\0';
|
pos[MAX_STR_LEN-1] = '\0';
|
||||||
neg[99] = '\0';
|
neg[MAX_STR_LEN-1] = '\0';
|
||||||
ctrlp[99] = '\0';
|
ctrlp[MAX_STR_LEN-1] = '\0';
|
||||||
ctrln[99] = '\0';
|
ctrln[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
}
|
}
|
||||||
strncpy(inst, nexttok + 1, 99); SpiceTokNoNewline();
|
strncpy(inst, nexttok + 1, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(pos, nexttok, 99); SpiceTokNoNewline();
|
strncpy(pos, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(neg, nexttok, 99); SpiceTokNoNewline();
|
strncpy(neg, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(ctrlp, nexttok, 99); SpiceTokNoNewline();
|
strncpy(ctrlp, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
if (nexttok == NULL) goto baddevice;
|
if (nexttok == NULL) goto baddevice;
|
||||||
strncpy(ctrln, nexttok, 99); SpiceTokNoNewline();
|
strncpy(ctrln, nexttok, MAX_STR_LEN-1); SpiceTokNoNewline();
|
||||||
|
|
||||||
/* make sure all the nodes exist */
|
/* make sure all the nodes exist */
|
||||||
if (LookupObject(pos, CurrentCell) == NULL) Node(pos);
|
if (LookupObject(pos, CurrentCell) == NULL) Node(pos);
|
||||||
|
|
@ -1619,11 +1619,11 @@ skip_ends:
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (toupper(nexttok[0]) == 'X') { /* subcircuit instances */
|
else if (toupper(nexttok[0]) == 'X') { /* subcircuit instances */
|
||||||
char instancename[100], subcktname[100];
|
char instancename[MAX_STR_LEN], subcktname[MAX_STR_LEN];
|
||||||
int itype, in_props;
|
int itype, in_props;
|
||||||
|
|
||||||
instancename[99] = '\0';
|
instancename[MAX_STR_LEN-1] = '\0';
|
||||||
subcktname[99] = '\0';
|
subcktname[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
struct portelement {
|
struct portelement {
|
||||||
char *name;
|
char *name;
|
||||||
|
|
@ -1633,8 +1633,8 @@ skip_ends:
|
||||||
struct portelement *head, *tail, *scan, *scannext;
|
struct portelement *head, *tail, *scan, *scannext;
|
||||||
struct objlist *obptr;
|
struct objlist *obptr;
|
||||||
|
|
||||||
snprintf(instancename, 99, "%s", nexttok + 1);
|
snprintf(instancename, MAX_STR_LEN-1, "%s", nexttok + 1);
|
||||||
strncpy(instancename, nexttok + 1, 99);
|
strncpy(instancename, nexttok + 1, MAX_STR_LEN-1);
|
||||||
if (!(*CellStackPtr)) {
|
if (!(*CellStackPtr)) {
|
||||||
CellDef(fname, filenum);
|
CellDef(fname, filenum);
|
||||||
PushStack(fname, CellStackPtr);
|
PushStack(fname, CellStackPtr);
|
||||||
|
|
@ -1742,14 +1742,14 @@ skip_ends:
|
||||||
/* names. */
|
/* names. */
|
||||||
|
|
||||||
if (strncmp(instancename, scan->name, strlen(scan->name))) {
|
if (strncmp(instancename, scan->name, strlen(scan->name))) {
|
||||||
snprintf(subcktname, 99, "%s:%s", scan->name, instancename);
|
snprintf(subcktname, MAX_STR_LEN-1, "%s:%s", scan->name, instancename);
|
||||||
strcpy(instancename, subcktname);
|
strcpy(instancename, subcktname);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
snprintf(subcktname, 99, "/%s", instancename);
|
snprintf(subcktname, MAX_STR_LEN-1, "/%s", instancename);
|
||||||
strcpy(instancename, subcktname);
|
strcpy(instancename, subcktname);
|
||||||
}
|
}
|
||||||
snprintf(subcktname, 99, "%s", scan->name);
|
snprintf(subcktname, MAX_STR_LEN-1, "%s", scan->name);
|
||||||
|
|
||||||
if (scan == head) {
|
if (scan == head) {
|
||||||
head = NULL;
|
head = NULL;
|
||||||
|
|
@ -1985,7 +1985,7 @@ void IncludeSpice(char *fname, int parent, struct cellstack **CellStackPtr,
|
||||||
int blackbox)
|
int blackbox)
|
||||||
{
|
{
|
||||||
int filenum = -1;
|
int filenum = -1;
|
||||||
char name[256];
|
char name[MAX_STR_LEN];
|
||||||
|
|
||||||
/* If fname does not begin with "/", then assume that it is */
|
/* If fname does not begin with "/", then assume that it is */
|
||||||
/* in the same relative path as its parent. */
|
/* in the same relative path as its parent. */
|
||||||
|
|
|
||||||
|
|
@ -816,13 +816,13 @@ void ReadVerilogFile(char *fname, int filenum, struct cellstack **CellStackPtr,
|
||||||
char devtype, in_module, in_param;
|
char devtype, in_module, in_param;
|
||||||
char *eqptr, *matchptr;
|
char *eqptr, *matchptr;
|
||||||
struct keyvalue *kvlist = NULL;
|
struct keyvalue *kvlist = NULL;
|
||||||
char inst[256], model[256], instname[256], portname[256], pkey[256];
|
char inst[MAX_STR_LEN], model[MAX_STR_LEN], instname[MAX_STR_LEN], portname[MAX_STR_LEN], pkey[MAX_STR_LEN];
|
||||||
struct nlist *tp;
|
struct nlist *tp;
|
||||||
struct objlist *parent, *sobj, *nobj, *lobj, *pobj;
|
struct objlist *parent, *sobj, *nobj, *lobj, *pobj;
|
||||||
|
|
||||||
inst[255] = '\0';
|
inst[MAX_STR_LEN-1] = '\0';
|
||||||
model[255] = '\0';
|
model[MAX_STR_LEN-1] = '\0';
|
||||||
instname[255] = '\0';
|
instname[MAX_STR_LEN-1] = '\0';
|
||||||
in_module = (char)0;
|
in_module = (char)0;
|
||||||
in_param = (char)0;
|
in_param = (char)0;
|
||||||
|
|
||||||
|
|
@ -947,7 +947,7 @@ void ReadVerilogFile(char *fname, int filenum, struct cellstack **CellStackPtr,
|
||||||
|
|
||||||
/* Check for existence of the cell. We may need to rename it. */
|
/* Check for existence of the cell. We may need to rename it. */
|
||||||
|
|
||||||
snprintf(model, 99, "%s", nexttok);
|
snprintf(model, MAX_STR_LEN-1, "%s", nexttok);
|
||||||
tp = LookupCellFile(nexttok, filenum);
|
tp = LookupCellFile(nexttok, filenum);
|
||||||
|
|
||||||
/* Check for name conflict with duplicate cell names */
|
/* Check for name conflict with duplicate cell names */
|
||||||
|
|
@ -1340,7 +1340,7 @@ skip_endmodule:
|
||||||
}
|
}
|
||||||
else if (match(nexttok, "wire") || match(nexttok, "assign")) { /* wire = node */
|
else if (match(nexttok, "wire") || match(nexttok, "assign")) { /* wire = node */
|
||||||
struct bus wb, wb2, *nb;
|
struct bus wb, wb2, *nb;
|
||||||
char nodename[128], noderoot[100];
|
char nodename[MAX_STR_LEN], noderoot[MAX_STR_LEN];
|
||||||
int is_wire = match(nexttok, "wire");
|
int is_wire = match(nexttok, "wire");
|
||||||
int j;
|
int j;
|
||||||
struct objlist *lhs, *rhs;
|
struct objlist *lhs, *rhs;
|
||||||
|
|
@ -1438,7 +1438,7 @@ skip_endmodule:
|
||||||
// "assign" using any boolean arithmetic is not structural verilog.
|
// "assign" using any boolean arithmetic is not structural verilog.
|
||||||
|
|
||||||
if (nexttok && match(nexttok, "=")) {
|
if (nexttok && match(nexttok, "=")) {
|
||||||
char assignname[128], assignroot[100];
|
char assignname[MAX_STR_LEN], assignroot[MAX_STR_LEN];
|
||||||
|
|
||||||
i = wb.start;
|
i = wb.start;
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
@ -1552,12 +1552,12 @@ skip_endmodule:
|
||||||
goto skip_endmodule;
|
goto skip_endmodule;
|
||||||
}
|
}
|
||||||
else { /* module instances */
|
else { /* module instances */
|
||||||
char instancename[100], modulename[100];
|
char instancename[MAX_STR_LEN], modulename[MAX_STR_LEN];
|
||||||
int itype, arraystart, arrayend, arraymax, arraymin;
|
int itype, arraystart, arrayend, arraymax, arraymin;
|
||||||
char ignore;
|
char ignore;
|
||||||
|
|
||||||
instancename[99] = '\0';
|
instancename[MAX_STR_LEN-1] = '\0';
|
||||||
modulename[99] = '\0';
|
modulename[MAX_STR_LEN-1] = '\0';
|
||||||
|
|
||||||
struct portelement {
|
struct portelement {
|
||||||
char *name; // Name of port in subcell
|
char *name; // Name of port in subcell
|
||||||
|
|
@ -1570,7 +1570,7 @@ skip_endmodule:
|
||||||
struct portelement *head, *tail, *scan, *last, *scannext;
|
struct portelement *head, *tail, *scan, *last, *scannext;
|
||||||
struct objlist *obptr;
|
struct objlist *obptr;
|
||||||
|
|
||||||
strncpy(modulename, nexttok, 99);
|
strncpy(modulename, nexttok, MAX_STR_LEN-1);
|
||||||
|
|
||||||
/* If module name is a verilog primitive, then treat the module as a */
|
/* If module name is a verilog primitive, then treat the module as a */
|
||||||
/* black box (this is not a complete list. Preferable to use hash */
|
/* black box (this is not a complete list. Preferable to use hash */
|
||||||
|
|
@ -1648,7 +1648,7 @@ nextinst:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(instancename, nexttok, 99);
|
strncpy(instancename, nexttok, MAX_STR_LEN-1);
|
||||||
/* Printf("Diagnostic: new instance is %s\n", instancename); */
|
/* Printf("Diagnostic: new instance is %s\n", instancename); */
|
||||||
SkipTokComments(VLOG_DELIMITERS);
|
SkipTokComments(VLOG_DELIMITERS);
|
||||||
|
|
||||||
|
|
@ -1698,7 +1698,7 @@ nextinst:
|
||||||
}
|
}
|
||||||
SkipTokComments(VLOG_PIN_CHECK_DELIMITERS);
|
SkipTokComments(VLOG_PIN_CHECK_DELIMITERS);
|
||||||
if (match(nexttok, ")")) {
|
if (match(nexttok, ")")) {
|
||||||
char localnet[100];
|
char localnet[MAX_STR_LEN];
|
||||||
// Empty parens, so create a new local node
|
// Empty parens, so create a new local node
|
||||||
savetok = (char)1;
|
savetok = (char)1;
|
||||||
if (arraystart != -1) {
|
if (arraystart != -1) {
|
||||||
|
|
@ -1830,7 +1830,7 @@ nextinst:
|
||||||
tp = LookupCellFile(modulename, filenum);
|
tp = LookupCellFile(modulename, filenum);
|
||||||
if (tp == NULL) {
|
if (tp == NULL) {
|
||||||
struct bus wb, pb;
|
struct bus wb, pb;
|
||||||
char defport[128];
|
char defport[MAX_STR_LEN];
|
||||||
|
|
||||||
Fprintf(stdout, "Creating placeholder cell definition for "
|
Fprintf(stdout, "Creating placeholder cell definition for "
|
||||||
"module %s.\n", modulename);
|
"module %s.\n", modulename);
|
||||||
|
|
@ -1921,7 +1921,7 @@ nextinst:
|
||||||
if (portstart != -1) {
|
if (portstart != -1) {
|
||||||
struct bus wb;
|
struct bus wb;
|
||||||
struct portelement *new_port;
|
struct portelement *new_port;
|
||||||
char vname[256];
|
char vname[MAX_STR_LEN];
|
||||||
int j, result;
|
int j, result;
|
||||||
struct objlist *bobj;
|
struct objlist *bobj;
|
||||||
char *bptr;
|
char *bptr;
|
||||||
|
|
@ -2074,7 +2074,7 @@ nextinst:
|
||||||
for (i = arraymin; i <= arraymax; i++) {
|
for (i = arraymin; i <= arraymax; i++) {
|
||||||
char *brackptr;
|
char *brackptr;
|
||||||
int j;
|
int j;
|
||||||
char locinst[128];
|
char locinst[MAX_STR_LEN];
|
||||||
|
|
||||||
if (i != -1)
|
if (i != -1)
|
||||||
sprintf(locinst, "%s[%d]", instancename, i);
|
sprintf(locinst, "%s[%d]", instancename, i);
|
||||||
|
|
@ -2109,7 +2109,7 @@ nextinst:
|
||||||
scan = scan->next;
|
scan = scan->next;
|
||||||
}
|
}
|
||||||
if (scan == NULL) {
|
if (scan == NULL) {
|
||||||
char localnet[100];
|
char localnet[MAX_STR_LEN];
|
||||||
|
|
||||||
/* Assume an implicit unconnected pin */
|
/* Assume an implicit unconnected pin */
|
||||||
sprintf(localnet, "_noconnect_%d_", localcount++);
|
sprintf(localnet, "_noconnect_%d_", localcount++);
|
||||||
|
|
@ -2129,7 +2129,7 @@ nextinst:
|
||||||
if (arraystart == -1) {
|
if (arraystart == -1) {
|
||||||
// Port may be an array
|
// Port may be an array
|
||||||
int range;
|
int range;
|
||||||
char pinname[128];
|
char pinname[MAX_STR_LEN];
|
||||||
|
|
||||||
// Check if port is an array
|
// Check if port is an array
|
||||||
if (obpinidx == -1) {
|
if (obpinidx == -1) {
|
||||||
|
|
@ -2154,7 +2154,7 @@ nextinst:
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Instance must be an array
|
// Instance must be an array
|
||||||
char netname[128];
|
char netname[MAX_STR_LEN];
|
||||||
int slice, portlen, siglen;
|
int slice, portlen, siglen;
|
||||||
|
|
||||||
/* Get the array size of the port for bit slicing */
|
/* Get the array size of the port for bit slicing */
|
||||||
|
|
@ -2204,7 +2204,7 @@ nextinst:
|
||||||
for (scan = head; scan; scan = scan->next) {
|
for (scan = head; scan; scan = scan->next) {
|
||||||
if (!(scan->flags & PORT_FOUND)) {
|
if (!(scan->flags & PORT_FOUND)) {
|
||||||
if (tp->flags & CELL_PLACEHOLDER) {
|
if (tp->flags & CELL_PLACEHOLDER) {
|
||||||
char tempname[128];
|
char tempname[MAX_STR_LEN];
|
||||||
int maxnode;
|
int maxnode;
|
||||||
|
|
||||||
/* This pin was probably implicit in the first call */
|
/* This pin was probably implicit in the first call */
|
||||||
|
|
@ -2432,7 +2432,7 @@ void IncludeVerilog(char *fname, int parent, struct cellstack **CellStackPtr,
|
||||||
int blackbox)
|
int blackbox)
|
||||||
{
|
{
|
||||||
int filenum = -1;
|
int filenum = -1;
|
||||||
char name[256];
|
char name[MAX_STR_LEN];
|
||||||
|
|
||||||
/* If fname does not begin with "/", then assume that it is */
|
/* If fname does not begin with "/", then assume that it is */
|
||||||
/* in the same relative path as its parent. */
|
/* in the same relative path as its parent. */
|
||||||
|
|
|
||||||
|
|
@ -65,10 +65,10 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
Widget toplevel = NULL;
|
Widget toplevel = NULL;
|
||||||
|
|
||||||
char GlobalFileName[100],
|
char GlobalFileName[MAX_STR_LEN],
|
||||||
GlobalCellName[100],
|
GlobalCellName[MAX_STR_LEN],
|
||||||
GlobalOtherName[100],
|
GlobalOtherName[MAX_STR_LEN],
|
||||||
GlobalDataName[100];
|
GlobalDataName[MAX_STR_LEN];
|
||||||
|
|
||||||
/*********************************************************
|
/*********************************************************
|
||||||
* Menu structure: attaches label string to a function,
|
* Menu structure: attaches label string to a function,
|
||||||
|
|
@ -1708,7 +1708,7 @@ void X_main_loop(int argc, char *argv[])
|
||||||
|
|
||||||
XmStringCharSet cs = "ISOLatin1";
|
XmStringCharSet cs = "ISOLatin1";
|
||||||
|
|
||||||
static char prompt_response[100];
|
static char prompt_response[MAX_STR_LEN];
|
||||||
int prompt_done;
|
int prompt_done;
|
||||||
int calling_editor; /* which string are we trying to get ? */
|
int calling_editor; /* which string are we trying to get ? */
|
||||||
#define FILE_NAME 1
|
#define FILE_NAME 1
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ void STRCPY(char *dest, char *source)
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char cell1[200], cell2[200];
|
char cell1[MAX_STR_LEN], cell2[MAX_STR_LEN];
|
||||||
|
|
||||||
Debug = 0;
|
Debug = 0;
|
||||||
if (argc != 1) {
|
if (argc != 1) {
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ void STRCPY(char *dest, char *source)
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
#ifndef HAVE_GETOPT
|
#ifndef HAVE_GETOPT
|
||||||
char cell1[200], cell2[200];
|
char cell1[MAX_STR_LEN], cell2[MAX_STR_LEN];
|
||||||
int filenum = -1;
|
int filenum = -1;
|
||||||
|
|
||||||
Debug = 0;
|
Debug = 0;
|
||||||
|
|
@ -67,7 +67,7 @@ int main(int argc, char *argv[])
|
||||||
STRCPY(cell2, ReadNetlist(argv[2], &filenum));
|
STRCPY(cell2, ReadNetlist(argv[2], &filenum));
|
||||||
if (argc == 5) STRCPY(cell2, argv[4]); /* if explicit cell name specified */
|
if (argc == 5) STRCPY(cell2, argv[4]); /* if explicit cell name specified */
|
||||||
#else
|
#else
|
||||||
char cell1[200], cell2[200];
|
char cell1[MAX_STR_LEN], cell2[MAX_STR_LEN];
|
||||||
int usage = 0;
|
int usage = 0;
|
||||||
int args;
|
int args;
|
||||||
int c;
|
int c;
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ void STRCPY(char *dest, char *source)
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char cellname[200];
|
char cellname[MAX_STR_LEN];
|
||||||
int filenum = -1;
|
int filenum = -1;
|
||||||
|
|
||||||
Debug = 0;
|
Debug = 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue