Compare commits

...
28 Commits
Author SHA1 Message Date
Cary R. 07dd50d37e Merge pull request #1333 from caryr/v13-branch
FST can dump packages
2026-04-29 21:26:49 -07:00
Cary R c00178148a Update to the latest GTKWave files 2026-04-29 21:13:32 -07:00
Cary R 77116aa09a Fix possible parallel build race with compile and dep directory 2026-04-29 21:13:19 -07:00
Cary R f97fd5184c Remove versioned manual pages during make clean 2026-04-29 21:13:08 -07:00
Huang Rui 31b8d2f674 Fix parallel build race with dep/ directory
Pattern rules that move .d files into dep/ do not depend on the dep
directory target, so parallel make can attempt the move before the
directory exists.

Add dep as an order-only prerequisite to all affected pattern rules.

Bug: https://bugs.gentoo.org/880921
Bug: https://bugs.gentoo.org/911647
Bug: https://bugs.gentoo.org/917344
Closes: https://github.com/steveicarus/iverilog/issues/1314
Signed-off-by: Huang Rui <[email protected]>
2026-04-29 21:10:46 -07:00
Huang Rui 8295eb9762 Include mach-o/dyld.h for _NSGetExecutablePath on macOS
driver/main.c uses _NSGetExecutablePath in the __APPLE__ code path
but does not include the header that declares it, causing a build
failure on macOS.

Signed-off-by: Huang Rui <[email protected]>
2026-04-29 21:09:52 -07:00
Cary R 3928e2bd32 FST can dump packages 2026-04-29 21:00:12 -07:00
Cary R. d1cbaf08d2 Merge pull request #1309 from caryr/v13-branch
V13 branch
2026-03-09 18:38:59 -07:00
Martin Whitaker 28d31c6df1 Update the copy of ax_prog_cc_for_build.m4 embedded in aclocal.m4
This correctly generates the EXEEXT variable when cross-compiling and
using autoconf 2.70+ (issue #1301).

(cherry picked from commit 14a25bfe92)
2026-03-09 18:25:44 -07:00
Martin Whitaker 0c575e6166 Remove duplicated typeders and functions from t-dll.h and t-dll.c
These duplicate the contents of ivl_dlfcn.h

(cherry picked from commit 4dfac864ce)
2026-03-09 18:25:17 -07:00
Martin Whitaker ab6e9effe1 Merge duplicated ivl_dlfcn.h files.
The vvp/ivl_dlfcn.h and cadpli/ivl_dlfcn.h files are essentially the
same, but have diverged a bit over the years. Merge them into a single
shared file at the top level. Use the static prefix for all inline
functins (currently only used in the cadpli version) as that will fix
issue #1301. We now require the compiler to support at least C99, so
can use "inline", not "__inline__".

(cherry picked from commit 3f936d2d8b)
2026-03-09 18:24:56 -07:00
Cary R. 824ff5b8cb Merge pull request #1308 from caryr/v13-branch
update documentation name (man page format)
2026-03-08 15:36:44 -07:00
Cary R. 5fb9d93715 Fix man page entry for Icarus Verilog documentation
(cherry picked from commit d3bda52d69)
2026-03-08 15:22:25 -07:00
أحمد المحمودي (Ahmed El-Mahmoudy) 52b9e1816d Rename manpage to iverilog.1 to match executable name
(cherry picked from commit 57385f9ac6)
2026-03-08 15:21:50 -07:00
Cary R. e537dafb7f Merge pull request #1307 from caryr/v13-branch
Update to the latest GTKWave files
2026-03-08 15:09:54 -07:00
Cary R. f7fabc57bb Merge branch 'steveicarus:v13-branch' into v13-branch 2026-03-08 14:54:35 -07:00
Cary R 1c8d9e37f2 Update to the latest GTKWAve files 2026-03-08 14:51:23 -07:00
Cary R. 9e02a32046 Merge pull request #1306 from caryr/v13-branch
Add Copyright to a couple LGPL2 files
2026-03-08 14:43:45 -07:00
Cary R 894a681ff0 Add Copyright to a couple LGPL2 files 2026-03-08 14:06:48 -07:00
Cary R. 84f51be69a Merge pull request #1304 from caryr/v13-branch
Fix typo: contributer -> contributor
2026-03-05 20:20:33 -08:00
أحمد المحمودي (Ahmed El-Mahmoudy) 6d7a38847a Fix typo: contributer -> contributor
(cherry picked from commit f9a0542a49)
2026-03-05 19:41:48 -08:00
Cary R. ef9e91c168 Merge pull request #1299 from caryr/v13-branch
Update vvp examples to match the correct version
2026-03-02 11:04:23 -08:00
Cary R f5ee8a9a44 Update vvp examples to match the correct version 2026-03-02 10:50:01 -08:00
Cary R. 94d92ced82 Merge pull request #1297 from caryr/v13-branch
Update post branch directions for master and create v13_0 release
2026-03-01 15:50:30 -08:00
Cary R 1746e03a70 Post-release cleanup 2026-03-01 15:38:29 -08:00
Cary R dfeee909ed Creating release v13_0 2026-03-01 15:38:29 -08:00
Cary R f614488591 Update post branch directions for master 2026-03-01 15:33:15 -08:00
Cary R 24c105531d Creating new branch v13-branch 2026-03-01 15:07:05 -08:00
51 changed files with 158 additions and 264 deletions
+1 -1
View File
@@ -142,7 +142,7 @@ latex_documents = [
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'icarusverilog', 'Icarus Verilog Documentation',
(master_doc, 'iverilog-docs', 'Icarus Verilog Documentation',
[author], 1)
]
+1 -1
View File
@@ -8,7 +8,7 @@ source code itself, so that you can find the global parts where you
can look for even better detail.
The documentation for getting, building and installing Icarus Verilog
is kept and maintained at :doc:`Getting Started as a Contributer <../getting_started>`
is kept and maintained at :doc:`Getting Started as a Contributor <../getting_started>`
See the Installation Guide for getting the current source from the git
repository (and how to use the git repository) and see the Developer Guide
+2 -2
View File
@@ -2,7 +2,7 @@
Reporting Issues
================
The developers of and contributers to Icarus Verilog use github to track
The developers of and contributors to Icarus Verilog use github to track
issues and to create patches for the product. If you believe you have found a
problem, use the Issues tracker at the
`Icarus Verilog github page <https://github.com/steveicarus/iverilog>`__.
@@ -60,7 +60,7 @@ Bug reports with patches/PRs are very welcome. Please also add a new test case i
If you are editing the source, you should be using the latest
version from git. Please see the developer documentation for more
detailed instructions -- :doc:`Getting Started as a Contributer <getting_started>` .
detailed instructions -- :doc:`Getting Started as a Contributor <getting_started>` .
COPYRIGHT ISSUES
+2 -1
View File
@@ -166,6 +166,7 @@ clean:
$(foreach dir,$(SUBDIRS),$(MAKE) -C $(dir) $@ && ) true
rm -f *.o parse.cc parse.h lexor.cc
rm -f ivl.exp iverilog-vpi.man iverilog-vpi.pdf iverilog-vpi.ps
rm -f iverilog_man.ps iverilog_man.pdf iverilog_man_`./version.exe %M_%n`.pdf
rm -f parse.output syn-rules.output dosify$(BUILDEXT) ivl@EXEEXT@ check.vvp
rm -f lexor_keyword.cc libivl.a libvpi.a iverilog-vpi syn-rules.cc
rm -rf dep
@@ -252,7 +253,7 @@ endif
version.exe: $(srcdir)/version.c $(srcdir)/version_base.h version_tag.h
$(BUILDCC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o version.exe -I. -I$(srcdir) $(srcdir)/version.c
%.o: %.cc config.h
%.o: %.cc config.h | dep
$(CXX) $(CPPFLAGS) $(CXXFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep/$*.d
Vendored
+52 -16
View File
@@ -10,7 +10,7 @@ AC_DEFUN([AX_ENABLE_SUFFIX],
[Use/set the installation command suffix])],
[true],[enable_suffix=no])
if test X$enable_suffix = Xyes; then
install_suffix='-dev'
install_suffix='-13'
elif test X$enable_suffix = Xno; then
install_suffix=''
else
@@ -285,7 +285,7 @@ echo "timestamp for $_config_header" > `AS_DIRNAME(["$_config_header"])`/[]$_sta
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 18
#serial 26
AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
@@ -296,14 +296,16 @@ AC_REQUIRE([AC_CANONICAL_BUILD])dnl
dnl Use the standard macros, but make them use other variable names
dnl
pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl
pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl
pushdef([ac_cv_prog_cc_c99], ac_cv_build_prog_cc_c99)dnl
pushdef([ac_cv_prog_cc_c11], ac_cv_build_prog_cc_c11)dnl
pushdef([ac_cv_prog_cc_c23], ac_cv_build_prog_cc_c23)dnl
pushdef([ac_cv_prog_cc_stdc], ac_cv_build_prog_cc_stdc)dnl
pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl
pushdef([ac_cv_c_compiler_gnu], ac_cv_build_c_compiler_gnu)dnl
pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl
pushdef([ac_cv_objext], ac_cv_build_objext)dnl
pushdef([ac_prog_cc_stdc], ac_build_prog_cc_stdc)dnl
pushdef([ac_exeext], ac_build_exeext)dnl
pushdef([ac_objext], ac_build_objext)dnl
pushdef([CC], CC_FOR_BUILD)dnl
@@ -311,9 +313,7 @@ pushdef([CPP], CPP_FOR_BUILD)dnl
pushdef([GCC], GCC_FOR_BUILD)dnl
pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl
pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
pushdef([EXEEXT], BUILD_EXEEXT)dnl
pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl
pushdef([OBJEXT], BUILD_OBJEXT)dnl
pushdef([host], build)dnl
pushdef([host_alias], build_alias)dnl
pushdef([host_cpu], build_cpu)dnl
@@ -328,6 +328,32 @@ pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl
pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl
pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl
pushdef([cross_compiling], cross_compiling_build)dnl
dnl
dnl These variables are problematic to rename by M4 macros, so we save
dnl their values in alternative names, and restore the values later.
dnl
dnl _AC_COMPILER_EXEEXT and _AC_COMPILER_OBJEXT internally call
dnl AC_SUBST which prevents the renaming of EXEEXT and OBJEXT
dnl variables. It's not a good idea to rename ac_cv_exeext and
dnl ac_cv_objext either as they're related.
dnl Renaming ac_exeext and ac_objext is safe though.
dnl
ac_cv_host_exeext=$ac_cv_exeext
AS_VAR_SET_IF([ac_cv_build_exeext],
[ac_cv_exeext=$ac_cv_build_exeext],
[AS_UNSET([ac_cv_exeext])])
ac_cv_host_objext=$ac_cv_objext
AS_VAR_SET_IF([ac_cv_build_objext],
[ac_cv_objext=$ac_cv_build_objext],
[AS_UNSET([ac_cv_objext])])
dnl
dnl ac_cv_c_compiler_gnu is used in _AC_LANG_COMPILER_GNU (called by
dnl AC_PROG_CC) indirectly.
dnl
ac_cv_host_c_compiler_gnu=$ac_cv_c_compiler_gnu
AS_VAR_SET_IF([ac_cv_build_c_compiler_gnu],
[ac_cv_c_compiler_gnu=$ac_cv_build_c_compiler_gnu],
[AS_UNSET([ac_cv_c_compiler_gnu])])
cross_compiling_build=no
@@ -341,6 +367,9 @@ _AC_COMPILER_EXEEXT
_AC_COMPILER_OBJEXT
AC_PROG_CPP
BUILD_EXEEXT=$ac_cv_exeext
BUILD_OBJEXT=$ac_cv_objext
dnl Restore the old definitions
dnl
popdef([cross_compiling])dnl
@@ -357,9 +386,7 @@ popdef([host_vendor])dnl
popdef([host_cpu])dnl
popdef([host_alias])dnl
popdef([host])dnl
popdef([OBJEXT])dnl
popdef([LDFLAGS])dnl
popdef([EXEEXT])dnl
popdef([CPPFLAGS])dnl
popdef([CFLAGS])dnl
popdef([GCC])dnl
@@ -367,25 +394,34 @@ popdef([CPP])dnl
popdef([CC])dnl
popdef([ac_objext])dnl
popdef([ac_exeext])dnl
popdef([ac_cv_objext])dnl
popdef([ac_cv_exeext])dnl
popdef([ac_cv_c_compiler_gnu])dnl
popdef([ac_prog_cc_stdc])dnl
popdef([ac_cv_prog_cc_g])dnl
popdef([ac_cv_prog_cc_cross])dnl
popdef([ac_cv_prog_cc_works])dnl
popdef([ac_cv_prog_cc_stdc])dnl
popdef([ac_cv_prog_cc_c23])dnl
popdef([ac_cv_prog_cc_c11])dnl
popdef([ac_cv_prog_cc_c99])dnl
popdef([ac_cv_prog_cc_c89])dnl
popdef([ac_cv_prog_gcc])dnl
popdef([ac_cv_prog_CPP])dnl
dnl
ac_cv_exeext=$ac_cv_host_exeext
EXEEXT=$ac_cv_host_exeext
ac_cv_objext=$ac_cv_host_objext
OBJEXT=$ac_cv_host_objext
ac_cv_c_compiler_gnu=$ac_cv_host_c_compiler_gnu
ac_compiler_gnu=$ac_cv_host_c_compiler_gnu
dnl restore global variables ac_ext, ac_cpp, ac_compile,
dnl ac_link, ac_compiler_gnu (dependant on the current
dnl ac_link, ac_compiler_gnu (dependent on the current
dnl language after popping):
AC_LANG_POP([C])
dnl Finally, set Makefile variables
dnl
AC_SUBST(BUILD_EXEEXT)dnl
AC_SUBST(BUILD_OBJEXT)dnl
AC_SUBST([BUILD_EXEEXT])dnl
AC_SUBST([BUILD_OBJEXT])dnl
AC_SUBST([CFLAGS_FOR_BUILD])dnl
AC_SUBST([CPPFLAGS_FOR_BUILD])dnl
AC_SUBST([LDFLAGS_FOR_BUILD])dnl
+1 -1
View File
@@ -71,7 +71,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.c
%.o: %.c | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $<
mv $*.d dep
+2 -2
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003-2010 Stephen Williams (steve@icarus.com)
* Copyright (c) 2003-2026 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
@@ -53,7 +53,7 @@ static void thunker_register(void)
strncpy(module, cp, bp-cp);
module[bp-cp] = 0;
mod = ivl_dlopen(module);
mod = ivl_dlopen(module, false);
if (mod == 0) {
vpi_printf("%s link: %s\n", vlog_info.argv[idx], dlerror());
free(module);
-94
View File
@@ -1,94 +0,0 @@
#ifndef IVL_ivl_dlfcn_H
#define IVL_ivl_dlfcn_H
/*
* Copyright (c) 2001-2014 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#if defined(__MINGW32__)
# include <windows.h>
# include <stdio.h>
typedef void * ivl_dll_t;
#elif defined(HAVE_DLFCN_H)
# include <dlfcn.h>
typedef void* ivl_dll_t;
#elif defined(HAVE_DL_H)
# include <dl.h>
typedef shl_t ivl_dll_t;
#endif
#if defined(__MINGW32__)
static __inline__ ivl_dll_t ivl_dlopen(const char *name)
{ return (void *)LoadLibrary(name); }
static __inline__ void *ivl_dlsym(ivl_dll_t dll, const char *nm)
{ return (void *)GetProcAddress((HINSTANCE)dll,nm);}
static __inline__ void ivl_dlclose(ivl_dll_t dll)
{ (void)FreeLibrary((HINSTANCE)dll);}
static __inline__ const char *dlerror(void)
{
static char msg[256];
unsigned long err = GetLastError();
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
err,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &msg,
sizeof(msg) - 1,
NULL
);
return msg;
}
#elif defined(HAVE_DLFCN_H)
static __inline__ ivl_dll_t ivl_dlopen(const char*name)
{ return dlopen(name,RTLD_LAZY); }
static __inline__ void* ivl_dlsym(ivl_dll_t dll, const char*nm)
{
void*sym = dlsym(dll, nm);
/* Not found? try without the leading _ */
if (sym == 0 && nm[0] == '_')
sym = dlsym(dll, nm+1);
return sym;
}
static __inline__ void ivl_dlclose(ivl_dll_t dll)
{ dlclose(dll); }
#elif defined(HAVE_DL_H)
static __inline__ ivl_dll_t ivl_dlopen(const char*name)
{ return shl_load(name, BIND_IMMEDIATE, 0); }
static __inline__ void* ivl_dlsym(ivl_dll_t dll, const char*nm)
{
void*sym;
int rc = shl_findsym(&dll, nm, TYPE_PROCEDURE, &sym);
return (rc == 0) ? sym : 0;
}
static __inline__ void ivl_dlclose(ivl_dll_t dll)
{ shl_unload(dll); }
static __inline__ const char*dlerror(void)
{ return strerror( errno ); }
#endif
#endif /* IVL_ivl_dlfcn_H */
+2 -2
View File
@@ -92,11 +92,11 @@ cflexor.c: $(srcdir)/cflexor.lex
cfparse%c cfparse%h: $(srcdir)/cfparse%y
$(YACC) --verbose -t -p cf -d -o cfparse.c $<
%.o: %.c
%.o: %.c | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
main.o: main.c globals.h $(srcdir)/../version_base.h ../version_tag.h Makefile
main.o: main.c globals.h $(srcdir)/../version_base.h ../version_tag.h Makefile | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c -DIVL_ROOT='"@libdir@/ivl$(suffix)"' -DIVL_SUFFIX='"$(suffix)"' -DIVL_INC='"@includedir@"' -DIVL_LIB='"@libdir@"' -DDLLIB='"@DLLIB@"' -DIVL_INCLUDE_INSTALL_DIR="\"$(realpath $(DESTDIR)/$(includedir))\"" $(srcdir)/main.c
mv $*.d dep
+3
View File
@@ -69,6 +69,9 @@ const char HELP[] =
# include <libiberty.h>
#endif
#endif
#ifdef __APPLE__
# include <mach-o/dyld.h>
#endif
#include <fcntl.h>
#ifdef HAVE_GETOPT_H
+2
View File
@@ -1,5 +1,7 @@
#!/bin/sh
#
# Copyright (c) 1998-2026 Stephen Williams ([email protected])
#
# 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
+23 -13
View File
@@ -1,7 +1,7 @@
#ifndef IVL_ivl_dlfcn_H
#define IVL_ivl_dlfcn_H
/*
* Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
* Copyright (c) 2001-2026 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
@@ -21,7 +21,11 @@
#if defined(__MINGW32__)
# include <windows.h>
#if defined(__cplusplus)
# include <cstdio>
#else
# include <stdio.h>
#endif
typedef void * ivl_dll_t;
#elif defined(HAVE_DLFCN_H)
# include <dlfcn.h>
@@ -32,7 +36,7 @@ typedef shl_t ivl_dll_t;
#endif
#if defined(__MINGW32__)
inline ivl_dll_t ivl_dlopen(const char *name, bool)
static inline ivl_dll_t ivl_dlopen(const char *name, bool global_flag)
{
static char full_name[4096];
unsigned long length = GetFullPathName(name, sizeof(full_name),
@@ -40,16 +44,18 @@ inline ivl_dll_t ivl_dlopen(const char *name, bool)
if ((length == 0) || (length > sizeof(full_name)))
return 0;
(void)global_flag;
return (void *)LoadLibrary(full_name);
}
inline void *ivl_dlsym(ivl_dll_t dll, const char *nm)
static inline void *ivl_dlsym(ivl_dll_t dll, const char *nm)
{ return (void *)GetProcAddress((HINSTANCE)dll,nm);}
inline void ivl_dlclose(ivl_dll_t dll)
static inline void ivl_dlclose(ivl_dll_t dll)
{ (void)FreeLibrary((HINSTANCE)dll);}
inline const char *dlerror(void)
static inline const char *dlerror(void)
{
static char msg[256];
unsigned long err = GetLastError();
@@ -66,10 +72,10 @@ inline const char *dlerror(void)
}
#elif defined(HAVE_DLFCN_H)
inline ivl_dll_t ivl_dlopen(const char*name, bool global_flag)
static inline ivl_dll_t ivl_dlopen(const char*name, bool global_flag)
{ return dlopen(name,RTLD_LAZY|(global_flag?RTLD_GLOBAL:0)); }
inline void* ivl_dlsym(ivl_dll_t dll, const char*nm)
static inline void* ivl_dlsym(ivl_dll_t dll, const char*nm)
{
void*sym = dlsym(dll, nm);
/* Not found? try without the leading _ */
@@ -78,24 +84,28 @@ inline void* ivl_dlsym(ivl_dll_t dll, const char*nm)
return sym;
}
inline void ivl_dlclose(ivl_dll_t dll)
static inline void ivl_dlclose(ivl_dll_t dll)
{ dlclose(dll); }
#elif defined(HAVE_DL_H)
inline ivl_dll_t ivl_dlopen(const char*name)
{ return shl_load(name, BIND_IMMEDIATE, 0); }
static inline ivl_dll_t ivl_dlopen(const char*name, bool global_flag)
{
(void)global_flag;
inline void* ivl_dlsym(ivl_dll_t dll, const char*nm)
return shl_load(name, BIND_IMMEDIATE, 0);
}
static inline void* ivl_dlsym(ivl_dll_t dll, const char*nm)
{
void*sym;
int rc = shl_findsym(&dll, nm, TYPE_PROCEDURE, &sym);
return (rc == 0) ? sym : 0;
}
inline void ivl_dlclose(ivl_dll_t dll)
static inline void ivl_dlclose(ivl_dll_t dll)
{ shl_unload(dll); }
inline const char*dlerror(void)
static inline const char*dlerror(void)
{ return strerror( errno ); }
#endif
+1
View File
@@ -34,4 +34,5 @@ tmp_blif.vvp
dump.vcd
dump.lxt
dump.lx2
dump.fst
foo.vcd
+1
View File
@@ -1,5 +1,6 @@
#!/bin/sh
# Copyright (c) 1998-2026 Stephen Williams ([email protected])
#
# This source code is free software; you can redistribute it
# and/or modify it in source code form under the terms of the GNU
+1
View File
@@ -0,0 +1 @@
FST info: dumpfile dump.fst opened for output.
+1
View File
@@ -31,6 +31,7 @@ br_gh703 vvp_tests/br_gh703.json
br_gh710a vvp_tests/br_gh710a.json
br_gh710b vvp_tests/br_gh710b.json
br_gh710c vvp_tests/br_gh710c.json
br_gh710d vvp_tests/br_gh710d.json
br_gh939 vvp_tests/br_gh939.json
br_gh1001 vvp_tests/br_gh1001.json
br_gh1018 vvp_tests/br_gh1018.json
+7
View File
@@ -0,0 +1,7 @@
{
"type" : "normal",
"source" : "br_gh710.v",
"gold" : "br_gh710d",
"iverilog-args" : [ "-g2009" ],
"vvp-args-extended" : [ "-fst" ]
}
+1 -1
View File
@@ -101,7 +101,7 @@ libveriuser.a: libveriuser.o
$(AR) cvq $@ libveriuser.o
$(RANLIB) $@
%.o: %.c config.h
%.o: %.c config.h | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+3
View File
@@ -14,6 +14,9 @@
#
# git push -u origin v13-branch
#
# After this update the master branch to the next version and update
# vvp/examples/*.vvp to match the new version.
#
if [ $# -ne 1 ] ; then
echo "Usage: CREATE_BRANCH.sh <major-number>"
+4 -72
View File
@@ -38,74 +38,6 @@ using namespace std;
struct dll_target dll_target_obj;
#if defined(__WIN32__)
inline ivl_dll_t ivl_dlopen(const char *name)
{
ivl_dll_t res = static_cast<ivl_dll_t>(LoadLibrary(name));
return res;
}
inline void * ivl_dlsym(ivl_dll_t dll, const char *nm)
{
return reinterpret_cast<void*>(GetProcAddress((HMODULE)dll, nm));
}
inline void ivl_dlclose(ivl_dll_t dll)
{
FreeLibrary((HMODULE)dll);
}
const char *dlerror(void)
{
static char msg[256];
unsigned long err = GetLastError();
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
err,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &msg,
sizeof(msg) - 1,
NULL
);
return msg;
}
#elif defined(HAVE_DLFCN_H)
inline ivl_dll_t ivl_dlopen(const char*name)
{ return dlopen(name,RTLD_LAZY); }
inline void* ivl_dlsym(ivl_dll_t dll, const char*nm)
{
void*sym = dlsym(dll, nm);
/* Not found? try without the leading _ */
if (sym == 0 && nm[0] == '_')
sym = dlsym(dll, nm+1);
return sym;
}
inline void ivl_dlclose(ivl_dll_t dll)
{ dlclose(dll); }
#elif defined(HAVE_DL_H)
inline ivl_dll_t ivl_dlopen(const char*name)
{ return shl_load(name, BIND_IMMEDIATE, 0); }
inline void* ivl_dlsym(ivl_dll_t dll, const char*nm)
{
void*sym;
int rc = shl_findsym(&dll, nm, TYPE_PROCEDURE, &sym);
return (rc == 0) ? sym : 0;
}
inline void ivl_dlclose(ivl_dll_t dll)
{ shl_unload(dll); }
inline const char*dlerror(void)
{ return strerror( errno ); }
#endif
ivl_scope_s::ivl_scope_s()
: func_type(IVL_VT_NO_TYPE)
{
@@ -667,13 +599,13 @@ bool dll_target::start_design(const Design*des)
{
const char*dll_path_ = des->get_flag("DLL");
dll_ = ivl_dlopen(dll_path_);
dll_ = ivl_dlopen(dll_path_, false);
if ((dll_ == 0) && (dll_path_[0] != '/')) {
size_t len = strlen(basedir) + 1 + strlen(dll_path_) + 1;
char*tmp = new char[len];
snprintf(tmp, len, "%s/%s", basedir, dll_path_);
dll_ = ivl_dlopen(tmp);
dll_ = ivl_dlopen(tmp, false);
delete[]tmp;
}
@@ -2852,13 +2784,13 @@ bool dll_target::signal_paths(const NetNet*net)
void dll_target::test_version(const char*target_name)
{
dll_ = ivl_dlopen(target_name);
dll_ = ivl_dlopen(target_name, false);
if ((dll_ == 0) && (target_name[0] != '/')) {
size_t len = strlen(basedir) + 1 + strlen(target_name) + 1;
char*tmp = new char[len];
snprintf(tmp, len, "%s/%s", basedir, target_name);
dll_ = ivl_dlopen(tmp);
dll_ = ivl_dlopen(tmp, false);
delete[]tmp;
}
+1 -13
View File
@@ -22,24 +22,12 @@
# include "target.h"
# include "ivl_target.h"
# include "ivl_target_priv.h"
# include "ivl_dlfcn.h"
# include "StringHeap.h"
# include "netlist.h"
# include <vector>
# include <map>
#if defined(__MINGW32__)
#include <windows.h>
typedef void *ivl_dll_t;
#elif defined(HAVE_DLFCN_H)
# include <dlfcn.h>
typedef void* ivl_dll_t;
#elif defined(HAVE_DL_H)
# include <dl.h>
typedef shl_t ivl_dll_t;
#else
# error No DLL stub support for this target.
#endif
/*
* The DLL target type loads a named object file to handle the process
* of scanning the netlist. When it is time to start the design, I
+1 -1
View File
@@ -70,7 +70,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.cc
%.o: %.cc | dep
$(CXX) $(CPPFLAGS) $(CXXFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -73,7 +73,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.c
%.o: %.c | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -68,7 +68,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.c
%.o: %.c | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -67,7 +67,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.c
%.o: %.c | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -82,7 +82,7 @@ stamp-pcb_config-h: $(srcdir)/pcb_config.h.in ../config.status
cd ..; ./config.status --header=tgt-pcb/pcb_config.h
pcb_config.h: stamp-pcb_config-h
%.o: %.cc
%.o: %.cc | dep
$(CXX) $(CPPFLAGS) $(CXXFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -68,7 +68,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.cc
%.o: %.cc | dep
$(CXX) $(CPPFLAGS) $(CXXFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -69,7 +69,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.c
%.o: %.c | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -67,7 +67,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.c
%.o: %.c | dep
$(CC) $(CPPFLAGS) $(CFLAGS) -MD -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -72,7 +72,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.cc vhdl_config.h
%.o: %.cc vhdl_config.h | dep
$(CXX) $(CPPFLAGS) $(CXXFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -68,7 +68,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.c
%.o: %.c | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -76,7 +76,7 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.c vvp_config.h
%.o: %.c vvp_config.h | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+1 -1
View File
@@ -2,7 +2,7 @@
#
%define major 13
%define minor 0
%define rev_date 20251012
%define rev_date 20260301
# Normally, the suff-ix is %nil, meaning the suffix is to not be used.
# But if the builder wants to make a suffixed package, he may set this
# to a value (i.e. -test) to cause suffixes to be put in all the right
+1 -1
View File
@@ -10,7 +10,7 @@
* This will be appended to the version. Use this to mark development
* versions and the like.
*/
# define VERSION_EXTRA " (devel)"
# define VERSION_EXTRA " (stable)"
# define VERSION_STRINGIFY(x) #x
# define VERSION_STR(a,b,extra) VERSION_STRINGIFY(a.b) extra
+2 -2
View File
@@ -104,11 +104,11 @@ dep:
vhdlpp@EXEEXT@: $O
$(CXX) -o vhdlpp@EXEEXT@ $(LDFLAGS) $O $(LIBS)
%.o: $(srcdir)/../libmisc/%.cc
%.o: $(srcdir)/../libmisc/%.cc | dep
$(CXX) $(CPPFLAGS) $(CXXFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep/$*.d
%.o: %.cc vhdlpp_config.h
%.o: %.cc vhdlpp_config.h | dep
$(CXX) $(CPPFLAGS) $(CXXFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep/$*.d
+2 -2
View File
@@ -123,11 +123,11 @@ Makefile: $(srcdir)/Makefile.in ../config.status
dep:
mkdir dep
%.o: %.c vpi_config.h
%.o: %.c vpi_config.h | dep
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
%.o: %.cc vpi_config.h
%.o: %.cc vpi_config.h | dep
$(CXX) $(CPPFLAGS) $(CXXFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep
+3 -2
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2023 Tony Bybell.
* Copyright (c) 2009-2026 Tony Bybell.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -3203,7 +3203,8 @@ static const char *modtypes[] = {"module",
"vhdl_for_generate",
"vhdl_if_generate",
"vhdl_generate",
"vhdl_package"};
"vhdl_package",
"sv_array"};
static const char *attrtypes[] = {"misc", "array", "enum", "class"};
+3 -2
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2018 Tony Bybell.
* Copyright (c) 2009-2026 Tony Bybell.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -108,7 +108,8 @@ enum fstScopeType
FST_ST_VHDL_GENERATE = 20,
FST_ST_VHDL_PACKAGE = 21,
FST_ST_MAX = 21,
FST_ST_SV_ARRAY = 22,
FST_ST_MAX = 22,
FST_ST_GEN_ATTRBEGIN = 252,
FST_ST_GEN_ATTREND = 253,
+1 -1
View File
@@ -21,7 +21,7 @@
#include "compiler.h"
#include "vpi_user.h"
#include "sv_vpi_user.h"
#include "vvp/ivl_dlfcn.h"
#include "ivl_dlfcn.h"
using namespace std;
+2 -2
View File
@@ -159,11 +159,11 @@ vvp@EXEEXT@: $O main.o
endif
endif
%.o: %.cc config.h
%.o: %.cc config.h | dep
$(CXX) $(CPPFLAGS) -DIVL_SUFFIX='"$(suffix)"' $(MDIR1) $(MDIR2) $(CXXFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep/$*.d
%.o: %.c config.h
%.o: %.c config.h | dep
$(CC) $(CPPFLAGS) $(MDIR1) $(MDIR2) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
mv $*.d dep/$*.d
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
; Copyright (c) 2001 Stephan Boettcher <[email protected]>
;
; This program is free software; you can redistribute it and/or modify
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
+2 -2
View File
@@ -1,7 +1,7 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; Copyright (c) 2001-2015 Stephen Williams ([email protected])
; Copyright (c) 2001-2026 Stephen Williams ([email protected])
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
+1 -1
View File
@@ -1,4 +1,4 @@
:ivl_version "12.0" "vec4-stack";
:ivl_version "13.0" "vec4-stack";
:vpi_module "system";
; This program is free software; you can redistribute it and/or modify