=== trunk/configure.ac ================================================================== --- trunk/configure.ac (revision 621) +++ trunk/configure.ac (local) @@ -54,7 +54,6 @@ swig_path="" fi AM_CONDITIONAL([USE_SWIG],[test x${swig_path} != "x"]) - if (echo $CXX | grep ccache); then echo else @@ -200,7 +199,13 @@ fi AM_CONDITIONAL([USE_PYTHON],[test "x$have_python" != "x"]) AM_CONDITIONAL([USE_WISH],[test "x$TCL_WISH" != "x"]) +AC_CHECK_HEADER([vpi_user.h], + [AC_DEFINE(HAVE_VERILOG, [1], Icarus verilog interface) + WE_HAVE_VERILOG="yes"], + []) +AM_CONDITIONAL([USE_VERILOG], [test "$WE_HAVE_VERILOG"]) + AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile === trunk/src/Makefile.am ================================================================== --- trunk/src/Makefile.am (revision 621) +++ trunk/src/Makefile.am (local) @@ -26,14 +26,14 @@ DISTCLEANFILES:=${DISTCLEANFILES} simulavr.so keytrans.h simulavr_wrap.cpp -CLEANFILES:=${CLEANFILES} simulavr.so keytrans.h simulavr_wrap.cpp +CLEANFILES:=${CLEANFILES} simulavr.so keytrans.h simulavr_wrap.cpp avr.vpi EXTRA_DIST = simulavr.i SUBDIRS = python DIST_SUBDIRS = python -lib_LTLIBRARIES = libavrsim_pp.la +lib_LTLIBRARIES = libavrsim_pp.la libavrvpi_pp.la bin_PROGRAMS = simulavr kbdgentables @@ -44,6 +44,7 @@ atmega128.cpp \ avrdevice.cpp \ avrerror.cpp \ + avrfactory.cpp \ avrmalloc.cpp \ decoder.cpp \ decoder_trace.cpp \ @@ -82,8 +83,19 @@ serialtx.cpp \ systemclock.cpp \ trace.cpp \ - ui.cpp + ui.cpp +if USE_VERILOG +libavrvpi_pp_la_SOURCES = \ + $(libavrsim_pp_la_SOURCES) \ + vpi.cpp + +all-local: avr.vpi + +avr.vpi: libavrvpi_pp.la + iverilog-vpi --name=avr $(shell ar t .libs/libavrvpi_pp.a|sed su^u.libs/u) -lbfd +endif + pkginclude_HEADERS = \ application.h \ at4433.h \ @@ -92,6 +104,7 @@ avrdevice.h \ avrdevice_impl.h \ avrerror.h \ + avrfactory.h \ avrmalloc.h \ breakpoint.h \ config_deprecated.h \ @@ -168,7 +181,7 @@ libavrsim_pp_la_LIBADD = $(NonPortableDarwin_LIBADD_Hack) AM_CPPFLAGS=$(TCL_INCLUDE_SPEC) -AM_CXXFLAGS=-O2 +AM_CXXFLAGS=-O2 -fPIC INCLUDES = -I$(includedir) -I$(bfd_h_location) -I$(top_srcdir)/src -I $(top_builddir)/src === trunk/src/avrdevice.h ================================================================== --- trunk/src/avrdevice.h (revision 621) +++ trunk/src/avrdevice.h (local) @@ -94,7 +94,10 @@ #endif AvrDevice(unsigned int ioSpaceSize, unsigned int IRamSize, unsigned int ERamSize, unsigned int flashSize); - int Step(bool &, SystemClockOffset *nextStepIn_ns =0); + /*! Steps the AVR core. + \param untilCoreStepFinished iff true, steps a core step and not a + single clock cycle. */ + int Step(bool &untilCoreStepFinished, SystemClockOffset *nextStepIn_ns =0); void Reset(); void SetClockFreq(SystemClockOffset f); SystemClockOffset GetClockFreq(); === trunk/src/main.cpp ================================================================== --- trunk/src/main.cpp (revision 621) +++ trunk/src/main.cpp (local) @@ -37,9 +37,7 @@ #include "global.h" #include "flash.h" #include "avrdevice.h" -#include "at8515.h" -#include "atmega128.h" -#include "at4433.h" +#include "avrfactory.h" #include "gdb.h" #include "ui.h" #include "systemclock.h" @@ -198,9 +196,9 @@ cout << "-T --terminate