diff --git a/base/flatten.h b/base/flatten.h index 605ab1b..d259998 100644 --- a/base/flatten.h +++ b/base/flatten.h @@ -1,6 +1,7 @@ #ifndef _FLATTEN_H #define _FLATTEN_H -void flattenCell(char *name, int file); +extern int UniquePins(char *name, int filenum); +extern void flattenCell(char *name, int file); -#endif /* _FLATTEN_H */ \ No newline at end of file +#endif /* _FLATTEN_H */ diff --git a/base/hash.h b/base/hash.h index be5a30d..087e90e 100644 --- a/base/hash.h +++ b/base/hash.h @@ -15,40 +15,40 @@ struct hashdict { }; -void InitializeHashTable(struct hashdict *dict, int size); -int RecurseHashTable(struct hashdict *dict, +extern void InitializeHashTable(struct hashdict *dict, int size); +extern int RecurseHashTable(struct hashdict *dict, int (*func)(struct hashlist *elem)); -int RecurseHashTableValue(struct hashdict *dict, +extern int RecurseHashTableValue(struct hashdict *dict, int (*func)(struct hashlist *elem, int), int); -struct nlist *RecurseHashTablePointer(struct hashdict *dict, +extern struct nlist *RecurseHashTablePointer(struct hashdict *dict, struct nlist *(*func)(struct hashlist *elem, void *), void *pointer); -void HashDelete(char *name, struct hashdict *dict); -void HashIntDelete(char *name, int value, struct hashdict *dict); -void HashKill(struct hashdict *dict); +extern void HashDelete(char *name, struct hashdict *dict); +extern void HashIntDelete(char *name, int value, struct hashdict *dict); +extern void HashKill(struct hashdict *dict); -int CountHashTableEntries(struct hashlist *p); -int CountHashTableBinsUsed(struct hashlist *p); +extern int CountHashTableEntries(struct hashlist *p); +extern int CountHashTableBinsUsed(struct hashlist *p); /* these functions return a pointer to a hash list element */ -struct hashlist *HashInstall(char *name, struct hashdict *dict); -struct hashlist *HashPtrInstall(char *name, void *ptr, +extern struct hashlist *HashInstall(char *name, struct hashdict *dict); +extern struct hashlist *HashPtrInstall(char *name, void *ptr, struct hashdict *dict); -struct hashlist *HashIntPtrInstall(char *name, int value, void *ptr, +extern struct hashlist *HashIntPtrInstall(char *name, int value, void *ptr, struct hashdict *dict); -struct hashlist *HashInt2PtrInstall(char *name, int c, void *ptr, +extern struct hashlist *HashInt2PtrInstall(char *name, int c, void *ptr, struct hashdict *dict); /* these functions return the ->ptr field of a struct hashlist */ -void *HashLookup(char *s, struct hashdict *dict); -void *HashIntLookup(char *s, int i, struct hashdict *dict); -void *HashInt2Lookup(char *s, int c, struct hashdict *dict); -void *HashFirst(struct hashdict *dict); -void *HashNext(struct hashdict *dict); +extern void *HashLookup(char *s, struct hashdict *dict); +extern void *HashIntLookup(char *s, int i, struct hashdict *dict); +extern void *HashInt2Lookup(char *s, int c, struct hashdict *dict); +extern void *HashFirst(struct hashdict *dict); +extern void *HashNext(struct hashdict *dict); -unsigned long hashnocase(char *s, int hashsize); -unsigned long my_hash(char *s, int hashsize); +extern unsigned long hashnocase(char *s, int hashsize); +extern unsigned long my_hash(char *s, int hashsize); extern int (*matchfunc)(char *, char *); /* matchintfunc() compares based on the name and the first */ diff --git a/base/netcmp.h b/base/netcmp.h index 62d8da0..da7a722 100644 --- a/base/netcmp.h +++ b/base/netcmp.h @@ -18,59 +18,59 @@ extern int InterruptPending; /* Exported procedures */ -void PrintElementClasses(struct ElementClass *EC, int type, int dolist); -void PrintNodeClasses(struct NodeClass *NC, int type, int dolist); -void SummarizeNodeClasses(struct NodeClass *NC); -void PrintPropertyResults(int do_list); -void PrintCoreStats(void); -void ResetState(void); -void CreateTwoLists(char *name1, int file1, char *name2, int file2, +extern void PrintElementClasses(struct ElementClass *EC, int type, int dolist); +extern void PrintNodeClasses(struct NodeClass *NC, int type, int dolist); +extern void SummarizeNodeClasses(struct NodeClass *NC); +extern void PrintPropertyResults(int do_list); +extern void PrintCoreStats(void); +extern void ResetState(void); +extern void CreateTwoLists(char *name1, int file1, char *name2, int file2, int dolist); -int Iterate(void); -int VerifyMatching(void); -void PrintAutomorphisms(void); -int ResolveAutomorphisms(void); -void PermuteAutomorphisms(void); -int Permute(void); -int PermuteSetup(char *model, int filenum, char *pin1, char *pin2); -int PermuteForget(char *model, int filenum, char *pin1, char *pin2); -int EquivalenceElements(char *name1, int file1, char *name2, int file2); -int EquivalenceNodes(char *name1, int file1, char *name2, int file2); -int EquivalenceClasses(char *name1, int file1, char *name2, int file2); -int IgnoreClass(char *name, int file, unsigned char type); -int MatchPins(struct nlist *tp1, struct nlist *tp2, int dolist); -int PropertyOptimize(struct objlist *ob, struct nlist *tp, int run, +extern int Iterate(void); +extern int VerifyMatching(void); +extern void PrintAutomorphisms(void); +extern int ResolveAutomorphisms(void); +extern void PermuteAutomorphisms(void); +extern int Permute(void); +extern int PermuteSetup(char *model, int filenum, char *pin1, char *pin2); +extern int PermuteForget(char *model, int filenum, char *pin1, char *pin2); +extern int EquivalenceElements(char *name1, int file1, char *name2, int file2); +extern int EquivalenceNodes(char *name1, int file1, char *name2, int file2); +extern int EquivalenceClasses(char *name1, int file1, char *name2, int file2); +extern int IgnoreClass(char *name, int file, unsigned char type); +extern int MatchPins(struct nlist *tp1, struct nlist *tp2, int dolist); +extern int PropertyOptimize(struct objlist *ob, struct nlist *tp, int run, int series, int comb); -int CreateCompareQueue(char *, int, char *, int); -int GetCompareQueueTop(char **, int *, char **, int *); -int PeekCompareQueueTop(char **, int *, char **, int *); -void RemoveCompareQueue(); +extern int CreateCompareQueue(char *, int, char *, int); +extern int GetCompareQueueTop(char **, int *, char **, int *); +extern int PeekCompareQueueTop(char **, int *, char **, int *); +extern void RemoveCompareQueue(); -void PrintIllegalClasses(); -void PrintIllegalNodeClasses(); -void PrintIllegalElementClasses(); +extern void PrintIllegalClasses(); +extern void PrintIllegalNodeClasses(); +extern void PrintIllegalElementClasses(); -void DumpNetwork(struct objlist *ob, int cidx); -void DumpNetworkAll(char *name, int file); +extern void DumpNetwork(struct objlist *ob, int cidx); +extern void DumpNetworkAll(char *name, int file); -void RegroupDataStructures(); -void FormatIllegalElementClasses(); -void FormatIllegalNodeClasses(); -int ResolveAutomorphsByProperty(); -int ResolveAutomorphsByPin(); -void SummarizeElementClasses(struct ElementClass *EC); -int remove_group_tags(struct objlist *ob); +extern void RegroupDataStructures(); +extern void FormatIllegalElementClasses(); +extern void FormatIllegalNodeClasses(); +extern int ResolveAutomorphsByProperty(); +extern int ResolveAutomorphsByPin(); +extern void SummarizeElementClasses(struct ElementClass *EC); +extern int remove_group_tags(struct objlist *ob); #ifdef TCL_NETGEN -int EquivalentNode(); -int EquivalentElement(); +extern int EquivalentNode(); +extern int EquivalentElement(); -void enable_interrupt(); -void disable_interrupt(); +extern void enable_interrupt(); +extern void disable_interrupt(); -Tcl_Obj *ListNodeClasses(int legal); -Tcl_Obj *ListElementClasses(int legal); +extern Tcl_Obj *ListNodeClasses(int legal); +extern Tcl_Obj *ListElementClasses(int legal); #endif diff --git a/base/netgen.h b/base/netgen.h index 982fc9b..b60893c 100644 --- a/base/netgen.h +++ b/base/netgen.h @@ -18,8 +18,6 @@ #define HORIZONTAL 1 #define VERTICAL 2 -int UniquePins(char *name, int filenum); - /* netgen.c */ extern void ReopenCellDef(char *name, int file); extern void CellDef(char *name, int file); diff --git a/base/objlist.c b/base/objlist.c index 2cdbb86..23a59dd 100644 --- a/base/objlist.c +++ b/base/objlist.c @@ -179,7 +179,7 @@ char *strsave(char *s) int match(char *st1, char *st2) { - if (0==strncmp(st1,st2,PATH_MAX)) return(1); + if (0==strcmp(st1,st2)) return(1); else return(0); } diff --git a/base/objlist.h b/base/objlist.h index b3d9f4c..6845a29 100644 --- a/base/objlist.h +++ b/base/objlist.h @@ -312,18 +312,18 @@ extern void GarbageCollect(void); extern void InitGarbageCollection(void); extern void AddToGarbageList(struct objlist *head); -void DeleteProperties(struct keyvalue **topptr); -void AddProperty(struct keyvalue **topptr, char *key, char *value); -void AddScaledProperty(struct keyvalue **topptr, char *key, char *value, double scale); -void DeleteProperties(struct keyvalue **topptr); -struct objlist *LinkProperties(char *model, struct keyvalue *topptr); +extern void DeleteProperties(struct keyvalue **topptr); +extern void AddProperty(struct keyvalue **topptr, char *key, char *value); +extern void AddScaledProperty(struct keyvalue **topptr, char *key, char *value, double scale); +extern void DeleteProperties(struct keyvalue **topptr); +extern struct objlist *LinkProperties(char *model, struct keyvalue *topptr); -void ClassDelete(char *class, int file); -void RemoveShorted(char *class, int file); -void CellRehash(char *name, char *newname, int file); +extern void ClassDelete(char *class, int file); +extern void RemoveShorted(char *class, int file); +extern void CellRehash(char *name, char *newname, int file); /* defined in netgen.c */ -int ConvertStringToInteger(char *string, int *ival); +extern int ConvertStringToInteger(char *string, int *ival); #ifdef HAVE_MALLINFO void PrintMemoryStats(void); diff --git a/base/tech.h b/base/tech.h index 82d31c4..c1aa8e3 100644 --- a/base/tech.h +++ b/base/tech.h @@ -1,8 +1,8 @@ #ifndef _TECH_H #define _TECH_H -int ActelLibPresent(void); -void ActelLib(void); -void VerilogTop(char *name, int fnum, char *filename); +extern int ActelLibPresent(void); +extern void ActelLib(void); +extern void VerilogTop(char *name, int fnum, char *filename); -#endif /* _TECH_H */ \ No newline at end of file +#endif /* _TECH_H */ diff --git a/base/xilinx.h b/base/xilinx.h index bb6b7c6..6f9f55c 100644 --- a/base/xilinx.h +++ b/base/xilinx.h @@ -1,10 +1,10 @@ #ifndef _XILINX_H #define _XILINX_H -void xilinx_sym(struct nlist *nl, struct objlist *gob); -void Xilinx(char *cellname, char *filename); -int xilinxCell(char *cell); -int XilinxLibPresent(void); -void XilinxLib(void); +extern void xilinx_sym(struct nlist *nl, struct objlist *gob); +extern void Xilinx(char *cellname, char *filename); +extern int xilinxCell(char *cell); +extern int XilinxLibPresent(void); +extern void XilinxLib(void); -#endif /* _XILINX_H */ \ No newline at end of file +#endif /* _XILINX_H */ diff --git a/tcltk/Makefile b/tcltk/Makefile index c637eee..e74b1b5 100644 --- a/tcltk/Makefile +++ b/tcltk/Makefile @@ -9,7 +9,7 @@ EXTRA_LIBS = ${MAIN_EXTRA_LIBS} DFLAGS += -DNETGEN_DATE="\"`date`\"" LIBS += -lm CLEANS += netgen.sh netgen.tcl netgenexec${EXEEXT} -CFLAGS += -I${NETGENDIR}/base -I./base +CFLAGS += -I${NETGENDIR}/base TCL_FILES = \ $(DESTDIR)${INSTALL_TCLDIR}/tkcon.tcl \ diff --git a/tcltk/tclnetgen.c b/tcltk/tclnetgen.c index c59e16c..aa6c438 100644 --- a/tcltk/tclnetgen.c +++ b/tcltk/tclnetgen.c @@ -34,6 +34,7 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "hash.h" #include "xilinx.h" #include "tech.h" +#include "flatten.h" #ifndef TRUE #define TRUE 1