diff --git a/vpi/Makefile.in b/vpi/Makefile.in index cca166dc9..766fa9a98 100644 --- a/vpi/Makefile.in +++ b/vpi/Makefile.in @@ -18,7 +18,7 @@ # 59 Temple Place - Suite 330 # Boston, MA 02111-1307, USA # -#ident "$Id: Makefile.in,v 1.14 2000/10/04 02:01:40 steve Exp $" +#ident "$Id: Makefile.in,v 1.15 2000/10/04 02:37:44 steve Exp $" # # SHELL = /bin/sh @@ -58,13 +58,11 @@ sys_readmem.o sys_readmem_lex.o sys_vcd.o ifeq (@CYGWIN@,yes) SYSTEM_VPI_LDFLAGS=-Wl,--enable-auto-image-base -L../vvm -lvvm -lvpip - VPIP_LIBS = ../vvm/libvvm.a ../vvm/libvpip.a else SYSTEM_VPI_LDFLAGS= - VPIP_LIBS = endif -system.vpi: $O $(VPIP_LIBS) +system.vpi: $O $(CC) -shared -o $@ $O $(SYSTEM_VPI_LDFLAGS) sys_readmem_lex.c: sys_readmem_lex.lex diff --git a/vpi/vpi_user.h b/vpi/vpi_user.h index f6b151161..03347bb03 100644 --- a/vpi/vpi_user.h +++ b/vpi/vpi_user.h @@ -19,27 +19,16 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) && !defined(macintosh) -#ident "$Id: vpi_user.h,v 1.22 2000/10/03 16:15:35 steve Exp $" +#ident "$Id: vpi_user.h,v 1.23 2000/10/04 02:37:44 steve Exp $" #endif #if defined(__CYGWIN32__) -# define DLLIMPORT __declspec(dllimport) -# define DLLEXPORT __declspec(dllexport) +# define DLLEXPORT __declspec(dllexport) #else -# define DLLIMPORT # define DLLEXPORT #endif -#undef VPIP_STORAGE_CLASS -#if defined(__build_vpip) -# define VPIP_STORAGE_CLASS DLLEXPORT -#else -# define VPIP_STORAGE_CLASS DLLIMPORT -#endif - -#define VPIP_EXTERN extern VPIP_STORAGE_CLASS - #ifdef __cplusplus extern "C" { #endif @@ -180,13 +169,13 @@ typedef struct t_vpi_value { /* VPI FUNCTIONS */ -VPIP_EXTERN void vpi_register_systf(const struct t_vpi_systf_data*ss); -VPIP_EXTERN void vpi_printf(const char*fmt, ...); +extern void vpi_register_systf(const struct t_vpi_systf_data*ss); +extern void vpi_printf(const char*fmt, ...); -VPIP_EXTERN unsigned int vpi_mcd_close(unsigned int mcd); -VPIP_EXTERN char *vpi_mcd_name(unsigned int mcd); -VPIP_EXTERN unsigned int vpi_mcd_open(char *name); -VPIP_EXTERN int vpi_mcd_printf(unsigned int mcd, const char*fmt, ...); +extern unsigned int vpi_mcd_close(unsigned int mcd); +extern char *vpi_mcd_name(unsigned int mcd); +extern unsigned int vpi_mcd_open(char *name); +extern int vpi_mcd_printf(unsigned int mcd, const char*fmt, ...); /* * support for VPI callback functions. @@ -226,8 +215,8 @@ typedef struct t_cb_data { #define cbInteractiveScopeChange 23 #define cbUnresolvedSystf 24 -VPIP_EXTERN vpiHandle vpi_register_cb(p_cb_data data); -VPIP_EXTERN int vpi_remove_cb(vpiHandle ref); +extern vpiHandle vpi_register_cb(p_cb_data data); +extern int vpi_remove_cb(vpiHandle ref); /* * This function allows a vpi application to control the simulation @@ -244,26 +233,26 @@ VPIP_EXTERN int vpi_remove_cb(vpiHandle ref); * vpiReset - * vpiSetInteractiveScope - */ -VPIP_EXTERN void vpi_sim_control(int operation, ...); +extern void vpi_sim_control(int operation, ...); #define vpiStop 1 #define vpiFinish 2 #define vpiReset 3 #define vpiSetInteractiveScope 4 -VPIP_EXTERN vpiHandle vpi_handle(int type, vpiHandle ref); -VPIP_EXTERN vpiHandle vpi_iterate(int type, vpiHandle ref); -VPIP_EXTERN vpiHandle vpi_scan(vpiHandle iter); -VPIP_EXTERN vpiHandle vpi_handle_by_index(vpiHandle ref, int index); +extern vpiHandle vpi_handle(int type, vpiHandle ref); +extern vpiHandle vpi_iterate(int type, vpiHandle ref); +extern vpiHandle vpi_scan(vpiHandle iter); +extern vpiHandle vpi_handle_by_index(vpiHandle ref, int index); -VPIP_EXTERN void vpi_get_time(vpiHandle obj, s_vpi_time*t); -VPIP_EXTERN int vpi_get(int property, vpiHandle ref); -VPIP_EXTERN char* vpi_get_str(int property, vpiHandle ref); -VPIP_EXTERN void vpi_get_value(vpiHandle expr, p_vpi_value value); -VPIP_EXTERN vpiHandle vpi_put_value(vpiHandle obj, p_vpi_value value, +extern void vpi_get_time(vpiHandle obj, s_vpi_time*t); +extern int vpi_get(int property, vpiHandle ref); +extern char* vpi_get_str(int property, vpiHandle ref); +extern void vpi_get_value(vpiHandle expr, p_vpi_value value); +extern vpiHandle vpi_put_value(vpiHandle obj, p_vpi_value value, p_vpi_time when, int flags); -VPIP_EXTERN int vpi_free_object(vpiHandle ref); -VPIP_EXTERN int vpi_get_vlog_info(p_vpi_vlog_info vlog_info_p); +extern int vpi_free_object(vpiHandle ref); +extern int vpi_get_vlog_info(p_vpi_vlog_info vlog_info_p); /* This is the table of startup routines included in each module. */ @@ -275,6 +264,9 @@ extern DLLEXPORT void (*vlog_startup_routines[])(); /* * $Log: vpi_user.h,v $ + * Revision 1.23 2000/10/04 02:37:44 steve + * Use .def file instead of _dllexport. + * * Revision 1.22 2000/10/03 16:15:35 steve * Cleanup build of VPI modules under Cygwin. (Venkat) * diff --git a/vvm/Makefile.in b/vvm/Makefile.in index 9c66a8d37..0c5b81bd1 100644 --- a/vvm/Makefile.in +++ b/vvm/Makefile.in @@ -18,7 +18,7 @@ # 59 Temple Place - Suite 330 # Boston, MA 02111-1307, USA # -#ident "$Id: Makefile.in,v 1.34 2000/10/03 16:15:35 steve Exp $" +#ident "$Id: Makefile.in,v 1.35 2000/10/04 02:37:44 steve Exp $" # # SHELL = /bin/sh @@ -35,7 +35,7 @@ bindir = $(exec_prefix)/bin libdir = $(exec_prefix)/lib includedir = $(prefix)/include -CC = @CC@ -I$(srcdir) -I$(srcdir)/../vpi -D__build_vpip +CC = @CC@ -I$(srcdir) -I$(srcdir)/../vpi CXX = @CXX@ -I$(srcdir) -I$(srcdir)/../vpi INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -61,14 +61,14 @@ vpi_mcd.o vpi_vlog_info.o ifeq (@CYGWIN@,yes) # In the DOS world, we need to split out the vpip object file. -all: libvvm.a libvpip.a +all: libvvm.a libvpip.a vpip.dll libvvm.a: $O rm -f $@ ar cvq $@ $O libvpip.a vpip.dll: $P - $(CC) -shared -Wl,--enable-auto-image-base,--out-implib,libvpip.a -o vpip.dll $P + $(CC) -shared -Wl,--enable-auto-image-base,--out-implib,libvpip.a -o vpip.dll vpip.def $P else diff --git a/vvm/vpi_priv.h b/vvm/vpi_priv.h index 8a112eed5..d409643e3 100644 --- a/vvm/vpi_priv.h +++ b/vvm/vpi_priv.h @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) && !defined(macintosh) -#ident "$Id: vpi_priv.h,v 1.26 2000/10/03 16:15:35 steve Exp $" +#ident "$Id: vpi_priv.h,v 1.27 2000/10/04 02:37:44 steve Exp $" #endif /* @@ -107,13 +107,13 @@ typedef unsigned char vpip_bit_t; /* Take as input an array of bits, and return the resolved value. The result accounts for the strengths involved. */ -VPIP_EXTERN vpip_bit_t vpip_pair_resolve(vpip_bit_t a, vpip_bit_t b); -VPIP_EXTERN vpip_bit_t vpip_bits_resolve(const vpip_bit_t*bits, unsigned nbits); +extern vpip_bit_t vpip_pair_resolve(vpip_bit_t a, vpip_bit_t b); +extern vpip_bit_t vpip_bits_resolve(const vpip_bit_t*bits, unsigned nbits); -VPIP_EXTERN void vpip_bits_get_value(const vpip_bit_t*bits, unsigned nbits, +extern void vpip_bits_get_value(const vpip_bit_t*bits, unsigned nbits, s_vpi_value*vp); -VPIP_EXTERN void vpip_bits_set_value(vpip_bit_t*bits, unsigned nbits, +extern void vpip_bits_set_value(vpip_bit_t*bits, unsigned nbits, s_vpi_value*vp); /* @@ -203,7 +203,7 @@ struct __vpiNull { struct __vpiHandle base; }; -VPIP_EXTERN struct __vpiNull vpip_null; +extern struct __vpiNull vpip_null; /* * This type represents the handle to a Verilog scope. These include @@ -219,7 +219,7 @@ struct __vpiScope { struct __vpiHandle**intern; unsigned nintern; }; -VPIP_EXTERN void vpip_attach_to_scope(struct __vpiScope*scope, vpiHandle obj); +extern void vpip_attach_to_scope(struct __vpiScope*scope, vpiHandle obj); /* @@ -241,8 +241,8 @@ struct __vpiSignal { }; -VPIP_EXTERN const struct __vpirt vpip_systask_rt; -VPIP_EXTERN const struct __vpirt vpip_sysfunc_rt; +extern const struct __vpirt vpip_systask_rt; +extern const struct __vpirt vpip_sysfunc_rt; struct __vpiSysTaskCall { struct __vpiHandle base; @@ -293,35 +293,35 @@ struct __vpiNumberConst { * to allocate the memory for the handle. The result is the vpiHandle * of the constructed object. */ -VPIP_EXTERN vpiHandle vpip_make_iterator(unsigned nargs, vpiHandle*args); -VPIP_EXTERN vpiHandle vpip_make_net(struct __vpiSignal*ref, const char*name, +extern vpiHandle vpip_make_iterator(unsigned nargs, vpiHandle*args); +extern vpiHandle vpip_make_net(struct __vpiSignal*ref, const char*name, vpip_bit_t*bits, unsigned nbits); -VPIP_EXTERN vpiHandle vpip_make_scope(struct __vpiScope*ref, +extern vpiHandle vpip_make_scope(struct __vpiScope*ref, int type_code, const char*name); -VPIP_EXTERN vpiHandle vpip_make_string_const(struct __vpiStringConst*ref, +extern vpiHandle vpip_make_string_const(struct __vpiStringConst*ref, const char*val); -VPIP_EXTERN vpiHandle vpip_make_number_const(struct __vpiNumberConst*ref, +extern vpiHandle vpip_make_number_const(struct __vpiNumberConst*ref, const vpip_bit_t*bits, unsigned nbits); -VPIP_EXTERN vpiHandle vpip_make_memory(struct __vpiMemory*ref, const char*name, +extern vpiHandle vpip_make_memory(struct __vpiMemory*ref, const char*name, unsigned width, unsigned size); -VPIP_EXTERN vpiHandle vpip_make_reg(struct __vpiSignal*ref, const char*name, +extern vpiHandle vpip_make_reg(struct __vpiSignal*ref, const char*name, vpip_bit_t*bits, unsigned nbits); -VPIP_EXTERN vpiHandle vpip_make_time_var(struct __vpiTimeVar*ref, +extern vpiHandle vpip_make_time_var(struct __vpiTimeVar*ref, const char*val); /* Use this function to call a registered task. */ -VPIP_EXTERN void vpip_calltask(const char*name, unsigned nparms, vpiHandle*parms); +extern void vpip_calltask(const char*name, unsigned nparms, vpiHandle*parms); /* * This calls a system function with a given name. The return value is * taken by the res[] array. */ -VPIP_EXTERN void vpip_callfunc(const char*name, unsigned nres, vpip_bit_t*res, +extern void vpip_callfunc(const char*name, unsigned nres, vpip_bit_t*res, unsigned nparms, vpiHandle*parms); -VPIP_EXTERN void vpip_run_value_changes(struct __vpiSignal*sig); +extern void vpip_run_value_changes(struct __vpiSignal*sig); /* * The simulation object holds the current state of the @@ -347,13 +347,13 @@ struct vpip_simulation { short time_precision; }; -VPIP_EXTERN struct vpip_simulation vpip_simulation_obj; +extern struct vpip_simulation vpip_simulation_obj; -VPIP_EXTERN void vpip_set_vlog_info(int argc, char**argv); -VPIP_EXTERN void vpip_init_simulation(); -VPIP_EXTERN void vpip_time_scale(int precision); -VPIP_EXTERN void vpip_simulation_run(); -VPIP_EXTERN void vpi_mcd_init(void); +extern void vpip_set_vlog_info(int argc, char**argv); +extern void vpip_init_simulation(); +extern void vpip_time_scale(int precision); +extern void vpip_simulation_run(); +extern void vpi_mcd_init(void); /* * Schedule an event to be run sometime in the future. The d parmater @@ -364,22 +364,22 @@ VPIP_EXTERN void vpi_mcd_init(void); * The return value from the insert method is a cookie that can be * used to manipulate the event before it is executed. */ -VPIP_EXTERN struct vpip_event* vpip_sim_insert_event(unsigned long d, +extern struct vpip_event* vpip_sim_insert_event(unsigned long d, void*user_data, void (*sim_fun)(void*), int nonblock_flag); -VPIP_EXTERN void vpip_sim_cancel_event(struct vpip_event*cookie); +extern void vpip_sim_cancel_event(struct vpip_event*cookie); /* * This function returns a handle to the vpiTimeVar that is th main * simulation time clock. */ -VPIP_EXTERN vpiHandle vpip_sim_time(); +extern vpiHandle vpip_sim_time(); /* * Return true if the going_flag is false. */ -VPIP_EXTERN int vpip_finished(); +extern int vpip_finished(); #ifdef __cplusplus @@ -388,6 +388,9 @@ VPIP_EXTERN int vpip_finished(); /* * $Log: vpi_priv.h,v $ + * Revision 1.27 2000/10/04 02:37:44 steve + * Use .def file instead of _dllexport. + * * Revision 1.26 2000/10/03 16:15:35 steve * Cleanup build of VPI modules under Cygwin. (Venkat) * diff --git a/vvm/vpip.def b/vvm/vpip.def new file mode 100644 index 000000000..44c14ad29 --- /dev/null +++ b/vvm/vpip.def @@ -0,0 +1,52 @@ + +EXPORTS + + vpi_free_object + vpi_get + vpi_get_str + vpi_get_time + vpi_get_value + vpi_get_vlog_info + vpi_handle + vpi_handle_by_index + vpi_iterate + vpi_mcd_close + vpi_mcd_init + vpi_mcd_name + vpi_mcd_open + vpi_mcd_printf + vpi_printf + vpi_put_value + vpi_register_cb + vpi_register_systf + vpi_remove_cb + vpi_scan + vpi_sim_control + vpip_attach_to_scope + vpip_bits_get_value + vpip_bits_resolve + vpip_bits_set_value + vpip_callfunc + vpip_calltask + vpip_finished + vpip_init_simulation + vpip_make_iterator + vpip_make_memory + vpip_make_net + vpip_make_number_const + vpip_make_reg + vpip_make_scope + vpip_make_string_const + vpip_make_time_var + vpip_null DATA + vpip_pair_resolve + vpip_run_value_changes + vpip_set_vlog_info + vpip_sim_cancel_event + vpip_sim_insert_event + vpip_sim_time + vpip_simulation_obj DATA + vpip_simulation_run + vpip_sysfunc_rt DATA + vpip_systask_rt DATA + vpip_time_scale