mirror of
https://github.com/RTimothyEdwards/netgen.git
synced 2026-08-28 00:47:32 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2662b443f | ||
|
|
24c6eb4cb9 | ||
|
|
9048191486 | ||
|
|
1acef6c52c | ||
|
|
72d7d55bbe | ||
|
|
7459b6dfe8 | ||
|
|
04163aedcc | ||
|
|
f7d35f9cca | ||
|
|
601277e539 | ||
|
|
73344329f8 |
+24
-20
@@ -300,8 +300,6 @@ int flattenInstancesOf(char *name, int fnum, char *instance)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
/* Placeholder cells must not be flattened */
|
||||
if (ThisCell->flags & CELL_PLACEHOLDER) return 0;
|
||||
|
||||
FreeNodeNames(ThisCell);
|
||||
|
||||
@@ -339,6 +337,10 @@ int flattenInstancesOf(char *name, int fnum, char *instance)
|
||||
LastObj = ParentParams;
|
||||
continue;
|
||||
}
|
||||
if (ChildCell->flags & CELL_PLACEHOLDER) {
|
||||
LastObj = ParentParams;
|
||||
continue; // Placeholder cells must not be flattened
|
||||
}
|
||||
if (ChildCell == ThisCell) {
|
||||
LastObj = ParentParams;
|
||||
continue; // Avoid infinite loop
|
||||
@@ -1753,8 +1755,8 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
|
||||
Fprintf(stdout, "Flattening instances of %s in cell %s (%d)"
|
||||
" makes a better match\n", ecomp->cell1->name,
|
||||
name1, file1);
|
||||
flattenInstancesOf(name1, file1, ecomp->cell1->name);
|
||||
modified1++;
|
||||
if (flattenInstancesOf(name1, file1, ecomp->cell1->name) > 0)
|
||||
modified1++;
|
||||
}
|
||||
else if (ecomp->cell1 && (ecomp->num1 > 0)) {
|
||||
Fprintf(stdout, "Flattening instances of %s in cell %s (%d)"
|
||||
@@ -1766,8 +1768,8 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
|
||||
Fprintf(stdout, "Flattening instances of %s in cell %s (%d)"
|
||||
" makes a better match\n", ecomp->cell2->name,
|
||||
name2, file2);
|
||||
flattenInstancesOf(name2, file2, ecomp->cell2->name);
|
||||
modified2++;
|
||||
if (flattenInstancesOf(name2, file2, ecomp->cell2->name) > 0)
|
||||
modified2++;
|
||||
}
|
||||
else if (ecomp->cell2 && (ecomp->num2 > 0)) {
|
||||
Fprintf(stdout, "Flattening instances of %s in cell %s (%d)"
|
||||
@@ -1861,8 +1863,8 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
|
||||
Fprintf(stdout, "Flattening instances of %s in cell %s (%d)"
|
||||
" makes a better match\n", ecomp->cell2->name,
|
||||
name2, file2);
|
||||
flattenInstancesOf(name2, file2, ecomp->cell2->name);
|
||||
modified2++;
|
||||
if (flattenInstancesOf(name2, file2, ecomp->cell2->name) > 0)
|
||||
modified2++;
|
||||
}
|
||||
else if (ecomp->cell2) {
|
||||
Fprintf(stdout, "Flattening instances of %s in cell %s (%d)"
|
||||
@@ -1932,8 +1934,8 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
|
||||
Fprintf(stdout, "Flattening instances of %s in cell %s (%d)"
|
||||
" makes a better match\n", ecomp->cell1->name,
|
||||
name1, file1);
|
||||
flattenInstancesOf(name1, file1, ecomp->cell1->name);
|
||||
modified1++;
|
||||
if (flattenInstancesOf(name1, file1, ecomp->cell1->name) > 0)
|
||||
modified1++;
|
||||
}
|
||||
else if (ecomp->cell1) {
|
||||
Fprintf(stdout, "Flattening instances of %s in cell %s (%d)"
|
||||
@@ -2295,11 +2297,12 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
|
||||
Fprintf(stdout, "Flattening instances of %s in cell"
|
||||
" %s (%d) makes a better match\n",
|
||||
ecompX0->cell1->name, name1, file1);
|
||||
flattenInstancesOf(name1, file1,
|
||||
ecompX0->cell1->name);
|
||||
ecompX0->num1 = 0;
|
||||
ecomp0X->num1 += ecompX0->num1;
|
||||
modified1++;
|
||||
if (flattenInstancesOf(name1, file1,
|
||||
ecompX0->cell1->name) > 0) {
|
||||
ecompX0->num1 = 0;
|
||||
ecomp0X->num1 += ecompX0->num1;
|
||||
modified1++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2331,11 +2334,12 @@ PrematchLists(char *name1, int file1, char *name2, int file2)
|
||||
Fprintf(stdout, "Flattening instances of %s in cell"
|
||||
" %s (%d) makes a better match\n",
|
||||
ecomp0X->cell2->name, name2, file2);
|
||||
flattenInstancesOf(name2, file2,
|
||||
ecomp0X->cell2->name);
|
||||
ecomp0X->num2 = 0;
|
||||
ecompX0->num2 += ecomp0X->num2;
|
||||
modified2++;
|
||||
if (flattenInstancesOf(name2, file2,
|
||||
ecomp0X->cell2->name) > 0) {
|
||||
ecomp0X->num2 = 0;
|
||||
ecompX0->num2 += ecomp0X->num2;
|
||||
modified2++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Fprintf(stdout, "Flattening instances of %s in "
|
||||
|
||||
+2
-1
@@ -24,6 +24,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#include <stdarg.h>
|
||||
#include <setjmp.h>
|
||||
#include <signal.h>
|
||||
#include <strings.h> /* for strncasecmp() */
|
||||
#include <time.h> /* for time() as a seed for random number generator */
|
||||
#include <limits.h>
|
||||
#include <math.h> /* for fabs() */
|
||||
@@ -3581,7 +3582,7 @@ int FlattenUnmatched(struct nlist *tc, char *parent, int stoplevel, int loclevel
|
||||
tc->name, parent, tc->file);
|
||||
changed = flattenInstancesOf(parent, tc->file, tc->name);
|
||||
Fprintf(stdout, "(%d instance%s)\n", changed, ((changed == 1) ? "" : "s"));
|
||||
return 1;
|
||||
return (changed != 0);
|
||||
}
|
||||
|
||||
if (tc->cell == NULL) return 0;
|
||||
|
||||
@@ -25,6 +25,8 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h> /* for strtof() */
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <ctype.h> /* toupper() */
|
||||
#ifdef IBMPC
|
||||
#include <alloc.h>
|
||||
|
||||
@@ -21,6 +21,9 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#include "config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <ctype.h>
|
||||
#if 0
|
||||
#include <stdarg.h> /* what about varargs, like in pdutils.c ??? */
|
||||
#endif
|
||||
|
||||
+2
-1
@@ -68,6 +68,7 @@ LIB_SPECS = @LIB_SPECS@
|
||||
LIB_SPECS_NOSTUB = @LIB_SPECS_NOSTUB@
|
||||
WISH_EXE = @WISH_EXE@
|
||||
TCL_LIB_DIR = @TCL_LIB_DIR@
|
||||
EXTRA_CFLAGS =
|
||||
|
||||
CC = @CC@
|
||||
CPP = @CPP@
|
||||
@@ -76,7 +77,7 @@ CXX = @CXX@
|
||||
CPPFLAGS = -I. -I${NETGENDIR} @CPPFLAGS@
|
||||
DFLAGS = @extra_defs@ @stub_defs@ @DEFS@ -DSHDLIB_EXT=\"@SHDLIB_EXT@\" -DNDEBUG
|
||||
DFLAGS_NOSTUB = @extra_defs@ @DEFS@ -DSHDLIB_EXT=\"@SHDLIB_EXT@\" -DNDEBUG
|
||||
CFLAGS = @CFLAGS@ @SHLIB_CFLAGS@ @INC_SPECS@
|
||||
CFLAGS = @CFLAGS@ @SHLIB_CFLAGS@ @INC_SPECS@ ${EXTRA_CFLAGS}
|
||||
|
||||
DEPEND_FILE = Depend
|
||||
DEPEND_FLAG = @DEPEND_FLAG@
|
||||
|
||||
+4
-4
@@ -429,7 +429,7 @@ proc netgen::lvs { name1 name2 {setupfile setup.tcl} {logfile comp.out} args} {
|
||||
set file1 $name1
|
||||
set cell1 $name1
|
||||
}
|
||||
puts stdout "Reading netlist file $file1"
|
||||
puts stdout "Reading netlist file $file1 for $name1"
|
||||
set fnum1 [netgen::readnet $file1]
|
||||
} else {
|
||||
set cell1 [lindex $flist1 0]
|
||||
@@ -446,7 +446,7 @@ proc netgen::lvs { name1 name2 {setupfile setup.tcl} {logfile comp.out} args} {
|
||||
set file2 $name2
|
||||
set cell2 $name2
|
||||
}
|
||||
puts stdout "Reading netlist file $file2"
|
||||
puts stdout "Reading netlist file $file2 for $name2"
|
||||
set fnum2 [netgen::readnet $file2]
|
||||
} else {
|
||||
set cell2 [lindex $flist2 0]
|
||||
@@ -461,7 +461,7 @@ proc netgen::lvs { name1 name2 {setupfile setup.tcl} {logfile comp.out} args} {
|
||||
}
|
||||
|
||||
set clist1 [cells list $fnum1]
|
||||
set cidx [lsearch -regexp $clist1 ^$cell1$]
|
||||
set cidx [lsearch -exact $clist1 $cell1]
|
||||
if {$cidx < 0} {
|
||||
puts stderr "Cannot find cell $cell1 in file $file1"
|
||||
return
|
||||
@@ -469,7 +469,7 @@ proc netgen::lvs { name1 name2 {setupfile setup.tcl} {logfile comp.out} args} {
|
||||
set cell1 [lindex $clist1 $cidx]
|
||||
}
|
||||
set clist2 [cells list $fnum2]
|
||||
set cidx [lsearch -regexp $clist2 ^$cell2$]
|
||||
set cidx [lsearch -exact $clist2 $cell2]
|
||||
if {$cidx < 0} {
|
||||
puts stderr "Cannot find cell $cell2 in file $file2"
|
||||
return
|
||||
|
||||
+20
-11
@@ -21,6 +21,8 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h> /* for getenv */
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <stdarg.h> /* for va_list */
|
||||
|
||||
#include <tcl.h>
|
||||
|
||||
@@ -43,6 +45,10 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#if TCL_MAJOR_VERSION < 9
|
||||
typedef int Tcl_Size;
|
||||
#endif
|
||||
|
||||
/*-----------------------*/
|
||||
/* Tcl 8.4 compatibility */
|
||||
/*-----------------------*/
|
||||
@@ -283,7 +289,7 @@ GetTopCell(int fnum)
|
||||
int
|
||||
CommonGetFilenameOrFile(Tcl_Interp *interp, Tcl_Obj *fobj, int *fnumptr)
|
||||
{
|
||||
int result, llen;
|
||||
int result;
|
||||
int fnum, ftest;
|
||||
char *filename;
|
||||
struct nlist *tp;
|
||||
@@ -366,7 +372,8 @@ CommonParseCell(Tcl_Interp *interp, Tcl_Obj *objv,
|
||||
struct nlist **tpr, int *fnumptr)
|
||||
{
|
||||
Tcl_Obj *tobj, *fobj;
|
||||
int result, llen;
|
||||
int result;
|
||||
Tcl_Size llen;
|
||||
int fnum, ftest, index;
|
||||
char *filename, *cellname;
|
||||
struct nlist *tp, *tp2;
|
||||
@@ -1016,7 +1023,7 @@ _netgen_flatten(ClientData clientData,
|
||||
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
|
||||
{
|
||||
char *repstr, *file;
|
||||
int result, llen, filenum;
|
||||
int result, filenum;
|
||||
struct nlist *tp, *tp2, *tptop;
|
||||
|
||||
if ((objc < 2) || (objc > 4)) {
|
||||
@@ -2114,7 +2121,7 @@ _netcmp_compare(ClientData clientData,
|
||||
int fnum1, fnum2, dolist = 0;
|
||||
int dohierarchy = FALSE;
|
||||
int assignonly = FALSE;
|
||||
int argstart = 1, qresult, llen, result;
|
||||
int argstart = 1, qresult, result;
|
||||
int hascontents1, hascontents2;
|
||||
struct Correspond *nextcomp;
|
||||
struct nlist *tp1 = NULL, *tp2 = NULL;
|
||||
@@ -2828,7 +2835,7 @@ _netcmp_global(ClientData clientData,
|
||||
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
|
||||
{
|
||||
char *filename, *cellname, *pattern;
|
||||
int numchanged = 0, p, fnum, llen, result;
|
||||
int numchanged = 0, p, fnum, result;
|
||||
struct nlist *tp;
|
||||
|
||||
if (objc < 2) {
|
||||
@@ -2925,7 +2932,8 @@ _netcmp_equate(ClientData clientData,
|
||||
struct ElementClass *saveEclass = NULL;
|
||||
struct NodeClass *saveNclass = NULL;
|
||||
int file1, file2;
|
||||
int i, l1, l2, ltest, lent, dolist = 0, doforce = 0, dounique = 0;
|
||||
int i, dolist = 0, doforce = 0, dounique = 0;
|
||||
Tcl_Size l1, l2, lent, ltest;
|
||||
Tcl_Obj *tobj1, *tobj2, *tobj3;
|
||||
|
||||
while (objc > 1) {
|
||||
@@ -3426,10 +3434,11 @@ int
|
||||
_netcmp_property(ClientData clientData,
|
||||
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
|
||||
{
|
||||
int fnum, i, llen;
|
||||
int fnum, i;
|
||||
struct nlist *tp;
|
||||
struct property *kl, *kllast, *klnext;
|
||||
Tcl_Obj *tobj1, *tobj2, *tobj3;
|
||||
Tcl_Size llen;
|
||||
double dval;
|
||||
int ival, argstart;
|
||||
|
||||
@@ -4485,14 +4494,14 @@ void tcl_vprintf(FILE *f, const char *fmt, va_list args_in)
|
||||
|
||||
void tcl_stdflush(FILE *f)
|
||||
{
|
||||
Tcl_SavedResult state;
|
||||
Tcl_InterpState state;
|
||||
static char stdstr[] = "::flush stdxxx";
|
||||
char *stdptr = stdstr + 11;
|
||||
|
||||
Tcl_SaveResult(netgeninterp, &state);
|
||||
state = Tcl_SaveInterpState(netgeninterp, TCL_OK);
|
||||
strcpy(stdptr, (f == stderr) ? "err" : "out");
|
||||
Tcl_Eval(netgeninterp, stdstr);
|
||||
Tcl_RestoreResult(netgeninterp, &state);
|
||||
Tcl_RestoreInterpState(netgeninterp, state);
|
||||
}
|
||||
|
||||
/*------------------------------------------------------*/
|
||||
@@ -4561,7 +4570,7 @@ int Tclnetgen_Init(Tcl_Interp *interp)
|
||||
/* Remember the interpreter */
|
||||
netgeninterp = interp;
|
||||
|
||||
if (Tcl_InitStubs(interp, "8.5", 0) == NULL) return TCL_ERROR;
|
||||
if (Tcl_InitStubs(interp, TCL_VERSION, 0) == NULL) return TCL_ERROR;
|
||||
|
||||
for (n = 0; netgen_cmds[n].name != NULL; n++) {
|
||||
sprintf(keyword, "netgen::%s", netgen_cmds[n].name);
|
||||
|
||||
Reference in New Issue
Block a user