diff --git a/VERSION b/VERSION index 774046f..7defbbd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.5.261 +1.5.262 diff --git a/base/ext.c b/base/ext.c index 55fdf7d..e0d2f86 100644 --- a/base/ext.c +++ b/base/ext.c @@ -462,11 +462,6 @@ void simCell(char *name, int filenum) return; } - /* Check procedure disabled because new extensions to .sim format - * allow 'x' records to represent low-level components that are - * modeled as SPICE subcircuits. - */ -#if 0 /* check to see that all children have been dumped */ ob = tp->cell; while (ob != NULL) { @@ -478,7 +473,6 @@ void simCell(char *name, int filenum) } ob = ob->next; } -#endif SetExtension(FileName, name, SIM_EXTENSION); if (!OpenFile(FileName, 0)) { @@ -603,7 +597,7 @@ void simCell(char *name, int filenum) FlushString(" %g\n", v); break; - case CLASS_SUBCKT: case CLASS_MODULE: + case CLASS_MODULE: *writeLine = 'x'; *(writeLine + 1) = '\0'; mult = 1; @@ -812,7 +806,7 @@ char *ReadPrm(char *fname, int *fnum) PropertyDouble(devicename, filenum, "w", 0.01, 0.0); PropertyInteger(devicename, filenum, "nf", 0, 1); PropertyInteger(devicename, filenum, "m", 0, 1); - SetClass(CLASS_SUBCKT); + SetClass(CLASS_MODULE); EndCell(); ReopenCellDef(fname, filenum); } @@ -833,7 +827,7 @@ char *ReadPrm(char *fname, int *fnum) PropertyDouble(devicename, filenum, "w", 0.01, 0.0); PropertyInteger(devicename, filenum, "nf", 0, 1); PropertyInteger(devicename, filenum, "m", 0, 1); - SetClass(CLASS_SUBCKT); + SetClass(CLASS_MODULE); EndCell(); ReopenCellDef(fname, filenum); } @@ -855,7 +849,7 @@ char *ReadPrm(char *fname, int *fnum) PropertyDouble(devicename, filenum, "l", 0.01, 0.0); PropertyDouble(devicename, filenum, "w", 0.01, 0.0); PropertyInteger(devicename, filenum, "m", 0, 1); - SetClass(CLASS_SUBCKT); + SetClass(CLASS_MODULE); EndCell(); ReopenCellDef(fname, filenum); } @@ -877,7 +871,7 @@ char *ReadPrm(char *fname, int *fnum) PropertyDouble(devicename, filenum, "l", 0.01, 0.0); PropertyDouble(devicename, filenum, "w", 0.01, 0.0); PropertyInteger(devicename, filenum, "m", 0, 1); - SetClass(CLASS_SUBCKT); + SetClass(CLASS_MODULE); EndCell(); ReopenCellDef(fname, filenum); /* Reopen */ } @@ -893,7 +887,7 @@ char *ReadPrm(char *fname, int *fnum) Port("anode"); Port("cathode"); PropertyInteger(devicename, filenum, "m", 0, 1); - SetClass(CLASS_SUBCKT); + SetClass(CLASS_MODULE); EndCell(); ReopenCellDef(fname, filenum); /* Reopen */ } diff --git a/base/flatten.c b/base/flatten.c index a42e03c..3742931 100644 --- a/base/flatten.c +++ b/base/flatten.c @@ -136,17 +136,16 @@ void flattenCell(char *name, int file) ob2 = ob2->next; } - /* delete all port elements from child */ while (IsPort(ChildObjList)) { /* delete all ports at beginning of list */ if (Debug) Printf("deleting leading port from child\n"); tmp = ChildObjList->next; FreeObjectAndHash(ChildObjList, ChildCell); - ChildObjList = tmp; + if ((ChildObjList = tmp) == NULL) break; } tmp = ChildObjList; - while (tmp->next != NULL) { + while (tmp && (tmp->next != NULL)) { if (IsPort(tmp->next)) { ob2 = (tmp->next)->next; if (Debug) Printf("deleting a port from child\n"); diff --git a/tcltk/netgen.tcl.in b/tcltk/netgen.tcl.in index 7fff096..164850c 100644 --- a/tcltk/netgen.tcl.in +++ b/tcltk/netgen.tcl.in @@ -741,6 +741,19 @@ set auto_noexec 1 ;# don't EVER call UNIX commands w/o "shell" in front # Cross-Application section #---------------------------------------------------------------------- +# For use with open_pdks, set PDK_ROOT from the environment. If no +# such environment variable exists, check some common locations. + +if {[catch {set PDK_ROOT $::env(PDK_ROOT)}]} { + if {[file isdir /usr/local/share/pdk] == 1} { + set PDK_ROOT /usr/local/share/pdk + } elseif {[file isdir /usr/share/pdk] == 1} { + set PDK_ROOT /usr/share/pdk + } elseif {[file isdir /foss/pdk] == 1} { + set PDK_ROOT /foss/pdk + } +} + # Setup IRSIM assuming that the Tcl version is installed. # We do not need to rename procedure irsim to NULL because it is # redefined in a script, which simply overwrites the original.