Start the libveriuser library.
This commit is contained in:
parent
cfab250671
commit
ca9abaf0c5
|
|
@ -16,7 +16,7 @@
|
||||||
# 59 Temple Place - Suite 330
|
# 59 Temple Place - Suite 330
|
||||||
# Boston, MA 02111-1307, USA
|
# Boston, MA 02111-1307, USA
|
||||||
#
|
#
|
||||||
#ident "$Id: Makefile.in,v 1.121 2002/05/15 01:25:07 steve Exp $"
|
#ident "$Id: Makefile.in,v 1.122 2002/05/19 05:21:00 steve Exp $"
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
|
|
@ -212,7 +212,7 @@ else
|
||||||
WIN32_INSTALL = $(bindir)/iverilog-vpi
|
WIN32_INSTALL = $(bindir)/iverilog-vpi
|
||||||
endif
|
endif
|
||||||
|
|
||||||
install: all installdirs $(libdir)/ivl/ivl@EXEEXT@ $(libdir)/ivl/iverilog.conf $(includedir)/ivl_target.h $(includedir)/vpi_user.h $(libdir)/libvpi.a $(WIN32_INSTALL)
|
install: all installdirs $(libdir)/ivl/ivl@EXEEXT@ $(libdir)/ivl/iverilog.conf $(includedir)/ivl_target.h $(includedir)/vpi_user.h $(includedir)/veriuser.h $(libdir)/libvpi.a $(WIN32_INSTALL)
|
||||||
cd vpi ; $(MAKE) install
|
cd vpi ; $(MAKE) install
|
||||||
cd ivlpp ; $(MAKE) install
|
cd ivlpp ; $(MAKE) install
|
||||||
cd driver ; $(MAKE) install
|
cd driver ; $(MAKE) install
|
||||||
|
|
@ -238,6 +238,9 @@ $(includedir)/ivl_target.h: $(srcdir)/ivl_target.h
|
||||||
$(includedir)/vpi_user.h: $(srcdir)/vpi_user.h
|
$(includedir)/vpi_user.h: $(srcdir)/vpi_user.h
|
||||||
$(INSTALL_DATA) $(srcdir)/vpi_user.h $(includedir)/vpi_user.h
|
$(INSTALL_DATA) $(srcdir)/vpi_user.h $(includedir)/vpi_user.h
|
||||||
|
|
||||||
|
$(includedir)/veriuser.h: $(srcdir)/veriuser.h
|
||||||
|
$(INSTALL_DATA) $(srcdir)/veriuser.h $(includedir)/veriuser.h
|
||||||
|
|
||||||
# In windows installations, put a few examples and the quick_start
|
# In windows installations, put a few examples and the quick_start
|
||||||
# into the destination directory.
|
# into the destination directory.
|
||||||
ifeq (@WIN32@,yes)
|
ifeq (@WIN32@,yes)
|
||||||
|
|
@ -264,6 +267,7 @@ uninstall:
|
||||||
rm -f $(bindir)/gverilog@EXEEXT@
|
rm -f $(bindir)/gverilog@EXEEXT@
|
||||||
rm -f $(includedir)/ivl_target.h
|
rm -f $(includedir)/ivl_target.h
|
||||||
rm -f $(includedir)/vpi_user.h
|
rm -f $(includedir)/vpi_user.h
|
||||||
|
rm -f $(includedir)/veriuser.h
|
||||||
cd driver ; $(MAKE) uninstall
|
cd driver ; $(MAKE) uninstall
|
||||||
cd vpi ; $(MAKE) uninstall
|
cd vpi ; $(MAKE) uninstall
|
||||||
cd ivlpp ; $(MAKE) uninstall
|
cd ivlpp ; $(MAKE) uninstall
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
echo "Autoconf in root..."
|
echo "Autoconf in root..."
|
||||||
autoconf
|
autoconf
|
||||||
|
|
||||||
for dir in vpip vvp tgt-vvp tgt-fpga
|
for dir in vpip vvp tgt-vvp tgt-fpga libveriuser
|
||||||
do
|
do
|
||||||
echo "Autoconf in $dir..."
|
echo "Autoconf in $dir..."
|
||||||
( cd $dir ; autoconf )
|
( cd $dir ; autoconf )
|
||||||
|
|
|
||||||
|
|
@ -245,6 +245,6 @@ AC_SUBST(shared)
|
||||||
AC_MSG_RESULT($shared)
|
AC_MSG_RESULT($shared)
|
||||||
|
|
||||||
|
|
||||||
AC_CONFIG_SUBDIRS(vpip vvp tgt-vvp tgt-fpga)
|
AC_CONFIG_SUBDIRS(vpip vvp tgt-vvp tgt-fpga libveriuser)
|
||||||
|
|
||||||
AC_OUTPUT(Makefile vpi/Makefile ivlpp/Makefile vvm/Makefile driver/Makefile tgt-null/Makefile tgt-stub/Makefile tgt-verilog/Makefile tgt-pal/Makefile)
|
AC_OUTPUT(Makefile vpi/Makefile ivlpp/Makefile vvm/Makefile driver/Makefile tgt-null/Makefile tgt-stub/Makefile tgt-verilog/Makefile tgt-pal/Makefile)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
Makefile
|
||||||
|
configure
|
||||||
|
config.*
|
||||||
|
dep
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
#
|
||||||
|
# This source code is free software; you can redistribute it
|
||||||
|
# and/or modify it in source code form under the terms of the GNU
|
||||||
|
# Library General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Library General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Library General Public
|
||||||
|
# License along with this program; if not, write to the Free
|
||||||
|
# Software Foundation, Inc.,
|
||||||
|
# 59 Temple Place - Suite 330
|
||||||
|
# Boston, MA 02111-1307, USA
|
||||||
|
#
|
||||||
|
#ident "$Id: Makefile.in,v 1.1 2002/05/19 05:21:00 steve Exp $"
|
||||||
|
#
|
||||||
|
#
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
|
||||||
|
VPATH = $(srcdir)
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
libdir = @libdir@
|
||||||
|
includedir = $(prefix)/include
|
||||||
|
|
||||||
|
CC = @CC@ -I$(srcdir) -I$(srcdir)/..
|
||||||
|
CXX = @CXX@ -I$(srcdir) -I$(srcdir)/..
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
|
||||||
|
CPPFLAGS = @CPPFLAGS@ @DEFS@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
|
||||||
|
O = finish.o
|
||||||
|
|
||||||
|
all: libveriuser.a
|
||||||
|
|
||||||
|
check: all
|
||||||
|
|
||||||
|
Makefile: Makefile.in config.status
|
||||||
|
./config.status
|
||||||
|
|
||||||
|
libveriuser.a: $O
|
||||||
|
rm -f $@
|
||||||
|
ar cvq $@ $O
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
@[ -d dep ] || mkdir dep
|
||||||
|
$(CC) -Wall $(CPPFLAGS) $(CFLAGS) -MD -c $< -o $*.o
|
||||||
|
mv $*.d dep
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o dep/*.d libveriuser.a
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile config.status config.log config.cache
|
||||||
|
|
||||||
|
install:: all installdirs $(libdir)/libveriuser.a
|
||||||
|
|
||||||
|
$(libdir)/libveriuser.a: ./libveriuser.a
|
||||||
|
$(INSTALL_DATA) ./libveriuser.a $(libdir)/libveriuser.a
|
||||||
|
|
||||||
|
installdirs: mkinstalldirs
|
||||||
|
$(srcdir)/mkinstalldirs $(includedir) $(libdir)
|
||||||
|
|
||||||
|
uninstall::
|
||||||
|
rm -f $(libdir)/libveriuser.a
|
||||||
|
|
||||||
|
-include $(patsubst %.o, dep/%.d, $O $P)
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
AC_INIT(Makefile.in)
|
||||||
|
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
|
||||||
|
AC_CYGWIN
|
||||||
|
AC_EXEEXT
|
||||||
|
|
||||||
|
# Darwin requires -no-cpp-precomp
|
||||||
|
case "${host}" in
|
||||||
|
*-*-darwin*)
|
||||||
|
CPPFLAGS="-no-cpp-precomp"
|
||||||
|
CFLAGS="-no-cpp-precomp"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_SUBST(EXEEXT)
|
||||||
|
AC_SUBST(EXTRALIBS)
|
||||||
|
|
||||||
|
AC_OUTPUT(Makefile)
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002 Stephen Williams (steve@icarus.com)
|
||||||
|
*
|
||||||
|
* This source code is free software; you can redistribute it
|
||||||
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
* General Public License as published by the Free Software
|
||||||
|
* Foundation; either version 2 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
*/
|
||||||
|
#if !defined(WINNT)
|
||||||
|
#ident "$Id: finish.c,v 1.1 2002/05/19 05:21:00 steve Exp $"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# include <vpi_user.h>
|
||||||
|
# include <veriuser.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implement tf_dofinish and tf_dostop using vpi functions.
|
||||||
|
*/
|
||||||
|
int tf_dofinish(void)
|
||||||
|
{
|
||||||
|
vpi_sim_control(vpiFinish, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tf_dostop(void)
|
||||||
|
{
|
||||||
|
vpi_sim_control(vpiStop, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: finish.c,v $
|
||||||
|
* Revision 1.1 2002/05/19 05:21:00 steve
|
||||||
|
* Start the libveriuser library.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# mkinstalldirs --- make directory hierarchy
|
||||||
|
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||||
|
# Created: 1993-05-16
|
||||||
|
# Public domain
|
||||||
|
|
||||||
|
# $Id: mkinstalldirs,v 1.1 2002/05/19 05:21:00 steve Exp $
|
||||||
|
|
||||||
|
errstatus=0
|
||||||
|
|
||||||
|
for file
|
||||||
|
do
|
||||||
|
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||||
|
shift
|
||||||
|
|
||||||
|
pathcomp=
|
||||||
|
for d
|
||||||
|
do
|
||||||
|
pathcomp="$pathcomp$d"
|
||||||
|
case "$pathcomp" in
|
||||||
|
-* ) pathcomp=./$pathcomp ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
echo "mkdir $pathcomp" 1>&2
|
||||||
|
|
||||||
|
mkdir "$pathcomp" || lasterr=$?
|
||||||
|
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
errstatus=$lasterr
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="$pathcomp/"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $errstatus
|
||||||
|
|
||||||
|
# mkinstalldirs ends here
|
||||||
|
|
@ -50,9 +50,11 @@ make prefix=$RPM_BUILD_ROOT/usr install
|
||||||
%attr(-,root,root) /usr/lib/libvpi.a
|
%attr(-,root,root) /usr/lib/libvpi.a
|
||||||
%attr(-,root,root) /usr/lib/libvvm.a
|
%attr(-,root,root) /usr/lib/libvvm.a
|
||||||
%attr(-,root,root) /usr/lib/libvpip.a
|
%attr(-,root,root) /usr/lib/libvpip.a
|
||||||
|
%attr(-,root,root) /usr/lib/libveriuser.a
|
||||||
%attr(-,root,root) /usr/include/ivl_target.h
|
%attr(-,root,root) /usr/include/ivl_target.h
|
||||||
%attr(-,root,root) /usr/include/vpi_priv.h
|
%attr(-,root,root) /usr/include/vpi_priv.h
|
||||||
%attr(-,root,root) /usr/include/vpi_user.h
|
%attr(-,root,root) /usr/include/vpi_user.h
|
||||||
|
%attr(-,root,root) /usr/include/veriuser.h
|
||||||
%attr(-,root,root) /usr/include/vvm.h
|
%attr(-,root,root) /usr/include/vvm.h
|
||||||
%attr(-,root,root) /usr/include/vvm_calltf.h
|
%attr(-,root,root) /usr/include/vvm_calltf.h
|
||||||
%attr(-,root,root) /usr/include/vvm_func.h
|
%attr(-,root,root) /usr/include/vvm_func.h
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
#ifndef __veriuser_H
|
||||||
|
#define __veriuser_H
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002 Stephen Williams (steve@icarus.com)
|
||||||
|
*
|
||||||
|
* This source code is free software; you can redistribute it
|
||||||
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
* General Public License as published by the Free Software
|
||||||
|
* Foundation; either version 2 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
*/
|
||||||
|
#if !defined(WINNT) && !defined(macintosh)
|
||||||
|
#ident "$Id: veriuser.h,v 1.1 2002/05/19 05:21:00 steve Exp $"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This header file contains the definitions and declarations needed
|
||||||
|
* by an Icarus Verilog user using tf_ routines.
|
||||||
|
*
|
||||||
|
* NOTE: Icarus Verilog does not support tf_ routines. This is just a
|
||||||
|
* stub. The functions that are implemented here are actually
|
||||||
|
* implemented using VPI routines.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
# define EXTERN_C_START extern "C" {
|
||||||
|
# define EXTERN_C_END }
|
||||||
|
#else
|
||||||
|
# define EXTERN_C_START
|
||||||
|
# define EXTERN_C_END
|
||||||
|
#endif
|
||||||
|
|
||||||
|
EXTERN_C_START
|
||||||
|
|
||||||
|
extern int tf_dofinish(void);
|
||||||
|
extern int tf_dostop(void);
|
||||||
|
|
||||||
|
EXTERN_C_END
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: veriuser.h,v $
|
||||||
|
* Revision 1.1 2002/05/19 05:21:00 steve
|
||||||
|
* Start the libveriuser library.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
21
vpithunk.c
21
vpithunk.c
|
|
@ -3,6 +3,26 @@
|
||||||
#include "vpi_user.h"
|
#include "vpi_user.h"
|
||||||
#include "vpithunk.h"
|
#include "vpithunk.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This code is linked into the VPI module, not the simulator. The
|
||||||
|
* module uses the symbols defined in here to call implementations
|
||||||
|
* supplied by the simulator, which loaded this module with dlopen or
|
||||||
|
* the equivilent.
|
||||||
|
*
|
||||||
|
* The vpi_thunk_p pointer points to a table of function pointers that
|
||||||
|
* point to all the functions that a simulator is expected to provide.
|
||||||
|
* The vlog_register_sim is a function that the simulator is expected
|
||||||
|
* to call with a value for the vpi_thunk_p pointer. This is how the
|
||||||
|
* run time linkage to all the functions in the make program are made.
|
||||||
|
*
|
||||||
|
* In Icarus Verilog, the VPI module is also supposed to export a
|
||||||
|
* vlog_startup_routines table. This is something that the programmer
|
||||||
|
* does, so the libvpi library, and the vlog_register_sim function,
|
||||||
|
* are invisible to the user.
|
||||||
|
*
|
||||||
|
* The simulator is careful to call the vpi_register_sim function from
|
||||||
|
* a loaded module before executing the startup routines.
|
||||||
|
*/
|
||||||
static p_vpi_thunk vpi_thunk_p = 0;
|
static p_vpi_thunk vpi_thunk_p = 0;
|
||||||
|
|
||||||
#define VPITV_CALL(fn,args) { \
|
#define VPITV_CALL(fn,args) { \
|
||||||
|
|
@ -174,4 +194,3 @@ extern int vpi_get_vlog_info(p_vpi_vlog_info vlog_info_p)
|
||||||
{
|
{
|
||||||
VPIT_CALL(vpi_get_vlog_info, 0, (vlog_info_p));
|
VPIT_CALL(vpi_get_vlog_info, 0, (vlog_info_p));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue