Clean up spurious trailing white space.
This commit is contained in:
parent
b3a3428b9a
commit
e4ae832153
|
|
@ -16,7 +16,7 @@
|
|||
# 59 Temple Place - Suite 330
|
||||
# Boston, MA 02111-1307, USA
|
||||
#
|
||||
#ident "$Id: Makefile.in,v 1.167 2004/09/18 01:59:44 steve Exp $"
|
||||
#ident "$Id: Makefile.in,v 1.168 2004/10/04 01:10:51 steve Exp $"
|
||||
#
|
||||
#
|
||||
SHELL = /bin/sh
|
||||
|
|
@ -93,7 +93,7 @@ clean:
|
|||
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) $@); done
|
||||
for dir in vpi ivlpp tgt-verilog tgt-stub driver; \
|
||||
do (cd $$dir ; $(MAKE) $@); done
|
||||
rm -f *.o parse.cc parse.cc.output parse.h lexor.cc
|
||||
rm -f *.o parse.cc parse.cc.output parse.h lexor.cc
|
||||
rm -f lexor_keyword.cc libivl.a libvpi.a iverilog-vpi syn-rules.cc*
|
||||
rm -rf dep ivl@EXEEXT@
|
||||
|
||||
|
|
@ -133,7 +133,7 @@ ifeq (@WIN32@,yes)
|
|||
# export and import library, and the last link makes a, ivl.exe
|
||||
# that really exports the things that the import library imports.
|
||||
ivl@EXEEXT@: $O ivl.def
|
||||
$(CXX) -o ivl@EXEEXT@ $O $(dllib) @EXTRALIBS@
|
||||
$(CXX) -o ivl@EXEEXT@ $O $(dllib) @EXTRALIBS@
|
||||
dlltool --dllname ivl@EXEEXT@ --def ivl.def \
|
||||
--output-lib libivl.a --output-exp ivl.exp
|
||||
$(CXX) -o ivl@EXEEXT@ ivl.exp $O $(dllib) @EXTRALIBS@
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: Module.cc,v 1.24 2004/06/13 04:56:53 steve Exp $"
|
||||
#ident "$Id: Module.cc,v 1.25 2004/10/04 01:10:51 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -76,7 +76,7 @@ unsigned Module::port_count() const
|
|||
/*
|
||||
* Return the array of PEIdent object that are at this port of the
|
||||
* module. If the port is internally unconnected, return an empty
|
||||
* array.
|
||||
* array.
|
||||
*/
|
||||
const svector<PEIdent*>& Module::get_port(unsigned idx) const
|
||||
{
|
||||
|
|
@ -150,6 +150,9 @@ const list<PProcess*>& Module::get_behaviors() const
|
|||
|
||||
/*
|
||||
* $Log: Module.cc,v $
|
||||
* Revision 1.25 2004/10/04 01:10:51 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.24 2004/06/13 04:56:53 steve
|
||||
* Add support for the default_nettype directive.
|
||||
*
|
||||
|
|
|
|||
9
PExpr.cc
9
PExpr.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: PExpr.cc,v 1.34 2004/02/20 06:22:56 steve Exp $"
|
||||
#ident "$Id: PExpr.cc,v 1.35 2004/10/04 01:10:51 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -67,12 +67,12 @@ bool PEBinary::is_constant(Module*mod) const
|
|||
return left_->is_constant(mod) && right_->is_constant(mod);
|
||||
}
|
||||
|
||||
PECallFunction::PECallFunction(const hname_t&n, const svector<PExpr *> &parms)
|
||||
PECallFunction::PECallFunction(const hname_t&n, const svector<PExpr *> &parms)
|
||||
: path_(n), parms_(parms)
|
||||
{
|
||||
}
|
||||
|
||||
PECallFunction::PECallFunction(const hname_t&n)
|
||||
PECallFunction::PECallFunction(const hname_t&n)
|
||||
: path_(n)
|
||||
{
|
||||
}
|
||||
|
|
@ -262,6 +262,9 @@ bool PEUnary::is_constant(Module*m) const
|
|||
|
||||
/*
|
||||
* $Log: PExpr.cc,v $
|
||||
* Revision 1.35 2004/10/04 01:10:51 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.34 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
|
|
|
|||
7
PExpr.h
7
PExpr.h
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: PExpr.h,v 1.65 2003/02/08 19:49:21 steve Exp $"
|
||||
#ident "$Id: PExpr.h,v 1.66 2004/10/04 01:10:51 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include <string>
|
||||
|
|
@ -160,7 +160,7 @@ class PEEvent : public PExpr {
|
|||
|
||||
edge_t type() const;
|
||||
PExpr* expr() const;
|
||||
|
||||
|
||||
virtual void dump(ostream&) const;
|
||||
|
||||
private:
|
||||
|
|
@ -492,6 +492,9 @@ class PECallFunction : public PExpr {
|
|||
|
||||
/*
|
||||
* $Log: PExpr.h,v $
|
||||
* Revision 1.66 2004/10/04 01:10:51 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.65 2003/02/08 19:49:21 steve
|
||||
* Calculate delay statement delays using elaborated
|
||||
* expressions instead of pre-elaborated expression
|
||||
|
|
|
|||
7
PGate.h
7
PGate.h
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: PGate.h,v 1.28 2004/03/08 00:47:44 steve Exp $"
|
||||
#ident "$Id: PGate.h,v 1.29 2004/10/04 01:10:52 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "svector.h"
|
||||
|
|
@ -50,7 +50,7 @@ class Module;
|
|||
* strength of the 1 drive.
|
||||
*/
|
||||
class PGate : public LineInfo {
|
||||
|
||||
|
||||
public:
|
||||
enum strength_t { HIGHZ, WEAK, PULL, STRONG, SUPPLY };
|
||||
|
||||
|
|
@ -227,6 +227,9 @@ class PGModule : public PGate {
|
|||
|
||||
/*
|
||||
* $Log: PGate.h,v $
|
||||
* Revision 1.29 2004/10/04 01:10:52 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.28 2004/03/08 00:47:44 steve
|
||||
* primitive ports can bind bi name.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ execute even the most trivial design. For the purposes of simulation,
|
|||
we use as our example *the* most trivial simulation:
|
||||
|
||||
module main;
|
||||
|
||||
initial
|
||||
|
||||
initial
|
||||
begin
|
||||
$display("Hello, World");
|
||||
$finish ;
|
||||
|
|
|
|||
10
README.txt
10
README.txt
|
|
@ -1,4 +1,4 @@
|
|||
THE ICARUS VERILOG COMPILATION SYSTEM
|
||||
THE ICARUS VERILOG COMPILATION SYSTEM
|
||||
Copyright 2000-2003 Stephen Williams
|
||||
|
||||
|
||||
|
|
@ -9,7 +9,7 @@ described in the IEEE-1364 standard. Of course, it's not quite there
|
|||
yet. It does currently handle a mix of structural and behavioral
|
||||
constructs. For a view of the current state of Icarus Verilog, see its
|
||||
home page at <http://www.icarus.com/eda/verilog>.
|
||||
|
||||
|
||||
Icarus Verilog is not aimed at being a simulator in the traditional
|
||||
sense, but a compiler that generates code employed by back-end
|
||||
tools. These back-end tools currently include a simulator engine
|
||||
|
|
@ -296,8 +296,8 @@ Example: Compiling "hello.vl"
|
|||
|
||||
------------------------ hello.vl ----------------------------
|
||||
module main();
|
||||
|
||||
initial
|
||||
|
||||
initial
|
||||
begin
|
||||
$display("Hi there");
|
||||
$finish ;
|
||||
|
|
@ -307,7 +307,7 @@ endmodule
|
|||
|
||||
--------------------------------------------------------------
|
||||
|
||||
Ensure that "iverilog" is on your search path, and the vpi library
|
||||
Ensure that "iverilog" is on your search path, and the vpi library
|
||||
is available.
|
||||
|
||||
To compile the program:
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
AC_DEFUN([AX_CPP_IDENT],
|
||||
[AC_CACHE_CHECK([for ident support in C compiler], ax_cv_cpp_ident,
|
||||
[AC_TRY_COMPILE([
|
||||
#ident "$Id: aclocal.m4,v 1.5 2004/09/27 22:34:10 steve Exp $"
|
||||
#ident "$Id: aclocal.m4,v 1.6 2004/10/04 01:10:52 steve Exp $"
|
||||
],[while (0) {}],
|
||||
[AS_VAR_SET(ax_cv_cpp_ident, yes)],
|
||||
[AS_VAR_SET(ax_cv_cpp_ident, no)])])
|
||||
|
|
@ -137,16 +137,16 @@ AC_DEFUN([AX_C_PICFLAG],
|
|||
[AC_MSG_CHECKING([for flag to make position independent code])
|
||||
PICFLAG=-fPIC
|
||||
case "${host}" in
|
||||
|
||||
|
||||
*-*-cygwin*)
|
||||
PICFLAG=
|
||||
;;
|
||||
|
||||
*-*-hpux*)
|
||||
*-*-hpux*)
|
||||
PICFLAG=+z
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
esac
|
||||
AC_SUBST(PICFLAG)
|
||||
AC_MSG_RESULT($PICFLAG)
|
||||
])# AX_C_PICFLAG
|
||||
|
|
@ -174,19 +174,19 @@ case "${host}" in
|
|||
;;
|
||||
|
||||
*-*-cygwin*)
|
||||
rdynamic=""
|
||||
rdynamic=""
|
||||
;;
|
||||
|
||||
*-*-hpux*)
|
||||
rdynamic="-E"
|
||||
;;
|
||||
|
||||
|
||||
*-*-darwin*)
|
||||
rdynamic="-Wl,-all_load"
|
||||
strip_dynamic="-SX"
|
||||
;;
|
||||
|
||||
esac
|
||||
esac
|
||||
AC_SUBST(rdynamic)
|
||||
AC_MSG_RESULT($rdynamic)
|
||||
AC_SUBST(strip_dynamic)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: ivl_dlfcn.h,v 1.2 2003/12/12 05:43:08 steve Exp $"
|
||||
#ident "$Id: ivl_dlfcn.h,v 1.3 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
#if defined(__MINGW32__)
|
||||
|
|
@ -48,14 +48,14 @@ inline const char *dlerror(void)
|
|||
{
|
||||
static char msg[256];
|
||||
unsigned long err = GetLastError();
|
||||
FormatMessage(
|
||||
FormatMessage(
|
||||
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL,
|
||||
err,
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
||||
(LPTSTR) &msg,
|
||||
sizeof(msg) - 1,
|
||||
NULL
|
||||
NULL
|
||||
);
|
||||
return msg;
|
||||
}
|
||||
|
|
@ -96,6 +96,9 @@ inline const char*dlerror(void)
|
|||
|
||||
/*
|
||||
* $Log: ivl_dlfcn.h,v $
|
||||
* Revision 1.3 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.2 2003/12/12 05:43:08 steve
|
||||
* Some systems dlsym requires leading _ or not on whim.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: compiler.h,v 1.25 2004/09/25 01:58:44 steve Exp $"
|
||||
#ident "$Id: compiler.h,v 1.26 2004/10/04 01:10:52 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include <list>
|
||||
|
|
@ -65,7 +65,7 @@
|
|||
/*
|
||||
* These are flags to enable various sorts of warnings. By default all
|
||||
* the warnings are off, the -W<list> parameter arranges for each to be
|
||||
* enabled.
|
||||
* enabled.
|
||||
*/
|
||||
|
||||
/* Implicit definitions of wires. */
|
||||
|
|
@ -136,6 +136,9 @@ extern int load_sys_func_table(const char*path);
|
|||
|
||||
/*
|
||||
* $Log: compiler.h,v $
|
||||
* Revision 1.26 2004/10/04 01:10:52 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.25 2004/09/25 01:58:44 steve
|
||||
* Add a debug_elaborate flag
|
||||
*
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: config.h.in,v 1.10 2003/08/26 16:26:01 steve Exp $"
|
||||
#ident "$Id: config.h.in,v 1.11 2004/10/04 01:10:52 steve Exp $"
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
#endif
|
||||
|
||||
# undef NEED_LU
|
||||
# undef NEED_TU
|
||||
# undef NEED_TU
|
||||
# undef WLU
|
||||
# undef WTU
|
||||
# undef HAVE_TIMES
|
||||
|
|
@ -50,6 +50,9 @@
|
|||
|
||||
/*
|
||||
* $Log: config.h.in,v $
|
||||
* Revision 1.11 2004/10/04 01:10:52 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.10 2003/08/26 16:26:01 steve
|
||||
* ifdef idents correctly.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ AX_LD_EXTRALIBS
|
|||
# Compiler option for position independent code, needed whan making shared objects.
|
||||
# CFLAGS inherited by cadpli/Makefile?
|
||||
AX_C_PICFLAG
|
||||
|
||||
|
||||
# may modify CPPFLAGS and CFLAGS
|
||||
AX_CPP_PRECOMP
|
||||
|
||||
|
|
|
|||
70
cygwin.txt
70
cygwin.txt
|
|
@ -1,35 +1,35 @@
|
|||
|
||||
This file describes the build procedure under cygwin32 (Windows 95/98/NT/2K)
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Note: Icarus Verilog also compiles to native Windows binaries if you
|
||||
use the instructions in the mingw.txt file. Some people prefer cygwin
|
||||
binaries, and these instructions apply.
|
||||
|
||||
|
||||
To build using cygwin:
|
||||
|
||||
Prerequisites:
|
||||
|
||||
o Latest net release (1.1.4) of cygwin (sources.redhat.com/cygwin)
|
||||
|
||||
Procedure:
|
||||
o Get the source code - see the main Icarus Verilog page for how to
|
||||
do this
|
||||
o cd to the verilog directory
|
||||
o autoconf.sh
|
||||
o ./configure
|
||||
o make
|
||||
o make install
|
||||
|
||||
That's all that's needed.
|
||||
|
||||
To build your own extensions - just include vpi_user.h and link with
|
||||
a command like this:
|
||||
|
||||
$(CC) -shared -o <dllname> <objects> -Wl,--enable-auto-image-base -L../vvm -lvvm -lvpip
|
||||
|
||||
- Venkat Iyer <venkat@comit.com>
|
||||
|
||||
|
||||
|
||||
|
||||
This file describes the build procedure under cygwin32 (Windows 95/98/NT/2K)
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Note: Icarus Verilog also compiles to native Windows binaries if you
|
||||
use the instructions in the mingw.txt file. Some people prefer cygwin
|
||||
binaries, and these instructions apply.
|
||||
|
||||
|
||||
To build using cygwin:
|
||||
|
||||
Prerequisites:
|
||||
|
||||
o Latest net release (1.1.4) of cygwin (sources.redhat.com/cygwin)
|
||||
|
||||
Procedure:
|
||||
o Get the source code - see the main Icarus Verilog page for how to
|
||||
do this
|
||||
o cd to the verilog directory
|
||||
o autoconf.sh
|
||||
o ./configure
|
||||
o make
|
||||
o make install
|
||||
|
||||
That's all that's needed.
|
||||
|
||||
To build your own extensions - just include vpi_user.h and link with
|
||||
a command like this:
|
||||
|
||||
$(CC) -shared -o <dllname> <objects> -Wl,--enable-auto-image-base -L../vvm -lvvm -lvpip
|
||||
|
||||
- Venkat Iyer <venkat@comit.com>
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: design_dump.cc,v 1.148 2004/05/31 23:34:36 steve Exp $"
|
||||
#ident "$Id: design_dump.cc,v 1.149 2004/10/04 01:10:52 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -1064,7 +1064,7 @@ void Design::dump(ostream&o) const
|
|||
{
|
||||
o << "DESIGN TIME PRECISION: 10e" << get_precision() << endl;
|
||||
o << "SCOPES:" << endl;
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
scope != root_scopes_.end(); scope++)
|
||||
(*scope)->dump(o);
|
||||
|
||||
|
|
@ -1089,6 +1089,9 @@ void Design::dump(ostream&o) const
|
|||
|
||||
/*
|
||||
* $Log: design_dump.cc,v $
|
||||
* Revision 1.149 2004/10/04 01:10:52 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.148 2004/05/31 23:34:36 steve
|
||||
* Rewire/generalize parsing an elaboration of
|
||||
* function return values to allow for better
|
||||
|
|
|
|||
1130
driver-vpi/main.c
1130
driver-vpi/main.c
File diff suppressed because it is too large
Load Diff
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: cflexor.lex,v 1.7 2003/08/26 16:26:02 steve Exp $"
|
||||
#ident "$Id: cflexor.lex,v 1.8 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "cfparse.h"
|
||||
|
|
@ -113,10 +113,10 @@ static int comment_enter;
|
|||
is a little bit tricky, as we don't want to mistake a comment for
|
||||
a string word. */
|
||||
"/"[^\*\/].* { cflval.text = strdup(yytext);
|
||||
return TOK_STRING; }
|
||||
return TOK_STRING; }
|
||||
|
||||
[^/\n \t\b\r+-].* { cflval.text = strdup(yytext);
|
||||
return TOK_STRING; }
|
||||
return TOK_STRING; }
|
||||
|
||||
/* Fallback match. */
|
||||
. { return yytext[0]; }
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.TH iverilog 1 "$Date: 2004/03/10 04:51:25 $" Version "$Date: 2004/03/10 04:51:25 $"
|
||||
.TH iverilog 1 "$Date: 2004/10/04 01:10:56 $" Version "$Date: 2004/10/04 01:10:56 $"
|
||||
.SH NAME
|
||||
iverilog - Icarus Verilog compiler
|
||||
|
||||
|
|
@ -57,7 +57,7 @@ language. This flag is most useful to restrict the language to a set
|
|||
supported by tools of specific generations, for compatibility with
|
||||
other tools.
|
||||
.TP 8
|
||||
.B -I\fIincludedir\fP
|
||||
.B -I\fIincludedir\fP
|
||||
Append directory \fIincludedir\fP to list of directories searched
|
||||
for Verilog include files. The \fB-I\fP switch may be used many times
|
||||
to specify several directories to search, the directories are searched
|
||||
|
|
@ -316,7 +316,7 @@ and directory strings.
|
|||
Variable values come from the operating system environment, and not
|
||||
from preprocessor defines elsewhere in the file or the command line.
|
||||
|
||||
.SH EXAMPLES
|
||||
.SH EXAMPLES
|
||||
These examples assume that you have a Verilog source file called hello.v in
|
||||
the current directory
|
||||
|
||||
|
|
@ -349,5 +349,5 @@ vvp(1),
|
|||
.nf
|
||||
Copyright \(co 2002 Stephen Williams
|
||||
|
||||
This document can be freely redistributed according to the terms of the
|
||||
This document can be freely redistributed according to the terms of the
|
||||
GNU General Public License version 2.0
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: elab_anet.cc,v 1.9 2003/09/19 03:50:12 steve Exp $"
|
||||
#ident "$Id: elab_anet.cc,v 1.10 2004/10/04 01:10:52 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -157,7 +157,7 @@ NetNet* PEIdent::elaborate_anet(Design*des, NetScope*scope) const
|
|||
|
||||
cerr << get_line() << ": error: bit/part selects not allowed "
|
||||
<< "on left side of procedural continuous assignment."
|
||||
<< endl;
|
||||
<< endl;
|
||||
des->errors += 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -167,6 +167,9 @@ NetNet* PEIdent::elaborate_anet(Design*des, NetScope*scope) const
|
|||
|
||||
/*
|
||||
* $Log: elab_anet.cc,v $
|
||||
* Revision 1.10 2004/10/04 01:10:52 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.9 2003/09/19 03:50:12 steve
|
||||
* Remove find_memory method from Design class.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: elab_expr.cc,v 1.90 2004/08/28 15:42:11 steve Exp $"
|
||||
#ident "$Id: elab_expr.cc,v 1.91 2004/10/04 01:10:52 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -41,7 +41,7 @@ NetExpr* PExpr::elaborate_expr(Design*des, NetScope*, bool) const
|
|||
/*
|
||||
* Elaborate binary expressions. This involves elaborating the left
|
||||
* and right sides, and creating one of a variety of different NetExpr
|
||||
* types.
|
||||
* types.
|
||||
*/
|
||||
NetEBinary* PEBinary::elaborate_expr(Design*des, NetScope*scope, bool) const
|
||||
{
|
||||
|
|
@ -346,7 +346,7 @@ NetExpr* PECallFunction::elaborate_expr(Design*des, NetScope*scope, bool) const
|
|||
if ((parms_count == 1) && (parms_[0] == 0))
|
||||
parms_count = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
svector<NetExpr*> parms (parms_count);
|
||||
|
||||
|
|
@ -1005,6 +1005,9 @@ NetExpr* PEUnary::elaborate_expr(Design*des, NetScope*scope, bool) const
|
|||
|
||||
/*
|
||||
* $Log: elab_expr.cc,v $
|
||||
* Revision 1.91 2004/10/04 01:10:52 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.90 2004/08/28 15:42:11 steve
|
||||
* Add support for $unsigned.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: elab_lval.cc,v 1.28 2004/08/28 14:59:44 steve Exp $"
|
||||
#ident "$Id: elab_lval.cc,v 1.29 2004/10/04 01:10:52 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
* If there is a part select (i.e., foo[3:1] <= <value>) the NetAssign_
|
||||
* is made only as wide as it needs to be (3 bits in this example) and
|
||||
* connected to the correct bits of foo. A constant bit select is a
|
||||
* special case of the part select.
|
||||
* special case of the part select.
|
||||
*
|
||||
* If the bit-select is non-constant (i.e., foo[<expr>] = <value>) the
|
||||
* NetAssign_ is made wide enough to connect to all the bits of foo,
|
||||
|
|
@ -352,6 +352,9 @@ NetAssign_* PENumber::elaborate_lval(Design*des, NetScope*) const
|
|||
|
||||
/*
|
||||
* $Log: elab_lval.cc,v $
|
||||
* Revision 1.29 2004/10/04 01:10:52 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.28 2004/08/28 14:59:44 steve
|
||||
* More detailed error message about bad variable.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: elab_net.cc,v 1.136 2004/10/04 00:25:46 steve Exp $"
|
||||
#ident "$Id: elab_net.cc,v 1.137 2004/10/04 01:10:52 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -1839,7 +1839,7 @@ NetNet* PEIdent::elaborate_lnet(Design*des, NetScope*scope,
|
|||
if (msb_ && lsb_) {
|
||||
/* Detect a part select. Evaluate the bits and elaborate
|
||||
the l-value by creating a sub-net that links to just
|
||||
the right pins. */
|
||||
the right pins. */
|
||||
verinum*mval = msb_->eval_const(des, scope);
|
||||
assert(mval);
|
||||
verinum*lval = lsb_->eval_const(des, scope);
|
||||
|
|
@ -1949,7 +1949,7 @@ NetNet* PEIdent::elaborate_port(Design*des, NetScope*scope) const
|
|||
if (msb_ && lsb_) {
|
||||
/* Detect a part select. Evaluate the bits and elaborate
|
||||
the l-value by creating a sub-net that links to just
|
||||
the right pins. */
|
||||
the right pins. */
|
||||
verinum*mval = msb_->eval_const(des, scope);
|
||||
assert(mval);
|
||||
verinum*lval = lsb_->eval_const(des, scope);
|
||||
|
|
@ -2511,6 +2511,9 @@ NetNet* PEUnary::elaborate_net(Design*des, NetScope*scope,
|
|||
|
||||
/*
|
||||
* $Log: elab_net.cc,v $
|
||||
* Revision 1.137 2004/10/04 01:10:52 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.136 2004/10/04 00:25:46 steve
|
||||
* Error message to match assertion.
|
||||
*
|
||||
|
|
|
|||
15
elaborate.cc
15
elaborate.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: elaborate.cc,v 1.307 2004/09/05 21:07:26 steve Exp $"
|
||||
#ident "$Id: elaborate.cc,v 1.308 2004/10/04 01:10:52 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -213,7 +213,7 @@ void PGAssign::elaborate(Design*des, NetScope*scope) const
|
|||
NetConst*dev = new NetConst(scope,
|
||||
scope->local_symbol(),
|
||||
verinum::V0);
|
||||
|
||||
|
||||
des->add_node(dev);
|
||||
dev->pin(0).drive0(drive0);
|
||||
dev->pin(0).drive1(drive1);
|
||||
|
|
@ -960,7 +960,7 @@ void PGModule::elaborate_udp_(Design*des, PUdp*udp, NetScope*scope) const
|
|||
if (NetSubnet*tmp = dynamic_cast<NetSubnet*>(sig))
|
||||
delete tmp;
|
||||
}
|
||||
|
||||
|
||||
// All done. Add the object to the design.
|
||||
des->add_node(net);
|
||||
}
|
||||
|
|
@ -2689,7 +2689,7 @@ Design* elaborate(list<perm_string>roots)
|
|||
map<perm_string,Module*>::const_iterator mod = pform_modules.find(*root);
|
||||
if (mod == pform_modules.end()) {
|
||||
cerr << "error: Unable to find the root module \""
|
||||
<< (*root) << "\" in the Verilog source." << endl;
|
||||
<< (*root) << "\" in the Verilog source." << endl;
|
||||
cerr << " : Perhaps ``-s " << (*root)
|
||||
<< "'' is incorrect?" << endl;
|
||||
des->errors++;
|
||||
|
|
@ -2697,9 +2697,9 @@ Design* elaborate(list<perm_string>roots)
|
|||
}
|
||||
|
||||
Module *rmod = (*mod).second;
|
||||
|
||||
|
||||
// Make the root scope, then scan the pform looking for scopes
|
||||
// and parameters.
|
||||
// and parameters.
|
||||
NetScope*scope = des->make_root_scope(*root);
|
||||
scope->time_unit(rmod->time_unit);
|
||||
scope->time_precision(rmod->time_precision);
|
||||
|
|
@ -2769,6 +2769,9 @@ Design* elaborate(list<perm_string>roots)
|
|||
|
||||
/*
|
||||
* $Log: elaborate.cc,v $
|
||||
* Revision 1.308 2004/10/04 01:10:52 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.307 2004/09/05 21:07:26 steve
|
||||
* Support degenerat wait statements.
|
||||
*
|
||||
|
|
|
|||
9
emit.cc
9
emit.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: emit.cc,v 1.76 2004/05/31 23:34:37 steve Exp $"
|
||||
#ident "$Id: emit.cc,v 1.77 2004/10/04 01:10:53 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -372,7 +372,7 @@ bool Design::emit(struct target_t*tgt) const
|
|||
return false;
|
||||
|
||||
// enumerate the scopes
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
scope != root_scopes_.end(); scope++)
|
||||
(*scope)->emit_scope(tgt);
|
||||
|
||||
|
|
@ -388,7 +388,7 @@ bool Design::emit(struct target_t*tgt) const
|
|||
|
||||
|
||||
// emit task and function definitions
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
scope != root_scopes_.end(); scope++)
|
||||
rc &= (*scope)->emit_defs(tgt);
|
||||
|
||||
|
|
@ -511,6 +511,9 @@ bool emit(const Design*des, const char*type)
|
|||
|
||||
/*
|
||||
* $Log: emit.cc,v $
|
||||
* Revision 1.77 2004/10/04 01:10:53 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.76 2004/05/31 23:34:37 steve
|
||||
* Rewire/generalize parsing an elaboration of
|
||||
* function return values to allow for better
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: eval_tree.cc,v 1.61 2004/09/10 23:51:42 steve Exp $"
|
||||
#ident "$Id: eval_tree.cc,v 1.62 2004/10/04 01:10:53 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -1251,7 +1251,7 @@ NetEConst* NetESelect::eval_tree()
|
|||
for (unsigned long idx = 0 ; idx < expr_width() ; idx += 1) {
|
||||
if ((bval >= 0) && ((unsigned long) bval < eval.len()))
|
||||
oval.set(idx, eval.get(bval));
|
||||
else
|
||||
else
|
||||
oval.set(idx, verinum::Vx);
|
||||
|
||||
bval += 1;
|
||||
|
|
@ -1423,7 +1423,7 @@ NetEConst* NetEUnary::eval_tree()
|
|||
|
||||
case '-': {
|
||||
if (val.is_defined()) {
|
||||
|
||||
|
||||
verinum tmp (verinum::V0, val.len());
|
||||
tmp.has_sign(val.has_sign());
|
||||
val = tmp - val;
|
||||
|
|
@ -1551,6 +1551,9 @@ NetEConst* NetEUReduce::eval_tree()
|
|||
|
||||
/*
|
||||
* $Log: eval_tree.cc,v $
|
||||
* Revision 1.62 2004/10/04 01:10:53 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.61 2004/09/10 23:51:42 steve
|
||||
* Fix the evaluation of constant ternary expressions.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -218,11 +218,11 @@ output [1:48] k;
|
|||
wire [1:56] YY;
|
||||
|
||||
assign YY[1:28]=c; assign YY[29:56]=d;
|
||||
|
||||
|
||||
assign k[1]=YY[14]; assign k[2]=YY[17]; assign k[3]=YY[11]; assign k[4]=YY[24]; assign k[5]=YY[1]; assign k[6]=YY[5];
|
||||
assign k[7]=YY[3]; assign k[8]=YY[28]; assign k[9]=YY[15]; assign k[10]=YY[6]; assign k[11]=YY[21]; assign k[12]=YY[10];
|
||||
assign k[13]=YY[23]; assign k[14]=YY[19]; assign k[15]=YY[12]; assign k[16]=YY[4]; assign k[17]=YY[26]; assign k[18]=YY[8];
|
||||
assign k[19]=YY[16]; assign k[20]=YY[7]; assign k[21]=YY[27]; assign k[22]=YY[20]; assign k[23]=YY[13]; assign k[24]=YY[2];
|
||||
assign k[13]=YY[23]; assign k[14]=YY[19]; assign k[15]=YY[12]; assign k[16]=YY[4]; assign k[17]=YY[26]; assign k[18]=YY[8];
|
||||
assign k[19]=YY[16]; assign k[20]=YY[7]; assign k[21]=YY[27]; assign k[22]=YY[20]; assign k[23]=YY[13]; assign k[24]=YY[2];
|
||||
assign k[25]=YY[41]; assign k[26]=YY[52]; assign k[27]=YY[31]; assign k[28]=YY[37]; assign k[29]=YY[47]; assign k[30]=YY[55];
|
||||
assign k[31]=YY[30]; assign k[32]=YY[40]; assign k[33]=YY[51]; assign k[34]=YY[45]; assign k[35]=YY[33]; assign k[36]=YY[48];
|
||||
assign k[37]=YY[44]; assign k[38]=YY[49]; assign k[39]=YY[39]; assign k[40]=YY[56]; assign k[41]=YY[34]; assign k[42]=YY[53];
|
||||
|
|
@ -252,13 +252,13 @@ input [1:64] key;
|
|||
output [1:48] k1x,k2x,k3x,k4x,k5x,k6x,k7x,k8x,k9x,k10x,k11x,k12x,k13x,k14x,k15x,k16x;
|
||||
wire [1:28] c0x,c1x,c2x,c3x,c4x,c5x,c6x,c7x,c8x,c9x,c10x,c11x,c12x,c13x,c14x,c15x,c16x;
|
||||
wire [1:28] d0x,d1x,d2x,d3x,d4x,d5x,d6x,d7x,d8x,d9x,d10x,d11x,d12x,d13x,d14x,d15x,d16x;
|
||||
|
||||
|
||||
pc1 pc1(key, c0x, d0x);
|
||||
|
||||
rol1 rc1(c1x, c0x); rol1 rd1(d1x, d0x);
|
||||
rol1 rc2(c2x, c1x); rol1 rd2(d2x, d1x);
|
||||
rol2 rc3(c3x, c2x); rol2 rd3(d3x, d2x);
|
||||
rol2 rc4(c4x, c3x); rol2 rd4(d4x, d3x);
|
||||
rol2 rc4(c4x, c3x); rol2 rd4(d4x, d3x);
|
||||
rol2 rc5(c5x, c4x); rol2 rd5(d5x, d4x);
|
||||
rol2 rc6(c6x, c5x); rol2 rd6(d6x, d5x);
|
||||
rol2 rc7(c7x, c6x); rol2 rd7(d7x, d6x);
|
||||
|
|
@ -272,7 +272,7 @@ rol2 rce(c14x, c13x); rol2 rde(d14x, d13x);
|
|||
rol2 rcf(c15x, c14x); rol2 rdf(d15x, d14x);
|
||||
rol1 rcg(c16x, c15x); rol1 rdg(d16x, d15x);
|
||||
|
||||
|
||||
|
||||
pc2 pc2x1(c1x,d1x,k1x);
|
||||
pc2 pc2x2(c2x,d2x,k2x);
|
||||
pc2 pc2x3(c3x,d3x,k3x);
|
||||
|
|
@ -913,7 +913,7 @@ assign l0x[17]=pt[62]; assign l0x[18]=pt[54]; assign l0x[19]=pt[46
|
|||
assign l0x[21]=pt[30]; assign l0x[22]=pt[22]; assign l0x[23]=pt[14]; assign l0x[24]=pt[6];
|
||||
assign l0x[25]=pt[64]; assign l0x[26]=pt[56]; assign l0x[27]=pt[48]; assign l0x[28]=pt[40];
|
||||
assign l0x[29]=pt[32]; assign l0x[30]=pt[24]; assign l0x[31]=pt[16]; assign l0x[32]=pt[8];
|
||||
|
||||
|
||||
assign r0x[1]=pt[57]; assign r0x[2]=pt[49]; assign r0x[3]=pt[41]; assign r0x[4]=pt[33];
|
||||
assign r0x[5]=pt[25]; assign r0x[6]=pt[17]; assign r0x[7]=pt[9]; assign r0x[8]=pt[1];
|
||||
assign r0x[9]=pt[59]; assign r0x[10]=pt[51]; assign r0x[11]=pt[43]; assign r0x[12]=pt[35];
|
||||
|
|
@ -935,7 +935,7 @@ assign e[9]=ri[6]; assign e[10]=ri[7]; assign e[11]=ri[8]; assign e[12]=r
|
|||
assign e[17]=ri[12]; assign e[18]=ri[13]; assign e[19]=ri[12]; assign e[20]=ri[13]; assign e[21]=ri[14]; assign e[22]=ri[15]; assign e[23]=ri[16]; assign e[24]=ri[17];
|
||||
assign e[25]=ri[16]; assign e[26]=ri[17]; assign e[27]=ri[18]; assign e[28]=ri[19]; assign e[29]=ri[20]; assign e[30]=ri[21]; assign e[31]=ri[20]; assign e[32]=ri[21];
|
||||
assign e[33]=ri[22]; assign e[34]=ri[23]; assign e[35]=ri[24]; assign e[36]=ri[25]; assign e[37]=ri[24]; assign e[38]=ri[25]; assign e[39]=ri[26]; assign e[40]=ri[27];
|
||||
assign e[41]=ri[28]; assign e[42]=ri[29]; assign e[43]=ri[28]; assign e[44]=ri[29]; assign e[45]=ri[30]; assign e[46]=ri[31]; assign e[47]=ri[32]; assign e[48]=ri[1];
|
||||
assign e[41]=ri[28]; assign e[42]=ri[29]; assign e[43]=ri[28]; assign e[44]=ri[29]; assign e[45]=ri[30]; assign e[46]=ri[31]; assign e[47]=ri[32]; assign e[48]=ri[1];
|
||||
|
||||
endmodule
|
||||
|
||||
|
|
|
|||
|
|
@ -26,21 +26,21 @@
|
|||
* Compile this program with the command:
|
||||
*
|
||||
* iverilog -ohello hello.vl
|
||||
*
|
||||
*
|
||||
* After churning for a little while, the program will create the output
|
||||
* file "hello" which is compiled, linked and ready to run. Run this
|
||||
* program like so:
|
||||
*
|
||||
*
|
||||
* vvp hello
|
||||
*
|
||||
*
|
||||
* and the program will print the message to its output. Easy! For
|
||||
* more on how to make the iverilog command work, see the iverilog
|
||||
* manual page.
|
||||
*/
|
||||
|
||||
module main();
|
||||
|
||||
initial
|
||||
|
||||
initial
|
||||
begin
|
||||
$display("Hello, World");
|
||||
$finish ;
|
||||
|
|
|
|||
|
|
@ -26,21 +26,21 @@
|
|||
* Compile this program with the command:
|
||||
*
|
||||
* iverilog -ohello_vpi hello_vpi.vl
|
||||
*
|
||||
*
|
||||
* After churning for a little while, the program will create the output
|
||||
* file "hello" which is compiled, linked and ready to run. Run this
|
||||
* program like so:
|
||||
*
|
||||
*
|
||||
* vvp -M. -mhello_vpi hello_vpi
|
||||
*
|
||||
*
|
||||
* and the program will print the message to its output. Easy! For
|
||||
* more on how to make the iverilog command work, see the iverilog
|
||||
* manual page.
|
||||
*/
|
||||
|
||||
module main();
|
||||
|
||||
initial
|
||||
|
||||
initial
|
||||
begin
|
||||
$my_hello;
|
||||
$finish ;
|
||||
|
|
|
|||
|
|
@ -20,36 +20,36 @@
|
|||
/*
|
||||
* This example program simulates a 16x1 ram, and is used as an
|
||||
* example for using VCD output and waveform viewers.
|
||||
*
|
||||
*
|
||||
* Like any other Verilog simulation, compile this program with the
|
||||
* command:
|
||||
*
|
||||
*
|
||||
* iverilog show_vcd.vl
|
||||
*
|
||||
*
|
||||
* This will generate the show_vcd command in the current directory.
|
||||
* When you run the command, you will see the output from all the
|
||||
* calls to $display, but also there will be a dump file ``show_vcd.vcd''.
|
||||
* The name of this file is set by the statement:
|
||||
*
|
||||
* $dumpfile("show_vcd.vcd");
|
||||
*
|
||||
*
|
||||
* in the main module. The output file uses the standard VCD file format
|
||||
* so can be viewed using off-the-shelf waveform viewers. The remaining
|
||||
* steps describe how to use GTKWave to view the file. If you are using
|
||||
* a different viewer, see the documentation for that tool.
|
||||
*
|
||||
*
|
||||
* To view the output generated by running show_vcd, start the GTKWave
|
||||
* viewer with the command:
|
||||
*
|
||||
*
|
||||
* gtkwave show_vcd.vcd
|
||||
*
|
||||
*
|
||||
* The GTKWave program will display its main window, and show in a small
|
||||
* status box (upper left corner) that it succeeded in loading the dump
|
||||
* file. However, there are no waveforms displayed yet. Select signals to
|
||||
* add to the waveform display using the menu selection:
|
||||
*
|
||||
* "Search --> Signal Search Tree"
|
||||
*
|
||||
*
|
||||
* This will bring up a dialog box that shows in directory tree format
|
||||
* the signals of the program. Select the signals you wish to view, and
|
||||
* click one of the buttons on the bottom of the dialog box to display
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
* $dumpvars system tasks. The $dumpfile task tells the simulation where
|
||||
* to write the VCD output. This task must be called once before the
|
||||
* $dumpvars task is called.
|
||||
*
|
||||
*
|
||||
* The $dumpvars task tells the simulation what variables to write to
|
||||
* the VCD output. The first parameter is how far to descend while
|
||||
* scanning a scope, and the remaining paramters are signals or scope
|
||||
|
|
@ -77,7 +77,7 @@ module ram16x1 (q, d, a, we, wclk);
|
|||
input wclk;
|
||||
|
||||
reg mem[15:0];
|
||||
|
||||
|
||||
assign q = mem[a];
|
||||
always @(posedge wclk) if (we) mem[a] = d;
|
||||
|
||||
|
|
@ -88,7 +88,7 @@ module main;
|
|||
reg d;
|
||||
reg [3:0] a;
|
||||
reg we, wclk;
|
||||
|
||||
|
||||
ram16x1 r1 (q, d, a, we, wclk);
|
||||
|
||||
initial begin
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*
|
||||
* $Id: sqrt.vl,v 1.3 2000/11/04 01:53:24 steve Exp $"
|
||||
* $Id: sqrt.vl,v 1.4 2004/10/04 01:10:56 steve Exp $"
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
@ -97,8 +97,8 @@ module sqrt32(clk, rdy, reset, x, .y(acc));
|
|||
bitl = 15;
|
||||
end
|
||||
endtask
|
||||
|
||||
initial clear;
|
||||
|
||||
initial clear;
|
||||
|
||||
always @(reset or posedge clk)
|
||||
if (reset)
|
||||
|
|
@ -121,14 +121,14 @@ module main;
|
|||
wire rdy;
|
||||
|
||||
sqrt32 root(.clk(clk), .rdy(rdy), .reset(reset), .x(value), .y(result));
|
||||
|
||||
|
||||
always #5 clk = ~clk;
|
||||
|
||||
always @(posedge rdy) begin
|
||||
$display("sqrt(%d) --> %d", value, result);
|
||||
$finish;
|
||||
end
|
||||
|
||||
|
||||
|
||||
initial begin
|
||||
clk = 0;
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ module main;
|
|||
// This can be done to wires and registers, as internally both
|
||||
// are treated as named signals. It doesn't work (yet) on vectors,
|
||||
// though, so break out the vectors with scalar assignments.
|
||||
|
||||
|
||||
assign a[0] = a0;
|
||||
assign a[1] = a1;
|
||||
assign a[2] = a2;
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ module ram16x1 (q, d, a, we, wclk);
|
|||
input wclk;
|
||||
|
||||
reg mem[15:0];
|
||||
|
||||
|
||||
assign q = mem[a];
|
||||
always @(posedge wclk) if (we) mem[a] = d;
|
||||
|
||||
|
|
@ -39,7 +39,7 @@ module main;
|
|||
reg d;
|
||||
reg [3:0] a;
|
||||
reg we, wclk;
|
||||
|
||||
|
||||
ram16x1 r1 (q, d, a, we, wclk);
|
||||
|
||||
initial begin
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: functor.cc,v 1.31 2002/08/16 05:18:27 steve Exp $"
|
||||
#ident "$Id: functor.cc,v 1.32 2004/10/04 01:10:53 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -114,7 +114,7 @@ void NetScope::run_functor(Design*des, functor_t*fun)
|
|||
void Design::functor(functor_t*fun)
|
||||
{
|
||||
// Scan the scopes
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
scope != root_scopes_.end(); scope++)
|
||||
(*scope)->run_functor(this, fun);
|
||||
|
||||
|
|
@ -267,6 +267,9 @@ int proc_match_t::event_wait(NetEvWait*)
|
|||
|
||||
/*
|
||||
* $Log: functor.cc,v $
|
||||
* Revision 1.32 2004/10/04 01:10:53 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.31 2002/08/16 05:18:27 steve
|
||||
* Fix intermix of node functors and node delete.
|
||||
*
|
||||
|
|
|
|||
16
install-sh
16
install-sh
|
|
@ -103,7 +103,7 @@ fi
|
|||
if [ x"$dir_arg" != x ]; then
|
||||
dst=$src
|
||||
src=""
|
||||
|
||||
|
||||
if [ -d $dst ]; then
|
||||
instcmd=:
|
||||
else
|
||||
|
|
@ -112,7 +112,7 @@ if [ x"$dir_arg" != x ]; then
|
|||
else
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f $src -o -d $src ]
|
||||
|
|
@ -122,7 +122,7 @@ else
|
|||
echo "install: $src does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
|
|
@ -150,7 +150,7 @@ dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
|||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if [ ! -d "$dstdir" ]; then
|
||||
defaultIFS='
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-${defaultIFS}}"
|
||||
|
||||
|
|
@ -189,17 +189,17 @@ else
|
|||
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
|
||||
if [ x"$transformarg" = x ]
|
||||
if [ x"$transformarg" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
dstfile=`basename $dst $transformbasename |
|
||||
dstfile=`basename $dst $transformbasename |
|
||||
sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename
|
||||
|
||||
if [ x"$dstfile" = x ]
|
||||
if [ x"$dstfile" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
|
|
@ -230,7 +230,7 @@ else
|
|||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||
|
||||
fi &&
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.TH iverilog-vpi 1 "$Date: 2003/10/14 00:40:06 $" Version "$Date: 2003/10/14 00:40:06 $"
|
||||
.TH iverilog-vpi 1 "$Date: 2004/10/04 01:10:53 $" Version "$Date: 2004/10/04 01:10:53 $"
|
||||
.SH NAME
|
||||
iverilog-vpi - Compile front end for VPI modules
|
||||
|
||||
|
|
@ -118,5 +118,5 @@ iverilog(1), vvp(1),
|
|||
.nf
|
||||
Copyright \(co 2002 Stephen Williams
|
||||
|
||||
This document can be freely redistributed according to the terms of the
|
||||
This document can be freely redistributed according to the terms of the
|
||||
GNU General Public License version 2.0
|
||||
|
|
|
|||
25
ivl_target.h
25
ivl_target.h
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: ivl_target.h,v 1.125 2004/09/25 01:58:12 steve Exp $"
|
||||
#ident "$Id: ivl_target.h,v 1.126 2004/10/04 01:10:53 steve Exp $"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
@ -48,7 +48,7 @@ _BEGIN_DECL
|
|||
*/
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
* In order to grab onto data in the design, the core passes cookies
|
||||
* to the various functions of the module. These cookies can in turn
|
||||
* be passed to access functions in the core to get more detailed
|
||||
|
|
@ -380,7 +380,7 @@ extern const char* ivl_design_flag(ivl_design_t des, const char*key);
|
|||
extern int ivl_design_process(ivl_design_t des,
|
||||
ivl_process_f fun, void*cd);
|
||||
extern ivl_scope_t ivl_design_root(ivl_design_t des);
|
||||
extern void ivl_design_roots(ivl_design_t des,
|
||||
extern void ivl_design_roots(ivl_design_t des,
|
||||
ivl_scope_t **scopes,
|
||||
unsigned int *nscopes);
|
||||
extern int ivl_design_time_precision(ivl_design_t des);
|
||||
|
|
@ -594,7 +594,7 @@ extern unsigned ivl_logic_attr_cnt(ivl_net_logic_t net);
|
|||
extern ivl_attribute_t ivl_logic_attr_val(ivl_net_logic_t net, unsigned idx);
|
||||
|
||||
/* UDP
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
extern unsigned ivl_udp_sequ(ivl_udp_t net);
|
||||
|
|
@ -647,7 +647,7 @@ extern const char* ivl_udp_name(ivl_udp_t net);
|
|||
* output vector. This is most devices, it turns out.
|
||||
*
|
||||
* ivl_lpm_selects
|
||||
* This is the size of the select input for a LPM_MUX device, or the
|
||||
* This is the size of the select input for a LPM_MUX device, or the
|
||||
* address bus width of an LPM_RAM.
|
||||
*
|
||||
* ivl_lpm_signed
|
||||
|
|
@ -720,9 +720,9 @@ extern ivl_memory_t ivl_lpm_memory(ivl_lpm_t net);
|
|||
* returns an ivl_expr_t that represents that
|
||||
* expression. Otherwise, it returns 0.
|
||||
*
|
||||
* ivl_lval_mem
|
||||
* ivl_lval_mem
|
||||
* If the l-value is a memory, this method returns an
|
||||
* ivl_memory_t that represents that memory. Otherwise, it
|
||||
* ivl_memory_t that represents that memory. Otherwise, it
|
||||
* returns 0.
|
||||
*
|
||||
* ivl_lval_sig
|
||||
|
|
@ -739,9 +739,9 @@ extern ivl_memory_t ivl_lpm_memory(ivl_lpm_t net);
|
|||
* The part select of the signal is based here. This is the
|
||||
* canonical index of bit-0 of the part select.
|
||||
*
|
||||
* ivl_lval_idx
|
||||
* ivl_lval_idx
|
||||
* If the l-value is a memory, this method returns an
|
||||
* ivl_expr_t that represents the index expression. Otherwise, it
|
||||
* ivl_expr_t that represents the index expression. Otherwise, it
|
||||
* returns 0.
|
||||
*
|
||||
* ivl_lval_pin
|
||||
|
|
@ -764,7 +764,7 @@ extern ivl_signal_t ivl_lval_sig(ivl_lval_t net);
|
|||
* connections of signals and nodes is handled by single-bit
|
||||
* nexus. These functions manage the ivl_nexus_t object. They also
|
||||
* manage the ivl_nexus_ptr_t objects that are closely related to the
|
||||
* nexus.
|
||||
* nexus.
|
||||
*
|
||||
* ivl_nexus_name
|
||||
* Each nexus is given a name, typically derived from the signals
|
||||
|
|
@ -944,7 +944,7 @@ extern ivl_expr_t ivl_parameter_expr(ivl_parameter_t net);
|
|||
* Every scope has a hierarchical name. This name is also a prefix
|
||||
* of all the names of objects contained within the scope. The
|
||||
* ivl_scope_basename is the name of the scope without the included
|
||||
* hierarchy.
|
||||
* hierarchy.
|
||||
*
|
||||
* ivl_scope_param
|
||||
* ivl_scope_params
|
||||
|
|
@ -1236,6 +1236,9 @@ _END_DECL
|
|||
|
||||
/*
|
||||
* $Log: ivl_target.h,v $
|
||||
* Revision 1.126 2004/10/04 01:10:53 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.125 2004/09/25 01:58:12 steve
|
||||
* Some commentary on ivl_logic_pin.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# 59 Temple Place - Suite 330
|
||||
# Boston, MA 02111-1307, USA
|
||||
#
|
||||
#ident "$Id: Makefile.in,v 1.16 2004/02/10 19:25:00 steve Exp $"
|
||||
#ident "$Id: Makefile.in,v 1.17 2004/10/04 01:10:56 steve Exp $"
|
||||
#
|
||||
#
|
||||
SHELL = /bin/sh
|
||||
|
|
@ -42,7 +42,7 @@ INSTALL_DATA = @INSTALL_DATA@
|
|||
|
||||
CPPFLAGS = @ident_support@ -I. -I.. -I$(srcdir)/.. -I$(srcdir) @CPPFLAGS@ @DEFS@
|
||||
CFLAGS = -Wall @CFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
|
||||
all: ivlpp
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
|
||||
Copyright (c) 1999 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
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: a_fetch_tfarg.c,v 1.9 2004/02/18 02:51:59 steve Exp $"
|
||||
#ident "$Id: a_fetch_tfarg.c,v 1.10 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
#include <vpi_user.h>
|
||||
|
|
@ -42,7 +42,7 @@ double acc_fetch_itfarg(PLI_INT32 n, handle obj)
|
|||
if (hand) {
|
||||
value.format=vpiRealVal;
|
||||
vpi_get_value(hand, &value);
|
||||
rtn = value.value.real;
|
||||
rtn = value.value.real;
|
||||
vpi_free_object(iter);
|
||||
} else {
|
||||
rtn = 0.0;
|
||||
|
|
@ -77,7 +77,7 @@ PLI_INT32 acc_fetch_itfarg_int(PLI_INT32 n, handle obj)
|
|||
if (hand) {
|
||||
value.format=vpiIntVal;
|
||||
vpi_get_value(hand, &value);
|
||||
rtn = value.value.integer;
|
||||
rtn = value.value.integer;
|
||||
vpi_free_object(iter);
|
||||
} else {
|
||||
rtn = 0;
|
||||
|
|
@ -134,6 +134,9 @@ char *acc_fetch_tfarg_str(PLI_INT32 n)
|
|||
|
||||
/*
|
||||
* $Log: a_fetch_tfarg.c,v $
|
||||
* Revision 1.10 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.9 2004/02/18 02:51:59 steve
|
||||
* Fix type mismatches of various VPI functions.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: a_fetch_type.c,v 1.7 2003/06/04 01:56:20 steve Exp $"
|
||||
#ident "$Id: a_fetch_type.c,v 1.8 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include <acc_user.h>
|
||||
|
|
@ -78,7 +78,7 @@ PLI_INT32 acc_fetch_fulltype(handle obj)
|
|||
type = vpi_get(vpiNetType, obj);
|
||||
switch(type) {
|
||||
case vpiWire: return accWire;
|
||||
default:
|
||||
default:
|
||||
vpi_printf("acc_fetch_fulltype: vpiNetType %d unknown?\n",
|
||||
type);
|
||||
return accUnknown;
|
||||
|
|
@ -121,6 +121,9 @@ PLI_INT32 acc_fetch_fulltype(handle obj)
|
|||
|
||||
/*
|
||||
* $Log: a_fetch_type.c,v $
|
||||
* Revision 1.8 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.7 2003/06/04 01:56:20 steve
|
||||
* 1) Adds configure logic to clean up compiler warnings
|
||||
* 2) adds acc_compare_handle, acc_fetch_range, acc_next_scope and
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: a_handle_tfarg.c,v 1.5 2003/03/18 01:21:49 steve Exp $"
|
||||
#ident "$Id: a_handle_tfarg.c,v 1.6 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
#include <acc_user.h>
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
handle acc_handle_tfarg(int n)
|
||||
{
|
||||
vpiHandle sys_h, sys_i, rtn_h = 0;
|
||||
|
||||
|
||||
if (n > 0) {
|
||||
sys_h = vpi_handle(vpiSysTfCall, 0 /* NULL */);
|
||||
sys_i = vpi_iterate(vpiArgument, sys_h);
|
||||
|
|
@ -58,6 +58,9 @@ handle acc_handle_tfinst(void)
|
|||
|
||||
/*
|
||||
* $Log: a_handle_tfarg.c,v $
|
||||
* Revision 1.6 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.5 2003/03/18 01:21:49 steve
|
||||
* Fix warning about uninitialized variable.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: a_vcl.c,v 1.6 2003/06/17 16:55:07 steve Exp $"
|
||||
#ident "$Id: a_vcl.c,v 1.7 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
#include <vpi_user.h>
|
||||
|
|
@ -154,7 +154,7 @@ static PLI_INT32 vcl_value_callback(struct t_cb_data*cb)
|
|||
vcr.vc_hightime = sim_time.high;
|
||||
vcr.vc_lowtime = sim_time.low;
|
||||
vcr.user_data = cur->user_data;
|
||||
|
||||
|
||||
(cur->consumer) (&vcr);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -206,6 +206,9 @@ void acc_vcl_delete(handle obj, PLI_INT32(*consumer)(p_vc_record),
|
|||
|
||||
/*
|
||||
* $Log: a_vcl.c,v $
|
||||
* Revision 1.7 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.6 2003/06/17 16:55:07 steve
|
||||
* 1) setlinebuf() for vpi_trace
|
||||
* 2) Addes error checks for trace file opens
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: getp.c,v 1.6 2003/06/17 16:55:07 steve Exp $"
|
||||
#ident "$Id: getp.c,v 1.7 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include <assert.h>
|
||||
|
|
@ -158,7 +158,7 @@ char *tf_istrgetp(PLI_INT32 n, PLI_INT32 fmt, void *obj)
|
|||
case 'd': value.format = vpiDecStrVal; break;
|
||||
case 'h': value.format = vpiHexStrVal; break;
|
||||
}
|
||||
if (value.format > 0) {
|
||||
if (value.format > 0) {
|
||||
vpi_get_value(arg_h, &value);
|
||||
rtn = value.value.str;
|
||||
}
|
||||
|
|
@ -184,6 +184,9 @@ char *tf_strgetp(PLI_INT32 n, PLI_INT32 fmt)
|
|||
|
||||
/*
|
||||
* $Log: getp.c,v $
|
||||
* Revision 1.7 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.6 2003/06/17 16:55:07 steve
|
||||
* 1) setlinebuf() for vpi_trace
|
||||
* 2) Addes error checks for trace file opens
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: link_const.cc,v 1.16 2003/06/21 01:21:43 steve Exp $"
|
||||
#ident "$Id: link_const.cc,v 1.17 2004/10/04 01:10:53 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -59,7 +59,7 @@ bool Nexus::drivers_constant() const
|
|||
outside world. */
|
||||
|
||||
if (cur_dir == Link::PASSIVE) {
|
||||
|
||||
|
||||
const NetObj*obj = cur->get_obj();
|
||||
if (obj->scope()->parent() != 0)
|
||||
continue;
|
||||
|
|
@ -164,6 +164,9 @@ verinum::V Nexus::driven_value() const
|
|||
|
||||
/*
|
||||
* $Log: link_const.cc,v $
|
||||
* Revision 1.17 2004/10/04 01:10:53 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.16 2003/06/21 01:21:43 steve
|
||||
* Harmless fixup of warnings.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ quite similar.
|
|||
lexor_keyword.gperf, and use that.
|
||||
|
||||
3) If working with a CVS snapshot, you must run autoconf in several
|
||||
directories. This is aided by the 'autoconf.sh' script at the
|
||||
directories. This is aided by the 'autoconf.sh' script at the
|
||||
top of the source tree:
|
||||
|
||||
sh ./autoconf.sh
|
||||
|
|
|
|||
21
main.cc
21
main.cc
|
|
@ -19,7 +19,7 @@ const char COPYRIGHT[] =
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: main.cc,v 1.85 2004/09/25 01:58:44 steve Exp $"
|
||||
#ident "$Id: main.cc,v 1.86 2004/10/04 01:10:53 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -417,14 +417,14 @@ extern Design* elaborate(list <perm_string> root);
|
|||
#if defined(HAVE_TIMES)
|
||||
static double cycles_diff(struct tms *a, struct tms *b)
|
||||
{
|
||||
clock_t aa = a->tms_utime
|
||||
+ a->tms_stime
|
||||
+ a->tms_cutime
|
||||
clock_t aa = a->tms_utime
|
||||
+ a->tms_stime
|
||||
+ a->tms_cutime
|
||||
+ a->tms_cstime;
|
||||
|
||||
clock_t bb = b->tms_utime
|
||||
+ b->tms_stime
|
||||
+ b->tms_cutime
|
||||
clock_t bb = b->tms_utime
|
||||
+ b->tms_stime
|
||||
+ b->tms_cutime
|
||||
+ b->tms_cstime;
|
||||
|
||||
return (aa-bb)/(double)sysconf(_SC_CLK_TCK);
|
||||
|
|
@ -526,7 +526,7 @@ int main(int argc, char*argv[])
|
|||
perror(depfile_name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (verbose_flag) {
|
||||
if (times_flag)
|
||||
|
|
@ -606,7 +606,7 @@ int main(int argc, char*argv[])
|
|||
if (verbose_flag)
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
|
||||
/* If there is *still* no guess for the root module, then give
|
||||
up completely, and complain. */
|
||||
|
||||
|
|
@ -744,6 +744,9 @@ int main(int argc, char*argv[])
|
|||
|
||||
/*
|
||||
* $Log: main.cc,v $
|
||||
* Revision 1.86 2004/10/04 01:10:53 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.85 2004/09/25 01:58:44 steve
|
||||
* Add a debug_elaborate flag
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: net_design.cc,v 1.44 2004/02/20 06:22:56 steve Exp $"
|
||||
#ident "$Id: net_design.cc,v 1.45 2004/10/04 01:10:54 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -247,7 +247,7 @@ const NetExpr* Design::find_parameter(const NetScope*scope,
|
|||
*/
|
||||
void Design::run_defparams()
|
||||
{
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
scope != root_scopes_.end(); scope++)
|
||||
(*scope)->run_defparams(this);
|
||||
}
|
||||
|
|
@ -291,7 +291,7 @@ void NetScope::run_defparams(Design*des)
|
|||
|
||||
void Design::evaluate_parameters()
|
||||
{
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
for (list<NetScope*>::const_iterator scope = root_scopes_.begin();
|
||||
scope != root_scopes_.end(); scope++)
|
||||
(*scope)->evaluate_parameters(this);
|
||||
}
|
||||
|
|
@ -618,6 +618,9 @@ void Design::delete_process(NetProcTop*top)
|
|||
|
||||
/*
|
||||
* $Log: net_design.cc,v $
|
||||
* Revision 1.45 2004/10/04 01:10:54 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.44 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: net_event.cc,v 1.25 2004/02/19 06:57:10 steve Exp $"
|
||||
#ident "$Id: net_event.cc,v 1.26 2004/10/04 01:10:54 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -201,7 +201,7 @@ NexusSet* NetEvent::nex_async_()
|
|||
if (trig_ != 0)
|
||||
return 0;
|
||||
|
||||
|
||||
|
||||
NexusSet*tmp = new NexusSet;
|
||||
for (NetEvProbe*cur = probes_ ; cur != 0 ; cur = cur->enext_) {
|
||||
if (cur->edge() != NetEvProbe::ANYEDGE) {
|
||||
|
|
@ -449,6 +449,9 @@ NetProc* NetEvWait::statement()
|
|||
|
||||
/*
|
||||
* $Log: net_event.cc,v $
|
||||
* Revision 1.26 2004/10/04 01:10:54 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.25 2004/02/19 06:57:10 steve
|
||||
* Memory and Event names use perm_string.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: net_expr.cc,v 1.22 2004/02/20 06:22:56 steve Exp $"
|
||||
#ident "$Id: net_expr.cc,v 1.23 2004/10/04 01:10:54 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -32,7 +32,7 @@ NetExpr::TYPE NetExpr::expr_type() const
|
|||
|
||||
/*
|
||||
* Create an add/sub node from the two operands. Make a best guess of
|
||||
* the
|
||||
* the
|
||||
*/
|
||||
NetEBAdd::NetEBAdd(char op, NetExpr*l, NetExpr*r)
|
||||
: NetEBinary(op, l, r)
|
||||
|
|
@ -516,6 +516,9 @@ NetExpr::TYPE NetESFunc::expr_type() const
|
|||
|
||||
/*
|
||||
* $Log: net_expr.cc,v $
|
||||
* Revision 1.23 2004/10/04 01:10:54 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.22 2004/02/20 06:22:56 steve
|
||||
* parameter keys are per_strings.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: net_scope.cc,v 1.32 2004/06/13 04:56:54 steve Exp $"
|
||||
#ident "$Id: net_scope.cc,v 1.33 2004/10/04 01:10:54 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -267,7 +267,7 @@ void NetScope::rem_event(NetEvent*ev)
|
|||
assert(cur->snext_);
|
||||
cur = cur->snext_;
|
||||
}
|
||||
cur->snext_ = ev->snext_;
|
||||
cur->snext_ = ev->snext_;
|
||||
}
|
||||
|
||||
ev->snext_ = 0;
|
||||
|
|
@ -323,7 +323,7 @@ void NetScope::rem_signal(NetNet*net)
|
|||
/*
|
||||
* This method looks for a signal within the current scope. The name
|
||||
* is assumed to be the base name of the signal, so no sub-scopes are
|
||||
* searched.
|
||||
* searched.
|
||||
*/
|
||||
NetNet* NetScope::find_signal(const char*key)
|
||||
{
|
||||
|
|
@ -467,6 +467,9 @@ string NetScope::local_hsymbol()
|
|||
|
||||
/*
|
||||
* $Log: net_scope.cc,v $
|
||||
* Revision 1.33 2004/10/04 01:10:54 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.32 2004/06/13 04:56:54 steve
|
||||
* Add support for the default_nettype directive.
|
||||
*
|
||||
|
|
|
|||
13
net_udp.cc
13
net_udp.cc
|
|
@ -18,7 +18,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: net_udp.cc,v 1.9 2004/02/18 17:11:56 steve Exp $"
|
||||
#ident "$Id: net_udp.cc,v 1.10 2004/10/04 01:10:54 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -42,7 +42,7 @@ bool NetUDP::first(string&inp, char&out) const
|
|||
table_idx = (unsigned) -1;
|
||||
return next(inp, out);
|
||||
}
|
||||
|
||||
|
||||
bool NetUDP::next(string&inp, char&out) const
|
||||
{
|
||||
table_idx++;
|
||||
|
|
@ -62,9 +62,9 @@ bool NetUDP::next(string&inp, char&out) const
|
|||
}
|
||||
|
||||
out = udp->toutput[table_idx];
|
||||
assert( (out == '0')
|
||||
|| (out == '1')
|
||||
|| (out == 'x')
|
||||
assert( (out == '0')
|
||||
|| (out == '1')
|
||||
|| (out == 'x')
|
||||
|| (is_sequential() && (out == '-')));
|
||||
|
||||
return true;
|
||||
|
|
@ -92,6 +92,9 @@ char NetUDP::get_initial() const
|
|||
|
||||
/*
|
||||
* $Log: net_udp.cc,v $
|
||||
* Revision 1.10 2004/10/04 01:10:54 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.9 2004/02/18 17:11:56 steve
|
||||
* Use perm_strings for named langiage items.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: netlist.cc,v 1.225 2004/06/30 02:16:26 steve Exp $"
|
||||
#ident "$Id: netlist.cc,v 1.226 2004/10/04 01:10:54 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -365,7 +365,7 @@ void NetNet::type(NetNet::Type t)
|
|||
for (unsigned idx = 0 ; idx < pin_count() ; idx += 1) {
|
||||
pin(idx).set_dir(dir);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2281,6 +2281,9 @@ const NetProc*NetTaskDef::proc() const
|
|||
|
||||
/*
|
||||
* $Log: netlist.cc,v $
|
||||
* Revision 1.226 2004/10/04 01:10:54 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.225 2004/06/30 02:16:26 steve
|
||||
* Implement signed divide and signed right shift in nets.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: netlist.h,v 1.320 2004/10/04 00:25:18 steve Exp $"
|
||||
#ident "$Id: netlist.h,v 1.321 2004/10/04 01:10:54 steve Exp $"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -1384,7 +1384,7 @@ class NetProc : public virtual LineInfo {
|
|||
* The l-value of the assignment is a collection of NetAssign_
|
||||
* objects that are connected to the structural netlist where the
|
||||
* assignment has its effect. The NetAssign_ class is not to be
|
||||
* derived from.
|
||||
* derived from.
|
||||
*
|
||||
* The collection is arranged from lsb up to msb, and represents the
|
||||
* concatenation of l-values. The elaborator may collapse some
|
||||
|
|
@ -3357,6 +3357,9 @@ extern ostream& operator << (ostream&, NetNet::Type);
|
|||
|
||||
/*
|
||||
* $Log: netlist.h,v $
|
||||
* Revision 1.321 2004/10/04 01:10:54 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.320 2004/10/04 00:25:18 steve
|
||||
* Remove inaccurate comment.
|
||||
*
|
||||
|
|
|
|||
6
parse.y
6
parse.y
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: parse.y,v 1.200 2004/09/14 18:24:56 steve Exp $"
|
||||
#ident "$Id: parse.y,v 1.201 2004/10/04 01:10:54 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -501,7 +501,7 @@ delay_value
|
|||
| expression ':' expression ':' expression
|
||||
{ $$ = pform_select_mtm_expr($1, $3, $5); }
|
||||
;
|
||||
|
||||
|
||||
|
||||
delay_value_simple
|
||||
: DEC_NUMBER
|
||||
|
|
@ -2455,7 +2455,7 @@ spec_notifier
|
|||
{ }
|
||||
| ',' identifier
|
||||
{ delete $2; }
|
||||
| spec_notifier ','
|
||||
| spec_notifier ','
|
||||
{ }
|
||||
| spec_notifier ',' identifier
|
||||
{ delete $3;
|
||||
|
|
|
|||
7
pform.cc
7
pform.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: pform.cc,v 1.128 2004/08/26 04:02:04 steve Exp $"
|
||||
#ident "$Id: pform.cc,v 1.129 2004/10/04 01:10:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -278,7 +278,7 @@ void pform_endmodule(const char*name)
|
|||
perm_string mod_name = pform_cur_module->mod_name();
|
||||
assert(strcmp(name, mod_name) == 0);
|
||||
|
||||
map<perm_string,Module*>::const_iterator test =
|
||||
map<perm_string,Module*>::const_iterator test =
|
||||
pform_modules.find(mod_name);
|
||||
|
||||
if (test != pform_modules.end()) {
|
||||
|
|
@ -1597,6 +1597,9 @@ int pform_parse(const char*path, FILE*file)
|
|||
|
||||
/*
|
||||
* $Log: pform.cc,v $
|
||||
* Revision 1.129 2004/10/04 01:10:55 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.128 2004/08/26 04:02:04 steve
|
||||
* Add support for localparam ranges.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: pform_dump.cc,v 1.87 2004/05/31 23:34:39 steve Exp $"
|
||||
#ident "$Id: pform_dump.cc,v 1.88 2004/10/04 01:10:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -266,7 +266,7 @@ void PGate::dump_pins(ostream&out) const
|
|||
{
|
||||
if (pin_count()) {
|
||||
if (pin(0)) out << *pin(0);
|
||||
|
||||
|
||||
for (unsigned idx = 1 ; idx < pin_count() ; idx += 1) {
|
||||
out << ", ";
|
||||
if (pin(idx)) out << *pin(idx);
|
||||
|
|
@ -495,7 +495,7 @@ void PCase::dump(ostream&out, unsigned ind) const
|
|||
|
||||
} else {
|
||||
out << setw(ind+2) << "" << *cur->expr[0];
|
||||
|
||||
|
||||
for(unsigned e = 1 ; e < cur->expr.count() ; e += 1)
|
||||
out << ", " << *cur->expr[e];
|
||||
|
||||
|
|
@ -909,6 +909,9 @@ void PUdp::dump(ostream&out) const
|
|||
|
||||
/*
|
||||
* $Log: pform_dump.cc,v $
|
||||
* Revision 1.88 2004/10/04 01:10:55 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.87 2004/05/31 23:34:39 steve
|
||||
* Rewire/generalize parsing an elaboration of
|
||||
* function return values to allow for better
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: README-solaris_pkg.txt,v 1.1 2000/06/16 18:58:45 steve Exp $
|
||||
# $Id: README-solaris_pkg.txt,v 1.2 2004/10/04 01:10:56 steve Exp $
|
||||
|
||||
Notes about the solaris package.
|
||||
|
||||
|
|
@ -41,7 +41,7 @@ III. Notes on building a solaris package from sources
|
|||
to the same as the argument to "--prefix="
|
||||
|
||||
3) edit the 'prototype' file to add/removed files/directories from the list
|
||||
of installed components.
|
||||
of installed components.
|
||||
|
||||
4) run the 'mksolpkg' script to create the solaris package
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ fi
|
|||
oslabel=`uname -s`-`uname -r`-$march
|
||||
fname=$name-$ver-$oslabel
|
||||
|
||||
cp -f prototype $basedir
|
||||
cp -f prototype $basedir
|
||||
cp -f pkginfo $basedir
|
||||
cd $basedir
|
||||
|
||||
|
|
@ -41,7 +41,7 @@ gzip -f $fname
|
|||
|
||||
echo "Your $oslabel package is left in /tmp/$fname.gz"
|
||||
|
||||
# cleanup
|
||||
# cleanup
|
||||
rm -f $basedir/prototype $basedir/pkginfo
|
||||
rm -fr /var/spool/pkg/$pkg
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: syn-rules.y,v 1.30 2004/08/28 15:08:32 steve Exp $"
|
||||
#ident "$Id: syn-rules.y,v 1.31 2004/10/04 01:10:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -301,7 +301,7 @@ struct tokenize : public proc_match_t {
|
|||
int condit(NetCondit*dev)
|
||||
{
|
||||
syn_token_t*cur;
|
||||
|
||||
|
||||
cur = new syn_token_t;
|
||||
cur->token = S_IF;
|
||||
cur->next_ = 0;
|
||||
|
|
@ -338,7 +338,7 @@ struct tokenize : public proc_match_t {
|
|||
int event_wait(NetEvWait*dev)
|
||||
{
|
||||
syn_token_t*cur;
|
||||
|
||||
|
||||
cur = new syn_token_t;
|
||||
cur->token = '@';
|
||||
cur->evwait = dev;
|
||||
|
|
|
|||
11
synth2.cc
11
synth2.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: synth2.cc,v 1.38 2004/08/28 15:08:32 steve Exp $"
|
||||
#ident "$Id: synth2.cc,v 1.39 2004/10/04 01:10:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -87,7 +87,7 @@ bool NetAssignBase::synth_async(Design*des, NetScope*scope,
|
|||
const NetNet*nex_map, NetNet*nex_out)
|
||||
{
|
||||
DEBUG_SYNTH2_ENTRY("NetAssignBase")
|
||||
|
||||
|
||||
NetNet*rsig = rval_->synthesize(des);
|
||||
assert(rsig);
|
||||
|
||||
|
|
@ -306,7 +306,7 @@ bool NetCase::synth_async(Design*des, NetScope*scope,
|
|||
for (unsigned idx = 0 ; idx < mux->width() ; idx += 1)
|
||||
connect(mux->pin_Data(idx, item), sig->pin(idx));
|
||||
}
|
||||
|
||||
|
||||
delete[]statement_map;
|
||||
des->add_node(mux);
|
||||
|
||||
|
|
@ -346,7 +346,7 @@ bool NetCondit::synth_async(Design*des, NetScope*scope,
|
|||
DEBUG_SYNTH2_EXIT("NetCondit",false)
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
NetNet*bsig = new NetNet(scope, scope->local_symbol(),
|
||||
NetNet::WIRE, nex_map->pin_count());
|
||||
bsig->local_flag(true);
|
||||
|
|
@ -985,6 +985,9 @@ void synth2(Design*des)
|
|||
|
||||
/*
|
||||
* $Log: synth2.cc,v $
|
||||
* Revision 1.39 2004/10/04 01:10:55 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.38 2004/08/28 15:08:32 steve
|
||||
* Do not change reg to wire in NetAssign_ unless synthesizing.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_funcs.cc,v 1.5 2004/03/17 17:07:12 steve Exp $"
|
||||
#ident "$Id: sys_funcs.cc,v 1.6 2004/10/04 01:10:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -163,7 +163,7 @@ int load_sys_func_table(const char*path)
|
|||
while (flag[0]) {
|
||||
cp = flag + strcspn(flag, " \t\r\n");
|
||||
if (cp[0]) *cp++ = 0;
|
||||
|
||||
|
||||
if (strcmp(flag,"signed") == 0) {
|
||||
signed_flag = true;
|
||||
|
||||
|
|
@ -193,6 +193,9 @@ int load_sys_func_table(const char*path)
|
|||
|
||||
/*
|
||||
* $Log: sys_funcs.cc,v $
|
||||
* Revision 1.6 2004/10/04 01:10:55 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.5 2004/03/17 17:07:12 steve
|
||||
* Protect ident pragma.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: t-dll-api.cc,v 1.107 2004/06/30 02:16:27 steve Exp $"
|
||||
#ident "$Id: t-dll-api.cc,v 1.108 2004/10/04 01:10:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -1050,7 +1050,7 @@ extern "C" ivl_memory_t ivl_lpm_memory(ivl_lpm_t net)
|
|||
default:
|
||||
assert(0);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" ivl_expr_t ivl_lval_mux(ivl_lval_t net)
|
||||
|
|
@ -1935,6 +1935,9 @@ extern "C" ivl_variable_type_t ivl_variable_type(ivl_variable_t net)
|
|||
|
||||
/*
|
||||
* $Log: t-dll-api.cc,v $
|
||||
* Revision 1.108 2004/10/04 01:10:55 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.107 2004/06/30 02:16:27 steve
|
||||
* Implement signed divide and signed right shift in nets.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: t-dll-proc.cc,v 1.64 2004/05/31 23:34:39 steve Exp $"
|
||||
#ident "$Id: t-dll-proc.cc,v 1.65 2004/10/04 01:10:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -830,7 +830,7 @@ bool dll_target::proc_wait(const NetEvWait*net)
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* The ivl_statement_t for the wait statement is not complete
|
||||
until we calculate the sub-statement. */
|
||||
|
|
@ -872,6 +872,9 @@ void dll_target::proc_while(const NetWhile*net)
|
|||
|
||||
/*
|
||||
* $Log: t-dll-proc.cc,v $
|
||||
* Revision 1.65 2004/10/04 01:10:55 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.64 2004/05/31 23:34:39 steve
|
||||
* Rewire/generalize parsing an elaboration of
|
||||
* function return values to allow for better
|
||||
|
|
|
|||
33
t-dll.cc
33
t-dll.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: t-dll.cc,v 1.130 2004/06/30 02:16:27 steve Exp $"
|
||||
#ident "$Id: t-dll.cc,v 1.131 2004/10/04 01:10:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -57,14 +57,14 @@ const char *dlerror(void)
|
|||
{
|
||||
static char msg[256];
|
||||
unsigned long err = GetLastError();
|
||||
FormatMessage(
|
||||
FormatMessage(
|
||||
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL,
|
||||
err,
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
||||
(LPTSTR) &msg,
|
||||
sizeof(msg) - 1,
|
||||
NULL
|
||||
NULL
|
||||
);
|
||||
return msg;
|
||||
}
|
||||
|
|
@ -599,7 +599,7 @@ bool dll_target::start_design(const Design*des)
|
|||
for (list<NetScope*>::const_iterator scope = root_scopes.begin();
|
||||
scope != root_scopes.end(); scope++)
|
||||
add_root(des_, *scope);
|
||||
|
||||
|
||||
des_.consts = (ivl_net_const_t*)
|
||||
malloc(sizeof(ivl_net_const_t));
|
||||
des_.nconsts = 0;
|
||||
|
|
@ -1044,9 +1044,9 @@ void dll_target::udp(const NetUDP*net)
|
|||
|
||||
udps[net->udp_name()] = u;
|
||||
}
|
||||
|
||||
|
||||
obj->udp = u;
|
||||
|
||||
|
||||
// Some duplication of code here, see: dll_target::logic()
|
||||
|
||||
/* Connect all the ivl_nexus_t objects to the pins of the
|
||||
|
|
@ -1617,12 +1617,12 @@ void dll_target::lpm_ram_dq(const NetRamDq*net)
|
|||
|
||||
obj->u_.ff.width = net->width();
|
||||
obj->u_.ff.swid = net->awidth();
|
||||
|
||||
|
||||
scope_add_lpm(obj->scope, obj);
|
||||
|
||||
const Nexus*nex;
|
||||
|
||||
// A write port is present only if something is connected to
|
||||
// A write port is present only if something is connected to
|
||||
// the clock input.
|
||||
|
||||
bool has_write_port = net->pin_InClock().is_linked();
|
||||
|
|
@ -1649,7 +1649,7 @@ void dll_target::lpm_ram_dq(const NetRamDq*net)
|
|||
obj->u_.ff.clk = 0x0;
|
||||
obj->u_.ff.we = 0x0;
|
||||
}
|
||||
|
||||
|
||||
// Connect the address bus
|
||||
|
||||
if (obj->u_.ff.swid == 1) {
|
||||
|
|
@ -1661,7 +1661,7 @@ void dll_target::lpm_ram_dq(const NetRamDq*net)
|
|||
}
|
||||
else {
|
||||
obj->u_.ff.s.pins = new ivl_nexus_t [obj->u_.ff.swid];
|
||||
|
||||
|
||||
for (unsigned idx = 0 ; idx < obj->u_.ff.swid ; idx += 1) {
|
||||
nex = net->pin_Address(idx).nexus();
|
||||
assert(nex->t_cookie());
|
||||
|
|
@ -1670,7 +1670,7 @@ void dll_target::lpm_ram_dq(const NetRamDq*net)
|
|||
IVL_DR_HiZ, IVL_DR_HiZ);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Connect the data busses
|
||||
|
||||
if (obj->u_.ff.width == 1) {
|
||||
|
|
@ -1687,7 +1687,7 @@ void dll_target::lpm_ram_dq(const NetRamDq*net)
|
|||
nexus_lpm_add(obj->u_.ff.d.pin, obj,
|
||||
0, IVL_DR_HiZ, IVL_DR_HiZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (has_write_port) {
|
||||
obj->u_.ff.q.pins = new ivl_nexus_t [obj->u_.ff.width * 2];
|
||||
obj->u_.ff.d.pins = obj->u_.ff.q.pins + obj->u_.ff.width;
|
||||
|
|
@ -1698,17 +1698,17 @@ void dll_target::lpm_ram_dq(const NetRamDq*net)
|
|||
obj->u_.ff.q.pins[idx] = (ivl_nexus_t) nex->t_cookie();
|
||||
nexus_lpm_add(obj->u_.ff.q.pins[idx], obj, 0,
|
||||
IVL_DR_STRONG, IVL_DR_STRONG);
|
||||
|
||||
|
||||
nex = net->pin_Data(idx).nexus();
|
||||
assert(nex->t_cookie());
|
||||
obj->u_.ff.d.pins[idx] = (ivl_nexus_t) nex->t_cookie();
|
||||
nexus_lpm_add(obj->u_.ff.d.pins[idx], obj, 0,
|
||||
IVL_DR_HiZ, IVL_DR_HiZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
obj->u_.ff.q.pins = new ivl_nexus_t [obj->u_.ff.width];
|
||||
|
||||
|
||||
for (unsigned idx = 0 ; idx < obj->u_.ff.width ; idx += 1) {
|
||||
nex = net->pin_Q(idx).nexus();
|
||||
assert(nex->t_cookie());
|
||||
|
|
@ -2180,6 +2180,9 @@ extern const struct target tgt_dll = { "dll", &dll_target_obj };
|
|||
|
||||
/*
|
||||
* $Log: t-dll.cc,v $
|
||||
* Revision 1.131 2004/10/04 01:10:55 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.130 2004/06/30 02:16:27 steve
|
||||
* Implement signed divide and signed right shift in nets.
|
||||
*
|
||||
|
|
|
|||
7
t-dll.h
7
t-dll.h
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: t-dll.h,v 1.114 2004/06/30 02:16:27 steve Exp $"
|
||||
#ident "$Id: t-dll.h,v 1.115 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "target.h"
|
||||
|
|
@ -472,7 +472,7 @@ struct ivl_nexus_s {
|
|||
};
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
* Memory.
|
||||
*/
|
||||
struct ivl_memory_s {
|
||||
|
|
@ -684,6 +684,9 @@ struct ivl_variable_s {
|
|||
|
||||
/*
|
||||
* $Log: t-dll.h,v $
|
||||
* Revision 1.115 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.114 2004/06/30 02:16:27 steve
|
||||
* Implement signed divide and signed right shift in nets.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: d-generic-edif.c,v 1.17 2003/11/12 03:20:14 steve Exp $"
|
||||
#ident "$Id: d-generic-edif.c,v 1.18 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "device.h"
|
||||
|
|
@ -442,7 +442,7 @@ static void edif_show_generic_dff(ivl_lpm_t net)
|
|||
|
||||
if (aset) {
|
||||
if (abits[idx] == '1') {
|
||||
sprintf(jbuf, "(portRef PRE (instanceRef U%u))",
|
||||
sprintf(jbuf, "(portRef PRE (instanceRef U%u))",
|
||||
edif_uref);
|
||||
edif_set_nexus_joint(aset, jbuf);
|
||||
} else {
|
||||
|
|
@ -477,6 +477,9 @@ const struct device_s d_generic_edif = {
|
|||
|
||||
/*
|
||||
* $Log: d-generic-edif.c,v $
|
||||
* Revision 1.18 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.17 2003/11/12 03:20:14 steve
|
||||
* devices need show_cmp_gt
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: d-lpm.c,v 1.11 2003/11/12 03:20:14 steve Exp $"
|
||||
#ident "$Id: d-lpm.c,v 1.12 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -320,7 +320,7 @@ static void lpm_logic(ivl_net_logic_t net)
|
|||
edif_cell_t cell;
|
||||
edif_cellref_t ref;
|
||||
edif_joint_t jnt;
|
||||
|
||||
|
||||
switch (ivl_logic_type(net)) {
|
||||
|
||||
case IVL_LO_BUFZ:
|
||||
|
|
@ -876,6 +876,9 @@ const struct device_s d_lpm_edif = {
|
|||
|
||||
/*
|
||||
* $Log: d-lpm.c,v $
|
||||
* Revision 1.12 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.11 2003/11/12 03:20:14 steve
|
||||
* devices need show_cmp_gt
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: d-virtex.c,v 1.34 2004/02/15 18:03:30 steve Exp $"
|
||||
#ident "$Id: d-virtex.c,v 1.35 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "device.h"
|
||||
|
|
@ -41,7 +41,7 @@ const static struct edif_xlib_celltable virtex_celltable[] = {
|
|||
{ "MULT_AND", xilinx_cell_mult_and },
|
||||
{ 0, 0}
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* The show_header function is called before any of the devices of the
|
||||
* netlist are scanned.
|
||||
|
|
@ -846,6 +846,9 @@ const struct device_s d_virtex_edif = {
|
|||
|
||||
/*
|
||||
* $Log: d-virtex.c,v $
|
||||
* Revision 1.35 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.34 2004/02/15 18:03:30 steve
|
||||
* Cleanup of warnings.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: d-virtex2.c,v 1.19 2003/11/12 03:20:14 steve Exp $"
|
||||
#ident "$Id: d-virtex2.c,v 1.20 2004/10/04 01:10:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "device.h"
|
||||
|
|
@ -42,7 +42,7 @@ const static struct edif_xlib_celltable virtex2_celltable[] = {
|
|||
{ "MULT_AND", xilinx_cell_mult_and },
|
||||
{ 0, 0}
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* The show_header function is called before any of the devices of the
|
||||
* netlist are scanned.
|
||||
|
|
@ -95,6 +95,9 @@ const struct device_s d_virtex2_edif = {
|
|||
|
||||
/*
|
||||
* $Log: d-virtex2.c,v $
|
||||
* Revision 1.20 2004/10/04 01:10:57 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.19 2003/11/12 03:20:14 steve
|
||||
* devices need show_cmp_gt
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.TH iverilog-fpga 1 "$Date: 2003/10/27 06:12:47 $" Version "$Date: 2003/10/27 06:12:47 $"
|
||||
.TH iverilog-fpga 1 "$Date: 2004/10/04 01:10:57 $" Version "$Date: 2004/10/04 01:10:57 $"
|
||||
.SH NAME
|
||||
iverilog-fpga \- FPGA code generator for Icarus Verilog
|
||||
|
||||
|
|
@ -183,5 +183,5 @@ iverilog(1),
|
|||
.nf
|
||||
Copyright \(co 2003 Stephen Williams
|
||||
|
||||
This document can be freely redistributed according to the terms of the
|
||||
This document can be freely redistributed according to the terms of the
|
||||
GNU General Public License version 2.0
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: stub.c,v 1.89 2004/09/25 01:57:33 steve Exp $"
|
||||
#ident "$Id: stub.c,v 1.90 2004/10/04 01:10:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -114,7 +114,7 @@ static void show_expression(ivl_expr_t net, unsigned ind)
|
|||
fprintf(out, "%*s<string=\"%s\", width=%u", ind, "",
|
||||
ivl_expr_string(net), ivl_expr_width(net));
|
||||
if (par != 0)
|
||||
fprintf(out, ", parameter=%s",
|
||||
fprintf(out, ", parameter=%s",
|
||||
ivl_parameter_basename(par));
|
||||
|
||||
fprintf(out, ">\n");
|
||||
|
|
@ -168,7 +168,7 @@ static void show_expression(ivl_expr_t net, unsigned ind)
|
|||
fprintf(out, "%02x", tmp.bv[idx-1]);
|
||||
fprintf(out, ")");
|
||||
if (par != 0)
|
||||
fprintf(out, ", parameter=%s",
|
||||
fprintf(out, ", parameter=%s",
|
||||
ivl_parameter_basename(par));
|
||||
|
||||
fprintf(out, ">\n");
|
||||
|
|
@ -953,6 +953,9 @@ int target_design(ivl_design_t des)
|
|||
|
||||
/*
|
||||
* $Log: stub.c,v $
|
||||
* Revision 1.90 2004/10/04 01:10:57 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.89 2004/09/25 01:57:33 steve
|
||||
* Dump tri0 and tri1 nets.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: draw_vpi.c,v 1.8 2003/04/23 02:22:47 steve Exp $"
|
||||
#ident "$Id: draw_vpi.c,v 1.9 2004/10/04 01:10:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vvp_priv.h"
|
||||
|
|
@ -68,7 +68,7 @@ static void draw_vpi_taskfunc_args(const char*call_string,
|
|||
ivl_expr_t expr = tnet
|
||||
? ivl_stmt_parm(tnet, idx)
|
||||
: ivl_expr_parm(fnet, idx);
|
||||
|
||||
|
||||
switch (ivl_expr_type(expr)) {
|
||||
|
||||
/* These expression types can be handled directly,
|
||||
|
|
@ -148,7 +148,7 @@ static void draw_vpi_taskfunc_args(const char*call_string,
|
|||
ivl_expr_t expr = tnet
|
||||
? ivl_stmt_parm(tnet, idx)
|
||||
: ivl_expr_parm(fnet, idx);
|
||||
|
||||
|
||||
switch (ivl_expr_type(expr)) {
|
||||
case IVL_EX_NONE:
|
||||
fprintf(vvp_out, ", \" \"");
|
||||
|
|
@ -178,7 +178,7 @@ static void draw_vpi_taskfunc_args(const char*call_string,
|
|||
break;
|
||||
|
||||
} else {
|
||||
fprintf(vvp_out, ", V_%s",
|
||||
fprintf(vvp_out, ", V_%s",
|
||||
vvp_signal_label(ivl_expr_signal(expr)));
|
||||
continue;
|
||||
}
|
||||
|
|
@ -194,7 +194,7 @@ static void draw_vpi_taskfunc_args(const char*call_string,
|
|||
fprintf(vvp_out, ", P_%p", par);
|
||||
|
||||
} else {
|
||||
fprintf(vvp_out, ", \"%s\"",
|
||||
fprintf(vvp_out, ", \"%s\"",
|
||||
ivl_expr_string(expr));
|
||||
}
|
||||
continue;
|
||||
|
|
@ -213,10 +213,10 @@ static void draw_vpi_taskfunc_args(const char*call_string,
|
|||
continue;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case IVL_EX_MEMORY:
|
||||
if (!ivl_expr_oper1(expr)) {
|
||||
fprintf(vvp_out, ", M_%s",
|
||||
fprintf(vvp_out, ", M_%s",
|
||||
vvp_memory_label(ivl_expr_memory(expr)));
|
||||
continue;
|
||||
}
|
||||
|
|
@ -243,7 +243,7 @@ static void draw_vpi_taskfunc_args(const char*call_string,
|
|||
}
|
||||
veci++;
|
||||
}
|
||||
|
||||
|
||||
assert(veci == vecs);
|
||||
|
||||
if (vecs) {
|
||||
|
|
@ -296,6 +296,9 @@ int draw_vpi_rfunc_call(ivl_expr_t fnet)
|
|||
|
||||
/*
|
||||
* $Log: draw_vpi.c,v $
|
||||
* Revision 1.9 2004/10/04 01:10:57 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.8 2003/04/23 02:22:47 steve
|
||||
* Fix word register leak.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: eval_expr.c,v 1.109 2004/09/10 00:14:31 steve Exp $"
|
||||
#ident "$Id: eval_expr.c,v 1.110 2004/10/04 01:10:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vvp_priv.h"
|
||||
|
|
@ -838,7 +838,7 @@ static struct vector_info draw_binary_expr_lrs(ivl_expr_t exp, unsigned wid)
|
|||
fprintf(vvp_out, " %%ix/load 0, %u;\n", shift);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case IVL_EX_ULONG:
|
||||
fprintf(vvp_out, " %%ix/load 0, %lu;\n", ivl_expr_uvalue(re));
|
||||
break;
|
||||
|
|
@ -1527,7 +1527,7 @@ void draw_memory_index_expr(ivl_memory_t mem, ivl_expr_t ae)
|
|||
unsigned long v = 0;
|
||||
int unknown_flag = 0;
|
||||
unsigned idx;
|
||||
for (idx = 0 ; idx < nbits ; idx += 1)
|
||||
for (idx = 0 ; idx < nbits ; idx += 1)
|
||||
switch (bits[idx]) {
|
||||
case '0':
|
||||
break;
|
||||
|
|
@ -1546,7 +1546,7 @@ void draw_memory_index_expr(ivl_memory_t mem, ivl_expr_t ae)
|
|||
break;
|
||||
}
|
||||
case IVL_EX_ULONG: {
|
||||
unsigned v = ivl_expr_uvalue(ae);
|
||||
unsigned v = ivl_expr_uvalue(ae);
|
||||
fprintf(vvp_out, " %%ix/load 3, %u;\n", (v-root)*width);
|
||||
fprintf(vvp_out, " %%mov 4, 0, 1;\n");
|
||||
break;
|
||||
|
|
@ -1576,7 +1576,7 @@ static struct vector_info draw_memory_expr(ivl_expr_t exp, unsigned wid)
|
|||
|
||||
if (swid > wid)
|
||||
swid = wid;
|
||||
|
||||
|
||||
res.base = allocate_vector(wid);
|
||||
res.wid = wid;
|
||||
|
||||
|
|
@ -2139,6 +2139,9 @@ struct vector_info draw_eval_expr(ivl_expr_t exp, int stuff_ok_flag)
|
|||
|
||||
/*
|
||||
* $Log: eval_expr.c,v $
|
||||
* Revision 1.110 2004/10/04 01:10:57 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.109 2004/09/10 00:14:31 steve
|
||||
* Relaxed width constraint on pad_expression output.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: eval_real.c,v 1.10 2003/12/19 01:27:10 steve Exp $"
|
||||
#ident "$Id: eval_real.c,v 1.11 2004/10/04 01:10:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -207,7 +207,7 @@ static int draw_sfunc_real(ivl_expr_t exp)
|
|||
(via an index register) for the result. */
|
||||
sv = draw_eval_expr(exp, 0);
|
||||
clr_vector(sv);
|
||||
|
||||
|
||||
res = allocate_word();
|
||||
fprintf(vvp_out, " %%ix/get %d, %u, %u;\n",
|
||||
res, sv.base, sv.wid);
|
||||
|
|
@ -298,6 +298,9 @@ int draw_eval_real(ivl_expr_t exp)
|
|||
|
||||
/*
|
||||
* $Log: eval_real.c,v $
|
||||
* Revision 1.11 2004/10/04 01:10:57 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.10 2003/12/19 01:27:10 steve
|
||||
* Fix various unsigned compare warnings.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: vvp.c,v 1.16 2003/05/16 03:22:52 steve Exp $"
|
||||
#ident "$Id: vvp.c,v 1.17 2004/10/04 01:10:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -64,7 +64,7 @@ inline static void draw_module_declarations(ivl_design_t des)
|
|||
|
||||
|
||||
int target_design(ivl_design_t des)
|
||||
|
||||
|
||||
{
|
||||
int rc;
|
||||
ivl_scope_t *roots;
|
||||
|
|
@ -108,6 +108,9 @@ int target_design(ivl_design_t des)
|
|||
|
||||
/*
|
||||
* $Log: vvp.c,v $
|
||||
* Revision 1.17 2004/10/04 01:10:57 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.16 2003/05/16 03:22:52 steve
|
||||
* Use fopen64 to open output file.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: vvp_process.c,v 1.92 2004/05/19 03:25:42 steve Exp $"
|
||||
#ident "$Id: vvp_process.c,v 1.93 2004/10/04 01:10:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vvp_priv.h"
|
||||
|
|
@ -91,7 +91,7 @@ static void set_to_lvariable(ivl_lval_t lval, unsigned idx,
|
|||
fprintf(vvp_out, " %%set/x0/x V_%s, %u, 3;\n",
|
||||
vvp_signal_label(sig), bit);
|
||||
}
|
||||
|
||||
|
||||
} else if (wid == 1) {
|
||||
fprintf(vvp_out, " %%set V_%s[%u], %u;\n",
|
||||
vvp_signal_label(sig), idx+part_off, bit);
|
||||
|
|
@ -148,7 +148,7 @@ static void assign_to_lvector(ivl_lval_t lval, unsigned idx,
|
|||
|
||||
}
|
||||
|
||||
static void assign_to_memory(ivl_memory_t mem, unsigned idx,
|
||||
static void assign_to_memory(ivl_memory_t mem, unsigned idx,
|
||||
unsigned bit, unsigned delay)
|
||||
{
|
||||
if (idx)
|
||||
|
|
@ -530,7 +530,7 @@ static int show_stmt_assign_nb(ivl_statement_t net)
|
|||
|
||||
if (mem) {
|
||||
for (idx = 0 ; idx < bit_limit ; idx += 1) {
|
||||
assign_to_memory(mem, idx,
|
||||
assign_to_memory(mem, idx,
|
||||
bitchar_to_idx(bits[cur_rbit]),
|
||||
delay);
|
||||
cur_rbit += 1;
|
||||
|
|
@ -821,7 +821,7 @@ static int show_stmt_case(ivl_statement_t net, ivl_scope_t sscope)
|
|||
default:
|
||||
assert(0);
|
||||
}
|
||||
|
||||
|
||||
/* Done with the case expression */
|
||||
clr_vector(cvec);
|
||||
}
|
||||
|
|
@ -1121,7 +1121,7 @@ static int show_stmt_force(ivl_statement_t net)
|
|||
force_functor_label, idx,
|
||||
tmp_label, idx,
|
||||
draw_net_input(ivl_stmt_nexus(net, idx)));
|
||||
}
|
||||
}
|
||||
free(tmp_label);
|
||||
|
||||
for (idx = 0 ; idx < ivl_lval_pins(lval) ; idx += 1) {
|
||||
|
|
@ -1389,7 +1389,7 @@ static int show_stmt_while(ivl_statement_t net, ivl_scope_t sscope)
|
|||
static int show_system_task_call(ivl_statement_t net)
|
||||
{
|
||||
unsigned parm_count = ivl_stmt_parm_count(net);
|
||||
|
||||
|
||||
if (parm_count == 0) {
|
||||
fprintf(vvp_out, " %%vpi_call \"%s\";\n", ivl_stmt_name(net));
|
||||
clear_expression_lookaside();
|
||||
|
|
@ -1626,6 +1626,9 @@ int draw_func_definition(ivl_scope_t scope)
|
|||
|
||||
/*
|
||||
* $Log: vvp_process.c,v $
|
||||
* Revision 1.93 2004/10/04 01:10:57 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.92 2004/05/19 03:25:42 steve
|
||||
* Generate code for nb assign to reals.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: vvp_scope.c,v 1.102 2004/09/25 21:04:25 steve Exp $"
|
||||
#ident "$Id: vvp_scope.c,v 1.103 2004/10/04 01:10:57 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vvp_priv.h"
|
||||
|
|
@ -42,17 +42,17 @@ const char *vvp_mangle_id(const char *id)
|
|||
{
|
||||
static char *out = 0x0;
|
||||
static size_t out_len;
|
||||
|
||||
|
||||
int nesc = 0;
|
||||
int iout = 0;
|
||||
const char *inp = id;
|
||||
|
||||
const char nosym[] = "!\"#%&'()*+,-/:;<=>?@[\\]^`{|}~";
|
||||
|
||||
|
||||
char *se = strpbrk(inp, nosym);
|
||||
if (!se)
|
||||
return id;
|
||||
|
||||
|
||||
do {
|
||||
int n = se - inp;
|
||||
unsigned int nlen = strlen(id) + 4*(++nesc) + 1;
|
||||
|
|
@ -83,7 +83,7 @@ const char *vvp_mangle_id(const char *id)
|
|||
|
||||
se = strpbrk(inp, nosym);
|
||||
} while (se);
|
||||
|
||||
|
||||
strcpy(out+iout, inp);
|
||||
return out;
|
||||
}
|
||||
|
|
@ -92,17 +92,17 @@ const char *vvp_mangle_name(const char *id)
|
|||
{
|
||||
static char *out = 0x0;
|
||||
static size_t out_len;
|
||||
|
||||
|
||||
int nesc = 0;
|
||||
int iout = 0;
|
||||
const char *inp = id;
|
||||
|
||||
const char nosym[] = "\"\\";
|
||||
|
||||
|
||||
char *se = strpbrk(inp, nosym);
|
||||
if (!se)
|
||||
return id;
|
||||
|
||||
|
||||
do {
|
||||
int n = se - inp;
|
||||
unsigned int nlen = strlen(id) + 2*(++nesc) + 1;
|
||||
|
|
@ -121,7 +121,7 @@ const char *vvp_mangle_name(const char *id)
|
|||
|
||||
se = strpbrk(inp, nosym);
|
||||
} while (se);
|
||||
|
||||
|
||||
strcpy(out+iout, inp);
|
||||
return out;
|
||||
}
|
||||
|
|
@ -226,7 +226,7 @@ const char*drive_string(ivl_drive_t drive)
|
|||
return "";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* The draw_scope function draws the major functional items within a
|
||||
* scope. This includes the scopes themselves, of course. All the
|
||||
|
|
@ -550,12 +550,12 @@ const char* draw_net_input(ivl_nexus_t nex)
|
|||
unsigned int inst;
|
||||
for (inst = 0; inst < ndrivers; inst += 4) {
|
||||
if (ndrivers > 4)
|
||||
fprintf(vvp_out, "RS_%p/%d/%d .resolv tri",
|
||||
fprintf(vvp_out, "RS_%p/%d/%d .resolv tri",
|
||||
nex, level, inst);
|
||||
else
|
||||
fprintf(vvp_out, "RS_%p .resolv %s",
|
||||
else
|
||||
fprintf(vvp_out, "RS_%p .resolv %s",
|
||||
nex, resolv_type);
|
||||
|
||||
|
||||
for (idx = inst; idx < ndrivers && idx < inst+4; idx += 1) {
|
||||
if (level) {
|
||||
fprintf(vvp_out, ", RS_%p/%d/%d",
|
||||
|
|
@ -567,7 +567,7 @@ const char* draw_net_input(ivl_nexus_t nex)
|
|||
}
|
||||
for ( ; idx < inst+4 ; idx += 1)
|
||||
fprintf(vvp_out, ", C<z>");
|
||||
|
||||
|
||||
fprintf(vvp_out, ";\n");
|
||||
}
|
||||
if (ndrivers > 4)
|
||||
|
|
@ -576,7 +576,7 @@ const char* draw_net_input(ivl_nexus_t nex)
|
|||
ndrivers = 0;
|
||||
level += 1;
|
||||
}
|
||||
|
||||
|
||||
sprintf(result, "RS_%p", nex);
|
||||
nex_private = strdup(result);
|
||||
ivl_nexus_set_private(nex, nex_private);
|
||||
|
|
@ -660,7 +660,7 @@ static void draw_delay(ivl_net_logic_t lptr)
|
|||
unsigned d0 = ivl_logic_delay(lptr, 0);
|
||||
unsigned d1 = ivl_logic_delay(lptr, 1);
|
||||
unsigned d2 = ivl_logic_delay(lptr, 2);
|
||||
|
||||
|
||||
if (d0 == 0 && d1 == 0 && d2 == 0)
|
||||
return;
|
||||
|
||||
|
|
@ -689,14 +689,14 @@ static void draw_udp_def(ivl_udp_t udp)
|
|||
}
|
||||
|
||||
if (ivl_udp_sequ(udp))
|
||||
fprintf(vvp_out,
|
||||
fprintf(vvp_out,
|
||||
"UDP_%s .udp/sequ \"%s\", %d, %d",
|
||||
vvp_mangle_id(ivl_udp_name(udp)),
|
||||
vvp_mangle_name(ivl_udp_name(udp)),
|
||||
ivl_udp_nin(udp),
|
||||
init );
|
||||
else
|
||||
fprintf(vvp_out,
|
||||
fprintf(vvp_out,
|
||||
"UDP_%s .udp/comb \"%s\", %d",
|
||||
vvp_mangle_id(ivl_udp_name(udp)),
|
||||
vvp_mangle_name(ivl_udp_name(udp)),
|
||||
|
|
@ -713,7 +713,7 @@ static void draw_udp_in_scope(ivl_net_logic_t lptr)
|
|||
unsigned pdx;
|
||||
|
||||
ivl_udp_t udp = ivl_logic_udp(lptr);
|
||||
|
||||
|
||||
static ivl_udp_t *udps = 0x0;
|
||||
static int nudps = 0;
|
||||
int i;
|
||||
|
|
@ -721,7 +721,7 @@ static void draw_udp_in_scope(ivl_net_logic_t lptr)
|
|||
for (i=0; i<nudps; i++)
|
||||
if (udps[i] == udp)
|
||||
break;
|
||||
|
||||
|
||||
if (i >= nudps)
|
||||
{
|
||||
udps = realloc(udps, (nudps+1)*sizeof(ivl_udp_t));
|
||||
|
|
@ -731,10 +731,10 @@ static void draw_udp_in_scope(ivl_net_logic_t lptr)
|
|||
}
|
||||
|
||||
fprintf(vvp_out, "L_%p .udp", lptr);
|
||||
fprintf(vvp_out, " UDP_%s",
|
||||
fprintf(vvp_out, " UDP_%s",
|
||||
vvp_mangle_id(ivl_udp_name(udp)));
|
||||
draw_delay(lptr);
|
||||
|
||||
|
||||
for (pdx = 1 ; pdx < ivl_logic_pins(lptr) ; pdx += 1) {
|
||||
ivl_nexus_t nex = ivl_logic_pin(lptr, pdx);
|
||||
|
||||
|
|
@ -749,7 +749,7 @@ static void draw_udp_in_scope(ivl_net_logic_t lptr)
|
|||
draw_input_from_net(nex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fprintf(vvp_out, ";\n");
|
||||
}
|
||||
|
||||
|
|
@ -777,7 +777,7 @@ static void draw_logic_in_scope(ivl_net_logic_t lptr)
|
|||
input_strings[pdx] = draw_net_input(nex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
switch (ivl_logic_type(lptr)) {
|
||||
|
||||
case IVL_LO_UDP:
|
||||
|
|
@ -911,17 +911,17 @@ static void draw_logic_in_scope(ivl_net_logic_t lptr)
|
|||
input_strings = calloc(ninp, sizeof(char*));
|
||||
for (pdx = 0 ; pdx < ninp ; pdx += 1)
|
||||
input_strings[pdx] = draw_net_input(ivl_logic_pin(lptr, pdx+1));
|
||||
|
||||
|
||||
level = 0;
|
||||
ninp = ivl_logic_pins(lptr) - 1;
|
||||
while (ninp) {
|
||||
int inst;
|
||||
for (inst = 0; inst < ninp; inst += 4) {
|
||||
if (ninp > 4)
|
||||
fprintf(vvp_out, "L_%p/%d/%d .functor %s",
|
||||
fprintf(vvp_out, "L_%p/%d/%d .functor %s",
|
||||
lptr, level, inst, lcasc);
|
||||
else {
|
||||
fprintf(vvp_out, "L_%p .functor %s",
|
||||
fprintf(vvp_out, "L_%p .functor %s",
|
||||
lptr, ltype);
|
||||
|
||||
draw_delay(lptr);
|
||||
|
|
@ -941,7 +941,7 @@ static void draw_logic_in_scope(ivl_net_logic_t lptr)
|
|||
for ( ; pdx < inst+4 ; pdx += 1) {
|
||||
fprintf(vvp_out, ", C<%c>", identity_val);
|
||||
}
|
||||
|
||||
|
||||
fprintf(vvp_out, ";\n");
|
||||
}
|
||||
if (ninp > 4)
|
||||
|
|
@ -990,7 +990,7 @@ static void draw_event_in_scope(ivl_event_t obj)
|
|||
unsigned sub, top;
|
||||
|
||||
fprintf(vvp_out, "E_%p/%u .event edge", obj, ecnt);
|
||||
|
||||
|
||||
top = idx + 4;
|
||||
if (nany < top)
|
||||
top = nany;
|
||||
|
|
@ -1041,9 +1041,9 @@ static void draw_event_in_scope(ivl_event_t obj)
|
|||
|
||||
for (idx = 1 ; idx < cnt ; idx += 1)
|
||||
fprintf(vvp_out, ", E_%p/%u", obj, idx);
|
||||
|
||||
|
||||
fprintf(vvp_out, ";\n");
|
||||
|
||||
|
||||
} else {
|
||||
unsigned num_input_strings = nany + nneg + npos;
|
||||
unsigned idx;
|
||||
|
|
@ -1053,14 +1053,14 @@ static void draw_event_in_scope(ivl_event_t obj)
|
|||
if (nany > 0) {
|
||||
assert((nneg + npos) == 0);
|
||||
assert(nany <= 4);
|
||||
|
||||
|
||||
edge = "edge";
|
||||
|
||||
|
||||
for (idx = 0 ; idx < nany ; idx += 1) {
|
||||
ivl_nexus_t nex = ivl_event_any(obj, idx);
|
||||
input_strings[idx] = draw_net_input(nex);
|
||||
}
|
||||
|
||||
|
||||
} else if (nneg > 0) {
|
||||
assert((nany + npos) == 0);
|
||||
edge = "negedge";
|
||||
|
|
@ -1069,11 +1069,11 @@ static void draw_event_in_scope(ivl_event_t obj)
|
|||
ivl_nexus_t nex = ivl_event_neg(obj, idx);
|
||||
input_strings[idx] = draw_net_input(nex);
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
assert((nany + nneg) == 0);
|
||||
edge = "posedge";
|
||||
|
||||
|
||||
for (idx = 0 ; idx < npos ; idx += 1) {
|
||||
ivl_nexus_t nex = ivl_event_pos(obj, idx);
|
||||
input_strings[idx] = draw_net_input(nex);
|
||||
|
|
@ -1104,8 +1104,8 @@ inline static void draw_lpm_ram(ivl_lpm_t net)
|
|||
}
|
||||
|
||||
fprintf(vvp_out, "L_%p .mem/port", net);
|
||||
fprintf(vvp_out,
|
||||
" M_%s, %d,0, %d,\n ",
|
||||
fprintf(vvp_out,
|
||||
" M_%s, %d,0, %d,\n ",
|
||||
vvp_memory_label(mem),
|
||||
width-1,
|
||||
awidth);
|
||||
|
|
@ -1115,7 +1115,7 @@ inline static void draw_lpm_ram(ivl_lpm_t net)
|
|||
if (idx) fprintf(vvp_out, ", ");
|
||||
draw_input_from_net(pin);
|
||||
}
|
||||
|
||||
|
||||
if (clk) {
|
||||
fprintf(vvp_out, ",\n CLK_%p, ", net);
|
||||
pin = ivl_lpm_enable(net);
|
||||
|
|
@ -1129,7 +1129,7 @@ inline static void draw_lpm_ram(ivl_lpm_t net)
|
|||
draw_input_from_net(pin);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fprintf(vvp_out, ";\n");
|
||||
}
|
||||
|
||||
|
|
@ -1214,7 +1214,7 @@ static void draw_lpm_cmp(ivl_lpm_t net)
|
|||
assert(0);
|
||||
}
|
||||
|
||||
fprintf(vvp_out, "L_%s.%s .cmp/%s%s %u",
|
||||
fprintf(vvp_out, "L_%s.%s .cmp/%s%s %u",
|
||||
vvp_mangle_id(ivl_scope_name(ivl_lpm_scope(net))),
|
||||
vvp_mangle_id(ivl_lpm_basename(net)), type,
|
||||
signed_string, width);
|
||||
|
|
@ -1245,7 +1245,7 @@ static void draw_lpm_eq(ivl_lpm_t net)
|
|||
assert(0);
|
||||
}
|
||||
|
||||
fprintf(vvp_out, "L_%s.%s .cmp/%s %u",
|
||||
fprintf(vvp_out, "L_%s.%s .cmp/%s %u",
|
||||
vvp_mangle_id(ivl_scope_name(ivl_lpm_scope(net))),
|
||||
vvp_mangle_id(ivl_lpm_basename(net)), type, width);
|
||||
|
||||
|
|
@ -1515,7 +1515,7 @@ static void draw_mem_in_scope(ivl_memory_t net)
|
|||
int msb = ivl_memory_width(net) - 1;
|
||||
int lsb = 0;
|
||||
fprintf(vvp_out, "M_%s .mem \"%s\", %u,%u, %u,%u;\n",
|
||||
vvp_memory_label(net),
|
||||
vvp_memory_label(net),
|
||||
vvp_mangle_name(ivl_memory_basename(net)),
|
||||
msb, lsb, root, last);
|
||||
}
|
||||
|
|
@ -1624,6 +1624,9 @@ int draw_scope(ivl_scope_t net, ivl_scope_t parent)
|
|||
|
||||
/*
|
||||
* $Log: vvp_scope.c,v $
|
||||
* Revision 1.103 2004/10/04 01:10:57 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.102 2004/09/25 21:04:25 steve
|
||||
* More carefull about eliding bufzs that carry strength.
|
||||
*
|
||||
|
|
|
|||
110
vpi/lxt2_write.c
110
vpi/lxt2_write.c
|
|
@ -25,18 +25,18 @@
|
|||
|
||||
static char *lxt2_wr_vcd_truncate_bitvec(char *s)
|
||||
{
|
||||
char l, r;
|
||||
char l, r;
|
||||
|
||||
r=*s;
|
||||
if(r=='1')
|
||||
if(r=='1')
|
||||
{
|
||||
return s;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
s++;
|
||||
}
|
||||
|
||||
|
||||
for(;;s++)
|
||||
{
|
||||
l=r; r=*s;
|
||||
|
|
@ -45,7 +45,7 @@ for(;;s++)
|
|||
if(l!=r)
|
||||
{
|
||||
return(((l=='0')&&(r=='1'))?s:s-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ static lxt2_wr_ds_Tree * lxt2_wr_ds_insert(granmsk_t i, lxt2_wr_ds_Tree * t, int
|
|||
/* Insert i into the tree t, unless it's already there. */
|
||||
/* Return a pointer to the resulting tree. */
|
||||
lxt2_wr_ds_Tree * n;
|
||||
|
||||
|
||||
n = (lxt2_wr_ds_Tree *) calloc (1, sizeof (lxt2_wr_ds_Tree));
|
||||
if (n == NULL) {
|
||||
fprintf(stderr, "ds_insert: ran out of memory, exiting.\n");
|
||||
|
|
@ -191,7 +191,7 @@ static lxt2_wr_dslxt_Tree * lxt2_wr_dslxt_insert(char *i, lxt2_wr_dslxt_Tree * t
|
|||
/* Return a pointer to the resulting tree. */
|
||||
lxt2_wr_dslxt_Tree * n;
|
||||
int dir;
|
||||
|
||||
|
||||
n = (lxt2_wr_dslxt_Tree *) calloc (1, sizeof (lxt2_wr_dslxt_Tree));
|
||||
if (n == NULL) {
|
||||
fprintf(stderr, "dslxt_insert: ran out of memory, exiting.\n");
|
||||
|
|
@ -227,7 +227,7 @@ static lxt2_wr_dslxt_Tree * lxt2_wr_dslxt_insert(char *i, lxt2_wr_dslxt_Tree * t
|
|||
/*
|
||||
* functions which emit various big endian
|
||||
* data to a file
|
||||
*/
|
||||
*/
|
||||
static int lxt2_wr_emit_u8(struct lxt2_wr_trace *lt, int value)
|
||||
{
|
||||
unsigned char buf[1];
|
||||
|
|
@ -286,7 +286,7 @@ return(rc);
|
|||
* data to a file. (lt->position needs to be
|
||||
* fixed up on gzclose so the tables don't
|
||||
* get out of sync!)
|
||||
*/
|
||||
*/
|
||||
static int gzwrite_buffered(struct lxt2_wr_trace *lt)
|
||||
{
|
||||
int rc = 1;
|
||||
|
|
@ -392,7 +392,7 @@ return(rc);
|
|||
static int lxt2_wr_emit_stringz(struct lxt2_wr_trace *lt, char *value)
|
||||
{
|
||||
int rc=1;
|
||||
do
|
||||
do
|
||||
{
|
||||
rc&=lxt2_wr_emit_u8z(lt, *value);
|
||||
} while(*(value++));
|
||||
|
|
@ -419,7 +419,7 @@ for(p=s;*p;p++)
|
|||
{
|
||||
h=h^(g>>24);
|
||||
h=h^g;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h^=h2; /* combine the two hashes */
|
||||
|
|
@ -446,17 +446,17 @@ struct lxt2_wr_symbol *temp;
|
|||
|
||||
hv=lxt2_wr_hash(s);
|
||||
if(!(temp=lt->sym[hv])) return(NULL); /* no hash entry, add here wanted to add */
|
||||
|
||||
|
||||
while(temp)
|
||||
{
|
||||
if(!strcmp(temp->name,s))
|
||||
{
|
||||
return(temp); /* in table already */
|
||||
return(temp); /* in table already */
|
||||
}
|
||||
if(!temp->next) break;
|
||||
temp=temp->next;
|
||||
}
|
||||
|
||||
|
||||
return(NULL); /* not found, add here if you want to add*/
|
||||
}
|
||||
|
||||
|
|
@ -481,13 +481,13 @@ if(lt->compress_fac_str)
|
|||
lxt2_wr_emit_u16z(lt, i);
|
||||
lxt2_wr_emit_stringz(lt, str+i);
|
||||
free(lt->compress_fac_str);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lxt2_wr_emit_u16z(lt, 0);
|
||||
lxt2_wr_emit_stringz(lt, str);
|
||||
}
|
||||
|
||||
|
||||
lt->compress_fac_str = (char *) malloc((lt->compress_fac_len=len)+1);
|
||||
strcpy(lt->compress_fac_str, str);
|
||||
}
|
||||
|
|
@ -523,10 +523,10 @@ while(lastch!=s->name)
|
|||
{
|
||||
if(*lastch=='[')
|
||||
{
|
||||
*lastch=0x00;
|
||||
*lastch=0x00;
|
||||
return;
|
||||
}
|
||||
lastch--;
|
||||
lastch--;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -553,19 +553,19 @@ if((lt)&&(lt->numfacs))
|
|||
strip_brack(s);
|
||||
s=s->symchain;
|
||||
}
|
||||
else
|
||||
else
|
||||
for(i=0;i<lt->numfacs;i++)
|
||||
{
|
||||
lt->sorted_facs[i] = s;
|
||||
s=s->symchain;
|
||||
}
|
||||
}
|
||||
qsort((void *)lt->sorted_facs, lt->numfacs, sizeof(struct lxt2_wr_symbol *), lxt2_wr_compare);
|
||||
|
||||
if(lt->partial_preference)
|
||||
{
|
||||
/* move preferenced facs up */
|
||||
struct lxt2_wr_symbol **prefcache = aliascache;
|
||||
int prefs_encountered = 0;
|
||||
int prefs_encountered = 0;
|
||||
|
||||
facs_encountered = 0;
|
||||
for(i=0;i<lt->numfacs;i++)
|
||||
|
|
@ -643,7 +643,7 @@ if((lt)&&(lt->numfacs))
|
|||
free(lt->compress_fac_str); lt->compress_fac_str=NULL;
|
||||
lt->compress_fac_len=0;
|
||||
lt->zfacname_predec_size = lt->zpackcount;
|
||||
|
||||
|
||||
gzflush_buffered(lt, 1);
|
||||
fseeko(lt->handle, 0L, SEEK_END);
|
||||
lt->position=ftello(lt->handle);
|
||||
|
|
@ -689,7 +689,7 @@ if((lt)&&(lt->numfacs))
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
* initialize the trace and get back and lt context
|
||||
*/
|
||||
struct lxt2_wr_trace *lxt2_wr_init(const char *name)
|
||||
|
|
@ -748,15 +748,15 @@ if(lt)
|
|||
{
|
||||
lt->partial = 1;
|
||||
lt->partial_zip = (zipmode != 0);
|
||||
lt->partial_iter = LXT2_WR_PARTIAL_SIZE;
|
||||
lt->partial_iter = LXT2_WR_PARTIAL_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
void lxt2_wr_set_partial_preference(struct lxt2_wr_trace *lt, const char *name)
|
||||
{
|
||||
struct lxt2_wr_symbol *s;
|
||||
|
||||
if((lt)&&(name)&&(!lt->sorted_facs))
|
||||
|
||||
if((lt)&&(name)&&(!lt->sorted_facs))
|
||||
{
|
||||
s=lxt2_wr_symfind(lt, name);
|
||||
if(s)
|
||||
|
|
@ -795,8 +795,8 @@ if(lt)
|
|||
/*
|
||||
* set initial value of trace (0, 1, x, z) only legal vals
|
||||
*/
|
||||
void lxt2_wr_set_initial_value(struct lxt2_wr_trace *lt, char value)
|
||||
{
|
||||
void lxt2_wr_set_initial_value(struct lxt2_wr_trace *lt, char value)
|
||||
{
|
||||
if(lt)
|
||||
{
|
||||
switch(value)
|
||||
|
|
@ -934,7 +934,7 @@ return(sa);
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
* set current time/granule updating
|
||||
*/
|
||||
int lxt2_wr_inc_time_by_delta(struct lxt2_wr_trace *lt, unsigned int timeval)
|
||||
|
|
@ -1162,7 +1162,7 @@ if(using_partial)
|
|||
lxt2_wr_emit_u32(lt, partial_length+9); /* size of this section (uncompressed) */
|
||||
lxt2_wr_emit_u32(lt, iter); /* begin iter of section */
|
||||
fflush(lt->handle);
|
||||
|
||||
|
||||
lt->zhandle = gzdopen(dup(fileno(lt->handle)), lt->zmode);
|
||||
lt->zpackcount = 0;
|
||||
}
|
||||
|
|
@ -1272,7 +1272,7 @@ if((lt->timegranule>=lt->maxgranule)||(do_finalize)||(early_flush))
|
|||
lxt2_wr_emit_u32(lt, 0); /* size of this section (uncompressed) */
|
||||
lxt2_wr_emit_u32(lt, ~0); /* control section */
|
||||
fflush(lt->handle);
|
||||
|
||||
|
||||
lt->zhandle = gzdopen(dup(fileno(lt->handle)), lt->zmode);
|
||||
lt->zpackcount = 0;
|
||||
}
|
||||
|
|
@ -1295,9 +1295,9 @@ if((lt->timegranule>=lt->maxgranule)||(do_finalize)||(early_flush))
|
|||
exit(255);
|
||||
}
|
||||
|
||||
lxt2_wr_emit_stringz(lt, ds->item);
|
||||
lxt2_wr_emit_stringz(lt, ds->item);
|
||||
ds2 = ds->next;
|
||||
free(ds->item);
|
||||
free(ds->item);
|
||||
free(ds);
|
||||
ds = ds2;
|
||||
}
|
||||
|
|
@ -1323,7 +1323,7 @@ if((lt->timegranule>=lt->maxgranule)||(do_finalize)||(early_flush))
|
|||
#endif
|
||||
|
||||
dt2 = dt->next;
|
||||
free(dt);
|
||||
free(dt);
|
||||
dt = dt2;
|
||||
}
|
||||
lt->mapdict_head = lt->mapdict_curr = lt->mapdict = NULL;
|
||||
|
|
@ -1340,11 +1340,11 @@ if((lt->timegranule>=lt->maxgranule)||(do_finalize)||(early_flush))
|
|||
if(using_partial_zip)
|
||||
{
|
||||
off_t clen;
|
||||
|
||||
|
||||
gzflush_buffered(lt, 1);
|
||||
fseeko(lt->handle, 0L, SEEK_END);
|
||||
lt->position=ftello(lt->handle);
|
||||
|
||||
|
||||
clen = lt->position - current_iter_pos - 12;
|
||||
fseeko(lt->handle, current_iter_pos, SEEK_SET);
|
||||
|
||||
|
|
@ -1408,7 +1408,7 @@ if(lt)
|
|||
{
|
||||
lt->bumptime = 0;
|
||||
|
||||
if(!lt->flush_valid)
|
||||
if(!lt->flush_valid)
|
||||
{
|
||||
lt->timepos++;
|
||||
}
|
||||
|
|
@ -1416,7 +1416,7 @@ if(lt)
|
|||
{
|
||||
lt->flush_valid = 0;
|
||||
}
|
||||
|
||||
|
||||
if(lt->timepos == LXT2_WR_GRANULE_SIZE)
|
||||
{
|
||||
/* fprintf(stderr, "flushing granule to disk at time %d\n", (unsigned int)timeval); */
|
||||
|
|
@ -1425,7 +1425,7 @@ if(lt)
|
|||
}
|
||||
|
||||
/* fprintf(stderr, "updating time to %d (%d dict entries/%d bytes)\n", (unsigned int)timeval, lt->num_dict_entries, lt->dict_string_mem_required); */
|
||||
lt->timetable[lt->timepos] = timeval;
|
||||
lt->timetable[lt->timepos] = timeval;
|
||||
lt->lasttime = timeval;
|
||||
}
|
||||
}
|
||||
|
|
@ -1434,7 +1434,7 @@ if(lt)
|
|||
lt->timeset = 1;
|
||||
lt->mintime = lt->maxtime = timeval;
|
||||
|
||||
lt->timetable[lt->timepos] = timeval;
|
||||
lt->timetable[lt->timepos] = timeval;
|
||||
}
|
||||
|
||||
if( (!lt->timepos) && (!lt->timegranule) )
|
||||
|
|
@ -1467,7 +1467,7 @@ if(lt)
|
|||
else if (s->flags&LXT2_WR_SYM_F_DOUBLE)
|
||||
{
|
||||
double value;
|
||||
|
||||
|
||||
sscanf(s->value, "%lg", &value);
|
||||
lxt2_wr_emit_value_double(lt, s, 0, value);
|
||||
}
|
||||
|
|
@ -1567,7 +1567,7 @@ int rc=0;
|
|||
|
||||
if((!lt)||(lt->blackout)||(!s)||(row)) return(rc);
|
||||
|
||||
if(!lt->emitted)
|
||||
if(!lt->emitted)
|
||||
{
|
||||
lxt2_wr_emitfacs(lt);
|
||||
lt->emitted = 1;
|
||||
|
|
@ -1608,7 +1608,7 @@ if(s->flags&LXT2_WR_SYM_F_DOUBLE)
|
|||
|
||||
if(lt->dict_curr)
|
||||
{
|
||||
lt->dict_curr->next = lt->dict;
|
||||
lt->dict_curr->next = lt->dict;
|
||||
lt->dict_curr = lt->dict;
|
||||
}
|
||||
else
|
||||
|
|
@ -1649,7 +1649,7 @@ int rc=0;
|
|||
|
||||
if((!lt)||(lt->blackout)||(!s)||(!value)||(row)) return(rc);
|
||||
|
||||
if(!lt->emitted)
|
||||
if(!lt->emitted)
|
||||
{
|
||||
lxt2_wr_emitfacs(lt);
|
||||
lt->emitted = 1;
|
||||
|
|
@ -1688,7 +1688,7 @@ if(s->flags&LXT2_WR_SYM_F_STRING)
|
|||
|
||||
if(lt->dict_curr)
|
||||
{
|
||||
lt->dict_curr->next = lt->dict;
|
||||
lt->dict_curr->next = lt->dict;
|
||||
lt->dict_curr = lt->dict;
|
||||
}
|
||||
else
|
||||
|
|
@ -1733,7 +1733,7 @@ int i;
|
|||
|
||||
if((!lt)||(lt->blackout)||(!s)||(!value)||(!*value)||(row)) return(rc);
|
||||
|
||||
if(!lt->emitted)
|
||||
if(!lt->emitted)
|
||||
{
|
||||
lxt2_wr_emitfacs(lt);
|
||||
lt->emitted = 1;
|
||||
|
|
@ -1798,12 +1798,12 @@ if(!(s->flags&(LXT2_WR_SYM_F_DOUBLE|LXT2_WR_SYM_F_STRING)))
|
|||
prevch = *vpnt;
|
||||
while(*vpnt)
|
||||
{
|
||||
if(prevch == *vpnt)
|
||||
if(prevch == *vpnt)
|
||||
{
|
||||
vpnt++;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
prevch = 0;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1910,7 +1910,7 @@ idxchk: if(idx<0)
|
|||
|
||||
if(lt->dict_curr)
|
||||
{
|
||||
lt->dict_curr->next = lt->dict;
|
||||
lt->dict_curr->next = lt->dict;
|
||||
lt->dict_curr = lt->dict;
|
||||
}
|
||||
else
|
||||
|
|
@ -1958,15 +1958,15 @@ struct lxt2_wr_symbol *s;
|
|||
|
||||
if((lt)&&(!lt->blackout))
|
||||
{
|
||||
if(!lt->emitted)
|
||||
if(!lt->emitted)
|
||||
{
|
||||
lxt2_wr_emitfacs(lt);
|
||||
lt->emitted = 1;
|
||||
|
||||
|
||||
if(!lt->timeset)
|
||||
{
|
||||
lxt2_wr_set_time(lt, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s = lt->symchain;
|
||||
|
|
@ -1976,7 +1976,7 @@ if((lt)&&(!lt->blackout))
|
|||
{
|
||||
s->msk |= (LXT2_WR_GRAN_1VAL<<lt->timepos);
|
||||
s->chg[s->chgpos] = LXT2_WR_ENC_BLACKOUT;
|
||||
|
||||
|
||||
s->chgpos++;
|
||||
}
|
||||
else
|
||||
|
|
@ -2094,7 +2094,7 @@ if(lt)
|
|||
{
|
||||
struct lxt2_wr_symbol *s = lt->symchain;
|
||||
struct lxt2_wr_symbol *s2;
|
||||
|
||||
|
||||
while(s)
|
||||
{
|
||||
if(s->name) { free(s->name); }
|
||||
|
|
@ -2106,7 +2106,7 @@ if(lt)
|
|||
|
||||
lt->symchain=NULL;
|
||||
}
|
||||
|
||||
|
||||
free(lt->sorted_facs);
|
||||
fclose(lt->handle);
|
||||
free(lt);
|
||||
|
|
|
|||
|
|
@ -3,19 +3,19 @@
|
|||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
|
@ -75,12 +75,12 @@ typedef unsigned long long granmsk_t;
|
|||
#define LXT2_WR_GRAN_1VAL (LXT2_WR_ULLDESC(1))
|
||||
#else
|
||||
typedef unsigned int granmsk_t;
|
||||
#define LXT2_WR_GRAN_0VAL (0)
|
||||
#define LXT2_WR_GRAN_0VAL (0)
|
||||
#define LXT2_WR_GRAN_1VAL (1)
|
||||
#endif
|
||||
|
||||
|
||||
enum LXT2_WR_Encodings {
|
||||
enum LXT2_WR_Encodings {
|
||||
LXT2_WR_ENC_0,
|
||||
LXT2_WR_ENC_1,
|
||||
LXT2_WR_ENC_INV,
|
||||
|
|
@ -124,12 +124,12 @@ struct lxt2_wr_ds_tree_node {
|
|||
*/
|
||||
typedef struct lxt2_wr_dslxt_tree_node lxt2_wr_dslxt_Tree;
|
||||
struct lxt2_wr_dslxt_tree_node {
|
||||
lxt2_wr_dslxt_Tree * left, * right;
|
||||
lxt2_wr_dslxt_Tree * left, * right;
|
||||
char *item;
|
||||
unsigned int val;
|
||||
lxt2_wr_dslxt_Tree * next;
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct lxt2_wr_trace
|
||||
{
|
||||
|
|
|
|||
148
vpi/lxt_write.c
148
vpi/lxt_write.c
|
|
@ -82,7 +82,7 @@ static dslxt_Tree * dslxt_insert(char *i, dslxt_Tree * t, unsigned int val) {
|
|||
/* Return a pointer to the resulting tree. */
|
||||
dslxt_Tree * n;
|
||||
int dir;
|
||||
|
||||
|
||||
n = (dslxt_Tree *) calloc (1, sizeof (dslxt_Tree));
|
||||
if (n == NULL) {
|
||||
fprintf(stderr, "dslxt_insert: ran out of memory, exiting.\n");
|
||||
|
|
@ -140,7 +140,7 @@ static dslxt_Tree * dslxt_delete(char *i, dslxt_Tree * t) {
|
|||
/*
|
||||
* functions which emit various big endian
|
||||
* data to a file
|
||||
*/
|
||||
*/
|
||||
static int lt_emit_u8(struct lt_trace *lt, int value)
|
||||
{
|
||||
unsigned char buf[1];
|
||||
|
|
@ -221,7 +221,7 @@ return(nmemb);
|
|||
static int lt_emit_string(struct lt_trace *lt, char *value)
|
||||
{
|
||||
int rc=1;
|
||||
do
|
||||
do
|
||||
{
|
||||
rc&=lt_emit_u8(lt, *value);
|
||||
} while(*(value++));
|
||||
|
|
@ -234,7 +234,7 @@ return(rc);
|
|||
* data to a file. (lt->position needs to be
|
||||
* fixed up on gzclose so the tables don't
|
||||
* get out of sync!)
|
||||
*/
|
||||
*/
|
||||
static int lt_emit_u8z(struct lt_trace *lt, int value)
|
||||
{
|
||||
unsigned char buf[1];
|
||||
|
|
@ -321,7 +321,7 @@ return(nmemb);
|
|||
static int lt_emit_stringz(struct lt_trace *lt, char *value)
|
||||
{
|
||||
int rc=1;
|
||||
do
|
||||
do
|
||||
{
|
||||
rc&=lt_emit_u8z(lt, *value);
|
||||
} while(*(value++));
|
||||
|
|
@ -333,7 +333,7 @@ return(rc);
|
|||
* data to a file. (lt->position needs to be
|
||||
* fixed up on BZ2_bzclose so the tables don't
|
||||
* get out of sync!)
|
||||
*/
|
||||
*/
|
||||
static int lt_emit_u8bz(struct lt_trace *lt, int value)
|
||||
{
|
||||
unsigned char buf[1];
|
||||
|
|
@ -420,7 +420,7 @@ return(nmemb);
|
|||
static int lt_emit_stringbz(struct lt_trace *lt, char *value)
|
||||
{
|
||||
int rc=1;
|
||||
do
|
||||
do
|
||||
{
|
||||
rc&=lt_emit_u8bz(lt, *value);
|
||||
} while(*(value++));
|
||||
|
|
@ -487,7 +487,7 @@ for(p=s;*p;p++)
|
|||
{
|
||||
h=h^(g>>24);
|
||||
h=h^g;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h^=h2; /* combine the two hashes */
|
||||
|
|
@ -514,17 +514,17 @@ struct lt_symbol *temp;
|
|||
|
||||
hv=lt_hash(s);
|
||||
if(!(temp=lt->sym[hv])) return(NULL); /* no hash entry, add here wanted to add */
|
||||
|
||||
|
||||
while(temp)
|
||||
{
|
||||
if(!strcmp(temp->name,s))
|
||||
{
|
||||
return(temp); /* in table already */
|
||||
return(temp); /* in table already */
|
||||
}
|
||||
if(!temp->next) break;
|
||||
temp=temp->next;
|
||||
}
|
||||
|
||||
|
||||
return(NULL); /* not found, add here if you want to add*/
|
||||
}
|
||||
|
||||
|
|
@ -549,13 +549,13 @@ if(lt->compress_fac_str)
|
|||
lt_emit_u16z(lt, i);
|
||||
lt_emit_stringz(lt, str+i);
|
||||
free(lt->compress_fac_str);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lt_emit_u16z(lt, 0);
|
||||
lt_emit_stringz(lt, str);
|
||||
}
|
||||
|
||||
|
||||
lt->compress_fac_str = (char *) malloc((lt->compress_fac_len=len)+1);
|
||||
strcpy(lt->compress_fac_str, str);
|
||||
}
|
||||
|
|
@ -591,10 +591,10 @@ while(lastch!=s->name)
|
|||
{
|
||||
if(*lastch=='[')
|
||||
{
|
||||
*lastch=0x00;
|
||||
*lastch=0x00;
|
||||
return;
|
||||
}
|
||||
lastch--;
|
||||
lastch--;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -620,12 +620,12 @@ if((lt)&&(lt->numfacs))
|
|||
strip_brack(s);
|
||||
s=s->symchain;
|
||||
}
|
||||
else
|
||||
else
|
||||
for(i=0;i<lt->numfacs;i++)
|
||||
{
|
||||
lt->sorted_facs[i] = s;
|
||||
s=s->symchain;
|
||||
}
|
||||
}
|
||||
qsort((void *)lt->sorted_facs, lt->numfacs, sizeof(struct lt_symbol *), lt_compare);
|
||||
|
||||
for(i=0;i<lt->numfacs;i++)
|
||||
|
|
@ -653,7 +653,7 @@ if((lt)&&(lt->numfacs))
|
|||
free(lt->compress_fac_str); lt->compress_fac_str=NULL;
|
||||
lt->compress_fac_len=0;
|
||||
lt->zfacname_predec_size = lt->zpackcount;
|
||||
|
||||
|
||||
gzclose(lt->zhandle);
|
||||
fseek(lt->handle, 0L, SEEK_END);
|
||||
lt->position=ftell(lt->handle);
|
||||
|
|
@ -688,13 +688,13 @@ if((lt)&&(lt->numfacs))
|
|||
if(is_interlaced_trace)
|
||||
{
|
||||
lt->zhandle = gzdopen(dup(fileno(lt->handle)), "wb9");
|
||||
|
||||
|
||||
lt->sync_table_offset = lt->position;
|
||||
for(i=0;i<lt->numfacs;i++)
|
||||
{
|
||||
lt_emit_u32z(lt, lt->sorted_facs[i]->last_change);
|
||||
}
|
||||
|
||||
|
||||
gzclose(lt->zhandle); lt->zhandle = NULL;
|
||||
fseek(lt->handle, 0L, SEEK_END);
|
||||
lt->position=ftell(lt->handle);
|
||||
|
|
@ -705,7 +705,7 @@ if((lt)&&(lt->numfacs))
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
* initialize the trace and get back and lt context
|
||||
*/
|
||||
struct lt_trace *lt_init(const char *name)
|
||||
|
|
@ -831,7 +831,7 @@ switch(numbytes_trans&3)
|
|||
case 3: lt->lt_emit_u32(lt, numtrans); break;
|
||||
}
|
||||
|
||||
/* printf("Clock finish for '%s' at %Ld ending with '%c' for %d repeats over a switch delta of %d\n",
|
||||
/* printf("Clock finish for '%s' at %Ld ending with '%c' for %d repeats over a switch delta of %d\n",
|
||||
s->name, lt->timeval, s->clk_prevval, s->clk_numtrans - LT_CLKPACK, s->clk_delta); */
|
||||
s->clk_prevtrans = ULLDescriptor(~0);
|
||||
s->clk_numtrans = 0;
|
||||
|
|
@ -932,7 +932,7 @@ switch(numbytes_trans&3)
|
|||
case 3: lt->lt_emit_u32(lt, numtrans); break;
|
||||
}
|
||||
|
||||
/* printf("Clock finish for '%s' at %Ld ending with '%08x' for %d repeats over a switch delta of %Ld\n",
|
||||
/* printf("Clock finish for '%s' at %Ld ending with '%08x' for %d repeats over a switch delta of %Ld\n",
|
||||
s->name, lt->timeval, s->clk_prevval, s->clk_numtrans - LT_CLKPACK_M, s->clk_delta); */
|
||||
s->clk_prevtrans = ULLDescriptor(~0);
|
||||
s->clk_numtrans = 0;
|
||||
|
|
@ -1000,7 +1000,7 @@ for(i=0;i<lt->num_dict_entries;i++)
|
|||
/* fprintf(stderr, "%8d) '%s'\n", ds->val, ds->item); */
|
||||
lt_emit_stringz(lt, ds->item+1);
|
||||
}
|
||||
|
||||
|
||||
gzclose(lt->zhandle);
|
||||
fseek(lt->handle, 0L, SEEK_END);
|
||||
lt->position=ftell(lt->handle);
|
||||
|
|
@ -1037,13 +1037,13 @@ if(lt)
|
|||
if(s->clk_numtrans > LT_CLKPACK_M) lt_flushclock_m(lt, s);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
if(s->clk_numtrans > LT_CLKPACK) lt_flushclock(lt, s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
s=s->symchain;
|
||||
}
|
||||
}
|
||||
|
||||
lt_set_dumpon(lt); /* in case it was turned off */
|
||||
|
||||
|
|
@ -1101,7 +1101,7 @@ if(lt)
|
|||
while(t)
|
||||
{
|
||||
lt_emit_u32z(lt, t->position - lastposition); lastposition = t->position;
|
||||
t=t->next;
|
||||
t=t->next;
|
||||
}
|
||||
|
||||
t=lt->timehead;
|
||||
|
|
@ -1111,9 +1111,9 @@ if(lt)
|
|||
{
|
||||
lxttime_t delta = t->timeval - lasttime;
|
||||
lt_emit_u64z(lt, (int)(delta>>32), (int)delta); lasttime = t->timeval;
|
||||
|
||||
|
||||
t2=t->next;
|
||||
free(t);
|
||||
free(t);
|
||||
t=t2;
|
||||
}
|
||||
}
|
||||
|
|
@ -1122,12 +1122,12 @@ if(lt)
|
|||
while(t)
|
||||
{
|
||||
lt_emit_u32z(lt, (int)(t->timeval - lasttime)); lasttime = t->timeval;
|
||||
|
||||
|
||||
t2=t->next;
|
||||
free(t);
|
||||
free(t);
|
||||
t=t2;
|
||||
}
|
||||
|
||||
|
||||
lt->timehead = lt->timecurr = NULL;
|
||||
}
|
||||
|
||||
|
|
@ -1137,7 +1137,7 @@ if(lt)
|
|||
lt->ztime_table_size = lt->position - lt->ztime_table_size;
|
||||
}
|
||||
|
||||
if(lt->initial_value>=0)
|
||||
if(lt->initial_value>=0)
|
||||
{
|
||||
lt->initial_value_offset = lt->position;
|
||||
lt_emit_u8(lt, lt->initial_value);
|
||||
|
|
@ -1152,7 +1152,7 @@ if(lt)
|
|||
if(lt->double_used)
|
||||
{
|
||||
lt->double_test_offset = lt->position;
|
||||
lt_emit_double(lt, 3.14159);
|
||||
lt_emit_double(lt, 3.14159);
|
||||
}
|
||||
|
||||
if(lt->dumpoffcount)
|
||||
|
|
@ -1168,7 +1168,7 @@ if(lt)
|
|||
lt_emit_u64(lt, (int)((ltt->timeval)>>32), (int)ltt->timeval);
|
||||
ltt2 = ltt;
|
||||
ltt=ltt->next;
|
||||
free(ltt2);
|
||||
free(ltt2);
|
||||
}
|
||||
|
||||
lt->dumpoffhead = lt->dumpoffcurr = NULL;
|
||||
|
|
@ -1211,7 +1211,7 @@ if(lt)
|
|||
{
|
||||
struct lt_symbol *s = lt->symchain;
|
||||
struct lt_symbol *s2;
|
||||
|
||||
|
||||
while(s)
|
||||
{
|
||||
free(s->name);
|
||||
|
|
@ -1326,7 +1326,7 @@ return(sa);
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
* set current time
|
||||
*/
|
||||
int lt_inc_time_by_delta(struct lt_trace *lt, unsigned int timeval)
|
||||
|
|
@ -1365,7 +1365,7 @@ if(lt)
|
|||
else
|
||||
{
|
||||
free(trl);
|
||||
goto bail;
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -1446,7 +1446,7 @@ if((lt)&&(!lt->emitted))
|
|||
}
|
||||
|
||||
/*
|
||||
* sets change interlace
|
||||
* sets change interlace
|
||||
*/
|
||||
void lt_set_no_interlace(struct lt_trace *lt)
|
||||
{
|
||||
|
|
@ -1471,12 +1471,12 @@ if((lt)&&(!lt->emitted)&&(!lt->sorted_facs))
|
|||
strip_brack(s);
|
||||
s=s->symchain;
|
||||
}
|
||||
else
|
||||
else
|
||||
for(i=0;i<lt->numfacs;i++)
|
||||
{
|
||||
lt->sorted_facs[i] = s;
|
||||
s=s->symchain;
|
||||
}
|
||||
}
|
||||
qsort((void *)lt->sorted_facs, lt->numfacs, sizeof(struct lt_symbol *), lt_compare);
|
||||
|
||||
for(i=0;i<lt->numfacs;i++)
|
||||
|
|
@ -1516,12 +1516,12 @@ if(lt)
|
|||
{
|
||||
int tag;
|
||||
switch(value)
|
||||
{
|
||||
{
|
||||
case '0': tag = 0; break;
|
||||
case '1': tag = 1; break;
|
||||
case 'Z':
|
||||
case 'Z':
|
||||
case 'z': tag = 2; break;
|
||||
case 'X':
|
||||
case 'X':
|
||||
case 'x': tag = 3; break;
|
||||
case 'H':
|
||||
case 'h': tag = 4; break;
|
||||
|
|
@ -1817,7 +1817,7 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
{
|
||||
tag = (numbytes<<4);
|
||||
}
|
||||
|
||||
|
||||
lt->lt_emit_u8(lt, tag);
|
||||
switch(numbytes&3)
|
||||
{
|
||||
|
|
@ -1838,7 +1838,7 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
}
|
||||
lt->lt_emit_u8(lt, optimized ? (3+optimized1) : 0);
|
||||
}
|
||||
|
||||
|
||||
s->last_change = start_position;
|
||||
|
||||
if(s->rows>0)
|
||||
|
|
@ -1904,7 +1904,7 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
{
|
||||
if(lt->num_dict_entries==(256*65536)) lt->dict32_offset = lt->position;
|
||||
}
|
||||
|
||||
|
||||
lt->num_dict_entries++;
|
||||
}
|
||||
|
||||
|
|
@ -1949,14 +1949,14 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
value <<= (24-len);
|
||||
rc=lt->lt_emit_u24(lt, value);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
value <<= (32-len);
|
||||
rc=lt->lt_emit_u32(lt, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(lt->timebuff)
|
||||
{
|
||||
lt->timechangecount++;
|
||||
|
|
@ -2018,7 +2018,7 @@ if((s->flags)<_SYM_F_DOUBLE)
|
|||
{
|
||||
numbytes = 0;
|
||||
}
|
||||
|
||||
|
||||
start_position = lt->position;
|
||||
s->last_change = start_position;
|
||||
|
||||
|
|
@ -2074,7 +2074,7 @@ if((s->flags)<_SYM_F_DOUBLE)
|
|||
}
|
||||
|
||||
rc=lt->lt_emit_double(lt, value);
|
||||
|
||||
|
||||
if(lt->timebuff)
|
||||
{
|
||||
lt->timechangecount++;
|
||||
|
|
@ -2136,7 +2136,7 @@ if((s->flags)<_SYM_F_STRING)
|
|||
{
|
||||
numbytes = 0;
|
||||
}
|
||||
|
||||
|
||||
start_position = lt->position;
|
||||
s->last_change = start_position;
|
||||
|
||||
|
|
@ -2192,7 +2192,7 @@ if((s->flags)<_SYM_F_STRING)
|
|||
}
|
||||
|
||||
rc=lt->lt_emit_string(lt, value);
|
||||
|
||||
|
||||
if(lt->timebuff)
|
||||
{
|
||||
lt->timechangecount++;
|
||||
|
|
@ -2300,7 +2300,7 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
s->clk_prevval1 = s->clk_prevval;
|
||||
s->clk_prevval = ivalue;
|
||||
|
||||
/* printf("Clock value '%08x' for '%s' [len=%d] at %Ld (#%d)\n",
|
||||
/* printf("Clock value '%08x' for '%s' [len=%d] at %Ld (#%d)\n",
|
||||
ivalue, s->name, len, lt->timeval, s->clk_numtrans); */
|
||||
return(1);
|
||||
}
|
||||
|
|
@ -2429,12 +2429,12 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
while((ch=*(pnt++)))
|
||||
{
|
||||
switch(ch)
|
||||
{
|
||||
{
|
||||
case '0':
|
||||
case '1': mvl|=LT_MVL_2; break;
|
||||
case 'Z':
|
||||
case 'z':
|
||||
case 'X':
|
||||
case 'Z':
|
||||
case 'z':
|
||||
case 'X':
|
||||
case 'x': mvl|=LT_MVL_4; break;
|
||||
default: mvl|=LT_MVL_9; break;
|
||||
}
|
||||
|
|
@ -2443,13 +2443,13 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
}
|
||||
|
||||
switch(prevch)
|
||||
{
|
||||
{
|
||||
case 0x00: tagadd = 0; break;
|
||||
case '0': tagadd = 3; break;
|
||||
case '1': tagadd = 4; break;
|
||||
case 'Z':
|
||||
case 'Z':
|
||||
case 'z': tagadd = 5; break;
|
||||
case 'X':
|
||||
case 'X':
|
||||
case 'x': tagadd = 6; break;
|
||||
case 'H':
|
||||
case 'h': tagadd = 7; break;
|
||||
|
|
@ -2546,7 +2546,7 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
int outval = 0;
|
||||
int thisval= 0;
|
||||
|
||||
pnt = value;
|
||||
pnt = value;
|
||||
|
||||
if((lt->dictmode)&&(len>lt->mindictwidth))
|
||||
{
|
||||
|
|
@ -2577,7 +2577,7 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
{
|
||||
if(lt->num_dict_entries==(256*65536)) lt->dict32_offset = lt->position;
|
||||
}
|
||||
|
||||
|
||||
lt->num_dict_entries++;
|
||||
}
|
||||
|
||||
|
|
@ -2615,8 +2615,8 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
outval |= (thisval<<bitpos);
|
||||
bitpos--;
|
||||
if((bitpos==-1)||(i==len-1))
|
||||
{
|
||||
lt->lt_emit_u8(lt, outval);
|
||||
{
|
||||
lt->lt_emit_u8(lt, outval);
|
||||
outval = 0;
|
||||
bitpos = 7;
|
||||
}
|
||||
|
|
@ -2630,7 +2630,7 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
int outval = 0;
|
||||
int thisval= 0;
|
||||
|
||||
pnt = value;
|
||||
pnt = value;
|
||||
|
||||
for(i=0;i<len;i++)
|
||||
{
|
||||
|
|
@ -2649,8 +2649,8 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
outval |= (thisval<<bitpos);
|
||||
bitpos-=2;
|
||||
if((bitpos==-2)||(i==len-1))
|
||||
{
|
||||
lt->lt_emit_u8(lt, outval);
|
||||
{
|
||||
lt->lt_emit_u8(lt, outval);
|
||||
outval = 0;
|
||||
bitpos = 6;
|
||||
}
|
||||
|
|
@ -2664,7 +2664,7 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
int outval = 0;
|
||||
int thisval= 0;
|
||||
|
||||
pnt = value;
|
||||
pnt = value;
|
||||
|
||||
for(i=0;i<len;i++)
|
||||
{
|
||||
|
|
@ -2693,8 +2693,8 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
outval |= (thisval<<bitpos);
|
||||
bitpos-=4;
|
||||
if((bitpos==-4)||(i==len-1))
|
||||
{
|
||||
lt->lt_emit_u8(lt, outval);
|
||||
{
|
||||
lt->lt_emit_u8(lt, outval);
|
||||
outval = 0;
|
||||
bitpos = 4;
|
||||
}
|
||||
|
|
@ -2704,7 +2704,7 @@ if(!(s->flags&(LT_SYM_F_DOUBLE|LT_SYM_F_STRING)))
|
|||
|
||||
rc=1;
|
||||
}
|
||||
|
||||
|
||||
if(lt->timebuff)
|
||||
{
|
||||
lt->timechangecount++;
|
||||
|
|
|
|||
|
|
@ -3,19 +3,19 @@
|
|||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
|
@ -35,11 +35,11 @@
|
|||
|
||||
typedef struct dslxt_tree_node dslxt_Tree;
|
||||
struct dslxt_tree_node {
|
||||
dslxt_Tree * left, * right;
|
||||
dslxt_Tree * left, * right;
|
||||
char *item;
|
||||
unsigned int val;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define LT_HDRID (0x0138)
|
||||
#define LT_VERSION (0x0004)
|
||||
|
|
@ -157,7 +157,7 @@ unsigned double_used : 1;
|
|||
unsigned do_strip_brackets : 1;
|
||||
unsigned clock_compress : 1;
|
||||
unsigned dictmode : 1; /* dictionary compression enabled */
|
||||
unsigned zmode : 2; /* for value changes */
|
||||
unsigned zmode : 2; /* for value changes */
|
||||
unsigned emitted : 1; /* gate off change field zmode changes when set */
|
||||
};
|
||||
|
||||
|
|
@ -228,9 +228,9 @@ void lt_set_dumpoff(struct lt_trace *lt);
|
|||
void lt_set_dumpon(struct lt_trace *lt);
|
||||
|
||||
/*
|
||||
* value change functions..note that if the value string len for
|
||||
* lt_emit_value_bit_string() is shorter than the symbol length
|
||||
* it will be left justified with the rightmost character used as
|
||||
* value change functions..note that if the value string len for
|
||||
* lt_emit_value_bit_string() is shorter than the symbol length
|
||||
* it will be left justified with the rightmost character used as
|
||||
* a repeat value that will be propagated to pad the value string out:
|
||||
*
|
||||
* "10x" for 8 bits becomes "10xxxxxx"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
* Change the function prototypes to use ANSI/ISO C syntax.
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: mt19937int.c,v 1.4 2003/05/14 04:18:16 steve Exp $"
|
||||
#ident "$Id: mt19937int.c,v 1.5 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
/* A C-program for MT19937: Integer version (1998/4/6) */
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
/* 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 library; if not, write to the */
|
||||
/* Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA */
|
||||
/* Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA */
|
||||
/* 02111-1307 USA */
|
||||
|
||||
/* Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. */
|
||||
|
|
@ -50,14 +50,14 @@
|
|||
|
||||
#include "sys_priv.h"
|
||||
|
||||
/* Period parameters */
|
||||
/* Period parameters */
|
||||
#define N 624
|
||||
#define M 397
|
||||
#define MATRIX_A 0x9908b0df /* constant vector a */
|
||||
#define UPPER_MASK 0x80000000 /* most significant w-r bits */
|
||||
#define LOWER_MASK 0x7fffffff /* least significant r bits */
|
||||
|
||||
/* Tempering parameters */
|
||||
/* Tempering parameters */
|
||||
#define TEMPERING_MASK_B 0x9d2c5680
|
||||
#define TEMPERING_MASK_C 0xefc60000
|
||||
#define TEMPERING_SHIFT_U(y) (y >> 11)
|
||||
|
|
@ -83,7 +83,7 @@ sgenrand(struct context_s *context, unsigned long seed)
|
|||
context->mti = mti;
|
||||
}
|
||||
|
||||
unsigned long
|
||||
unsigned long
|
||||
genrand(struct context_s *context)
|
||||
{
|
||||
unsigned long y;
|
||||
|
|
@ -112,7 +112,7 @@ genrand(struct context_s *context)
|
|||
|
||||
mti = 0;
|
||||
}
|
||||
|
||||
|
||||
y = mt[mti++];
|
||||
y ^= TEMPERING_SHIFT_U(y);
|
||||
y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
|
||||
|
|
@ -121,11 +121,14 @@ genrand(struct context_s *context)
|
|||
|
||||
context->mti = mti;
|
||||
|
||||
return y;
|
||||
return y;
|
||||
}
|
||||
|
||||
/*
|
||||
* $Log: mt19937int.c,v $
|
||||
* Revision 1.5 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.4 2003/05/14 04:18:16 steve
|
||||
* Use seed to store random number context.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_deposit.c,v 1.4 2004/01/21 01:22:53 steve Exp $"
|
||||
#ident "$Id: sys_deposit.c,v 1.5 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vpi_config.h"
|
||||
|
|
@ -45,11 +45,11 @@ static int sys_deposit_calltf(char *name)
|
|||
value = vpi_scan(argv);
|
||||
assert(value);
|
||||
vpi_free_object(argv);
|
||||
|
||||
|
||||
val.format = vpiIntVal;
|
||||
vpi_get_value(value, &val);
|
||||
|
||||
switch (vpi_get(vpiType, target))
|
||||
switch (vpi_get(vpiType, target))
|
||||
{
|
||||
default:
|
||||
vpi_printf("ERROR: %s invalid target parameter\n", name);
|
||||
|
|
@ -66,7 +66,7 @@ static int sys_deposit_calltf(char *name)
|
|||
void sys_deposit_register()
|
||||
{
|
||||
s_vpi_systf_data tf_data;
|
||||
|
||||
|
||||
tf_data.type = vpiSysTask;
|
||||
tf_data.tfname = "$deposit";
|
||||
tf_data.calltf = sys_deposit_calltf;
|
||||
|
|
@ -79,6 +79,9 @@ void sys_deposit_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_deposit.c,v $
|
||||
* Revision 1.5 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.4 2004/01/21 01:22:53 steve
|
||||
* Give the vip directory its own configure and vpi_config.h
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_display.c,v 1.70 2004/02/20 01:53:02 steve Exp $"
|
||||
#ident "$Id: sys_display.c,v 1.71 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vpi_config.h"
|
||||
|
|
@ -297,7 +297,7 @@ static void format_time(unsigned mcd, int fsize,
|
|||
if (*bp == '.')
|
||||
*--bp = '0';
|
||||
}
|
||||
|
||||
|
||||
|
||||
my_mcd_printf(mcd, "%s", bp);
|
||||
}
|
||||
|
|
@ -492,7 +492,7 @@ static int format_str_char(vpiHandle scope, unsigned int mcd,
|
|||
|
||||
use_count = 1;
|
||||
break;
|
||||
|
||||
|
||||
/* Print numeric value is decimal integer format. */
|
||||
case 'd':
|
||||
case 'D':
|
||||
|
|
@ -776,7 +776,7 @@ static int format_str(vpiHandle scope, unsigned int mcd,
|
|||
my_mcd_printf(mcd, "\"");
|
||||
cp += 1;
|
||||
break;
|
||||
|
||||
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
|
|
@ -1024,7 +1024,7 @@ static int sys_strobe_calltf(char*name)
|
|||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
vpi_printf("ERROR: %s mcd parameter must be integral", name);
|
||||
vpi_printf(", got vpiType=%d\n", type);
|
||||
|
|
@ -1190,7 +1190,7 @@ static int sys_monitoroff_calltf(char*name)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Implement $fdisplay and $fwrite.
|
||||
/* Implement $fdisplay and $fwrite.
|
||||
* Perhaps this could be merged into sys_display_calltf.
|
||||
*/
|
||||
static int sys_fdisplay_calltf(char *name)
|
||||
|
|
@ -1566,6 +1566,9 @@ void sys_display_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_display.c,v $
|
||||
* Revision 1.71 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.70 2004/02/20 01:53:02 steve
|
||||
* Do not strip leading spaces, or expect them either.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_lxt.c,v 1.25 2004/02/15 20:46:01 steve Exp $"
|
||||
#ident "$Id: sys_lxt.c,v 1.26 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "sys_priv.h"
|
||||
|
|
@ -224,8 +224,8 @@ static int variable_cb_2(p_cb_data cause)
|
|||
{
|
||||
struct vcd_info* info = vcd_dmp_list;
|
||||
PLI_UINT64 now = timerec_to_time64(cause->time);
|
||||
|
||||
if (now != vcd_cur_time) {
|
||||
|
||||
if (now != vcd_cur_time) {
|
||||
lt_set_time64(dump_file, now);
|
||||
vcd_cur_time = now;
|
||||
}
|
||||
|
|
@ -254,7 +254,7 @@ static int variable_cb_1(p_cb_data cause)
|
|||
cb.reason = cbReadOnlySynch;
|
||||
cb.cb_rtn = variable_cb_2;
|
||||
vpi_register_cb(&cb);
|
||||
}
|
||||
}
|
||||
|
||||
info->scheduled = 1;
|
||||
info->dmp_next = vcd_dmp_list;
|
||||
|
|
@ -405,17 +405,17 @@ static void open_dumpfile(const char*path)
|
|||
dump_file = lt_init(path);
|
||||
|
||||
if (dump_file == 0) {
|
||||
vpi_mcd_printf(1,
|
||||
"LXT Error: Unable to open %s for output.\n",
|
||||
vpi_mcd_printf(1,
|
||||
"LXT Error: Unable to open %s for output.\n",
|
||||
path);
|
||||
return;
|
||||
} else {
|
||||
int prec = vpi_get(vpiTimePrecision, 0);
|
||||
|
||||
vpi_mcd_printf(1,
|
||||
"LXT info: dumpfile %s opened for output.\n",
|
||||
vpi_mcd_printf(1,
|
||||
"LXT info: dumpfile %s opened for output.\n",
|
||||
path);
|
||||
|
||||
|
||||
assert(prec >= -15);
|
||||
lt_set_timescale(dump_file, prec);
|
||||
|
||||
|
|
@ -439,9 +439,9 @@ static int sys_dumpfile_calltf(char*name)
|
|||
|
||||
if (vpi_get(vpiType, item) != vpiConstant
|
||||
|| vpi_get(vpiConstType, item) != vpiStringConst) {
|
||||
vpi_mcd_printf(1,
|
||||
vpi_mcd_printf(1,
|
||||
"LXT Error:"
|
||||
" %s parameter must be a string constant\n",
|
||||
" %s parameter must be a string constant\n",
|
||||
name);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -518,7 +518,7 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
|
||||
if (skip)
|
||||
break;
|
||||
|
||||
|
||||
name = vpi_get_str(vpiName, item);
|
||||
nexus_id = vpi_get(_vpiNexusId, item);
|
||||
if (nexus_id) {
|
||||
|
|
@ -526,12 +526,12 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
} else {
|
||||
ident = 0;
|
||||
}
|
||||
|
||||
|
||||
if (!ident) {
|
||||
char*tmp = create_full_name(name);
|
||||
ident = strdup_sh(&name_heap, tmp);
|
||||
free(tmp);
|
||||
|
||||
|
||||
if (nexus_id)
|
||||
set_nexus_ident(nexus_id, ident);
|
||||
|
||||
|
|
@ -560,7 +560,7 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
vpi_get(vpiSize, item)-1, 0);
|
||||
free(n);
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
|
||||
case vpiRealVar:
|
||||
|
|
@ -608,16 +608,16 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
vpi_get_str(vpiFullName, item);
|
||||
|
||||
#if 0
|
||||
vpi_mcd_printf(1,
|
||||
vpi_mcd_printf(1,
|
||||
"LXT info:"
|
||||
" scanning scope %s, %u levels\n",
|
||||
fullname, depth);
|
||||
#endif
|
||||
nskip = 0 != vcd_names_search(&lxt_tab, fullname);
|
||||
|
||||
if (!nskip)
|
||||
|
||||
if (!nskip)
|
||||
vcd_names_add(&lxt_tab, fullname);
|
||||
else
|
||||
else
|
||||
vpi_mcd_printf(1,
|
||||
"LXT warning:"
|
||||
" ignoring signals"
|
||||
|
|
@ -627,7 +627,7 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
name = vpi_get_str(vpiName, item);
|
||||
|
||||
push_scope(name); /* keep in type info determination for possible future usage */
|
||||
|
||||
|
||||
for (i=0; types[i]>0; i++) {
|
||||
vpiHandle hand;
|
||||
argv = vpi_iterate(types[i], item);
|
||||
|
|
@ -635,11 +635,11 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
scan_item(depth-1, hand, nskip);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pop_scope();
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
vpi_mcd_printf(1,
|
||||
"LXT Error: $lxtdumpvars: Unsupported parameter "
|
||||
|
|
@ -657,7 +657,7 @@ static int draw_scope(vpiHandle item)
|
|||
vpiHandle scope = vpi_handle(vpiScope, item);
|
||||
if (!scope)
|
||||
return 0;
|
||||
|
||||
|
||||
depth = 1 + draw_scope(scope);
|
||||
name = vpi_get_str(vpiName, scope);
|
||||
|
||||
|
|
@ -668,7 +668,7 @@ static int draw_scope(vpiHandle item)
|
|||
case vpiNamedFork: type = "fork"; break;
|
||||
default: type = "module"; break;
|
||||
}
|
||||
|
||||
|
||||
push_scope(name); /* keep in type info determination for possible future usage */
|
||||
|
||||
return depth;
|
||||
|
|
@ -734,7 +734,7 @@ static int sys_dumpvars_calltf(char*name)
|
|||
|
||||
vcd_names_sort(&lxt_tab);
|
||||
scan_item(depth, item, 0);
|
||||
|
||||
|
||||
while (dep--) {
|
||||
pop_scope();
|
||||
}
|
||||
|
|
@ -819,6 +819,9 @@ void sys_lxt_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_lxt.c,v $
|
||||
* Revision 1.26 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.25 2004/02/15 20:46:01 steve
|
||||
* Add the $dumpflush function
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_lxt2.c,v 1.7 2004/02/15 20:46:01 steve Exp $"
|
||||
#ident "$Id: sys_lxt2.c,v 1.8 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "sys_priv.h"
|
||||
|
|
@ -226,8 +226,8 @@ static int variable_cb_2(p_cb_data cause)
|
|||
{
|
||||
struct vcd_info* info = vcd_dmp_list;
|
||||
PLI_UINT64 now = timerec_to_time64(cause->time);
|
||||
|
||||
if (now != vcd_cur_time) {
|
||||
|
||||
if (now != vcd_cur_time) {
|
||||
lxt2_wr_set_time64(dump_file, now);
|
||||
vcd_cur_time = now;
|
||||
}
|
||||
|
|
@ -256,7 +256,7 @@ static int variable_cb_1(p_cb_data cause)
|
|||
cb.reason = cbReadOnlySynch;
|
||||
cb.cb_rtn = variable_cb_2;
|
||||
vpi_register_cb(&cb);
|
||||
}
|
||||
}
|
||||
|
||||
info->scheduled = 1;
|
||||
info->dmp_next = vcd_dmp_list;
|
||||
|
|
@ -408,17 +408,17 @@ static void open_dumpfile(const char*path)
|
|||
dump_file = lxt2_wr_init(path);
|
||||
|
||||
if (dump_file == 0) {
|
||||
vpi_mcd_printf(1,
|
||||
"LXT Error: Unable to open %s for output.\n",
|
||||
vpi_mcd_printf(1,
|
||||
"LXT Error: Unable to open %s for output.\n",
|
||||
path);
|
||||
return;
|
||||
} else {
|
||||
int prec = vpi_get(vpiTimePrecision, 0);
|
||||
|
||||
vpi_mcd_printf(1,
|
||||
"LXT info: dumpfile %s opened for output.\n",
|
||||
vpi_mcd_printf(1,
|
||||
"LXT info: dumpfile %s opened for output.\n",
|
||||
path);
|
||||
|
||||
|
||||
assert(prec >= -15);
|
||||
lxt2_wr_set_timescale(dump_file, prec);
|
||||
|
||||
|
|
@ -444,9 +444,9 @@ static int sys_dumpfile_calltf(char*name)
|
|||
|
||||
if (vpi_get(vpiType, item) != vpiConstant
|
||||
|| vpi_get(vpiConstType, item) != vpiStringConst) {
|
||||
vpi_mcd_printf(1,
|
||||
vpi_mcd_printf(1,
|
||||
"LXT Error:"
|
||||
" %s parameter must be a string constant\n",
|
||||
" %s parameter must be a string constant\n",
|
||||
name);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -529,7 +529,7 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
|
||||
if (skip)
|
||||
break;
|
||||
|
||||
|
||||
name = vpi_get_str(vpiName, item);
|
||||
nexus_id = vpi_get(_vpiNexusId, item);
|
||||
if (nexus_id) {
|
||||
|
|
@ -537,12 +537,12 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
} else {
|
||||
ident = 0;
|
||||
}
|
||||
|
||||
|
||||
if (!ident) {
|
||||
char*tmp = create_full_name(name);
|
||||
ident = strdup_sh(&name_heap, tmp);
|
||||
free(tmp);
|
||||
|
||||
|
||||
if (nexus_id)
|
||||
set_nexus_ident(nexus_id, ident);
|
||||
|
||||
|
|
@ -575,7 +575,7 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
vpi_get(vpiSize, item)-1, 0);
|
||||
free(n);
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
|
||||
case vpiRealVar:
|
||||
|
|
@ -626,16 +626,16 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
vpi_get_str(vpiFullName, item);
|
||||
|
||||
#if 0
|
||||
vpi_mcd_printf(1,
|
||||
vpi_mcd_printf(1,
|
||||
"LXT info:"
|
||||
" scanning scope %s, %u levels\n",
|
||||
fullname, depth);
|
||||
#endif
|
||||
nskip = 0 != vcd_names_search(&lxt_tab, fullname);
|
||||
|
||||
if (!nskip)
|
||||
|
||||
if (!nskip)
|
||||
vcd_names_add(&lxt_tab, fullname);
|
||||
else
|
||||
else
|
||||
vpi_mcd_printf(1,
|
||||
"LXT warning:"
|
||||
" ignoring signals"
|
||||
|
|
@ -645,7 +645,7 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
name = vpi_get_str(vpiName, item);
|
||||
|
||||
push_scope(name); /* keep in type info determination for possible future usage */
|
||||
|
||||
|
||||
for (i=0; types[i]>0; i++) {
|
||||
vpiHandle hand;
|
||||
argv = vpi_iterate(types[i], item);
|
||||
|
|
@ -653,11 +653,11 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
scan_item(depth-1, hand, nskip);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pop_scope();
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
vpi_mcd_printf(1,
|
||||
"LXT Error: $lxtdumpvars: Unsupported parameter "
|
||||
|
|
@ -675,7 +675,7 @@ static int draw_scope(vpiHandle item)
|
|||
vpiHandle scope = vpi_handle(vpiScope, item);
|
||||
if (!scope)
|
||||
return 0;
|
||||
|
||||
|
||||
depth = 1 + draw_scope(scope);
|
||||
name = vpi_get_str(vpiName, scope);
|
||||
|
||||
|
|
@ -686,7 +686,7 @@ static int draw_scope(vpiHandle item)
|
|||
case vpiNamedFork: type = "fork"; break;
|
||||
default: type = "module"; break;
|
||||
}
|
||||
|
||||
|
||||
push_scope(name); /* keep in type info determination for possible future usage */
|
||||
|
||||
return depth;
|
||||
|
|
@ -752,7 +752,7 @@ static int sys_dumpvars_calltf(char*name)
|
|||
|
||||
vcd_names_sort(&lxt_tab);
|
||||
scan_item(depth, item, 0);
|
||||
|
||||
|
||||
while (dep--) {
|
||||
pop_scope();
|
||||
}
|
||||
|
|
@ -839,6 +839,9 @@ void sys_lxt2_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_lxt2.c,v $
|
||||
* Revision 1.8 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.7 2004/02/15 20:46:01 steve
|
||||
* Add the $dumpflush function
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_plusargs.c,v 1.4 2002/08/12 01:35:05 steve Exp $"
|
||||
#ident "$Id: sys_plusargs.c,v 1.5 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include <vpi_user.h>
|
||||
|
|
@ -198,7 +198,7 @@ static int sys_value_plusargs_compiletf(char*xx)
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
arg = vpi_scan(argv);
|
||||
if (argv == 0) {
|
||||
vpi_printf("ERROR: $value$plusargs requires two arguments\n");
|
||||
|
|
@ -329,6 +329,9 @@ void sys_plusargs_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_plusargs.c,v $
|
||||
* Revision 1.5 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.4 2002/08/12 01:35:05 steve
|
||||
* conditional ident string using autoconfig.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_random.c,v 1.13 2004/06/17 14:44:01 steve Exp $"
|
||||
#ident "$Id: sys_random.c,v 1.14 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "sys_priv.h"
|
||||
|
|
@ -320,7 +320,7 @@ static int sys_random_calltf(char*name)
|
|||
/* Send updated seed back to seed parameter. */
|
||||
if (seed) {
|
||||
val.format = vpiIntVal;
|
||||
val.value.integer = i_seed;
|
||||
val.value.integer = i_seed;
|
||||
vpi_put_value(seed, &val, 0, vpiNoDelay);
|
||||
}
|
||||
|
||||
|
|
@ -362,6 +362,9 @@ void sys_random_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_random.c,v $
|
||||
* Revision 1.14 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.13 2004/06/17 14:44:01 steve
|
||||
* Save seed in static variable, in case user doesnt pass it.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_random_mti.c,v 1.2 2004/10/04 00:14:08 steve Exp $"
|
||||
#ident "$Id: sys_random_mti.c,v 1.3 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "sys_priv.h"
|
||||
|
|
@ -138,7 +138,7 @@ static int sys_mti_random_calltf(char*name)
|
|||
vpi_get_value(seed, &val);
|
||||
i_seed = val.value.integer;
|
||||
|
||||
/* Since there is a seed use the current
|
||||
/* Since there is a seed use the current
|
||||
context or create a new one */
|
||||
context = (struct context_s *)vpi_get_userdata(call_handle);
|
||||
if (!context) {
|
||||
|
|
@ -167,7 +167,7 @@ static int sys_mti_random_calltf(char*name)
|
|||
/* mark seed with cookie */
|
||||
if (seed && i_seed != COOKIE) {
|
||||
val.format = vpiIntVal;
|
||||
val.value.integer = COOKIE;
|
||||
val.value.integer = COOKIE;
|
||||
vpi_put_value(seed, &val, 0, vpiNoDelay);
|
||||
}
|
||||
|
||||
|
|
@ -202,6 +202,9 @@ void sys_random_mti_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_random_mti.c,v $
|
||||
* Revision 1.3 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.2 2004/10/04 00:14:08 steve
|
||||
* MTI functions only user Mersene Twister
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_readmem.c,v 1.15 2004/01/21 01:22:53 steve Exp $"
|
||||
#ident "$Id: sys_readmem.c,v 1.16 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vpi_config.h"
|
||||
|
|
@ -120,12 +120,12 @@ static int sys_readmem_calltf(char*name)
|
|||
vpiHandle right_range;
|
||||
vpiHandle word_index;
|
||||
|
||||
/* These are left and right hand side parameters in the
|
||||
/* These are left and right hand side parameters in the
|
||||
declaration of the memory. */
|
||||
int left_addr, right_addr;
|
||||
|
||||
/* start_addr and stop_addr are the parameters given to $readmem in the
|
||||
verilog code. When not specified, start_addr is equal to the lower of
|
||||
verilog code. When not specified, start_addr is equal to the lower of
|
||||
the [left,right]_addr and stop_addr is equal to the higher of the
|
||||
[left,right]_addr. */
|
||||
int start_addr, stop_addr, addr_incr;
|
||||
|
|
@ -284,7 +284,7 @@ static int sys_readmem_calltf(char*name)
|
|||
item = vpi_scan(words);
|
||||
wwid = vpi_get(vpiSize, item);
|
||||
|
||||
/* variable that will be uses by the lexer to pass values
|
||||
/* variable that will be uses by the lexer to pass values
|
||||
back to this code */
|
||||
value.format = vpiVectorVal;
|
||||
value.value.vector = calloc((wwid+31)/32, sizeof(s_vpi_vecval));
|
||||
|
|
@ -308,7 +308,7 @@ static int sys_readmem_calltf(char*name)
|
|||
|
||||
case MEM_WORD:
|
||||
if (addr >= min_addr && addr <= max_addr){
|
||||
word_index = vpi_handle_by_index(mitem, addr);
|
||||
word_index = vpi_handle_by_index(mitem, addr);
|
||||
assert(word_index);
|
||||
vpi_put_value(word_index, &value, 0, vpiNoDelay);
|
||||
}
|
||||
|
|
@ -330,7 +330,7 @@ static int sys_readmem_calltf(char*name)
|
|||
bailout:
|
||||
free(value.value.vector);
|
||||
|
||||
if (item)
|
||||
if (item)
|
||||
vpi_free_object(words);
|
||||
free(path);
|
||||
fclose(file);
|
||||
|
|
@ -527,12 +527,12 @@ static int sys_writemem_calltf(char*name)
|
|||
if (cnt%16 == 0)
|
||||
fprintf(file, "// 0x%08x\n", cnt);
|
||||
|
||||
word_index = vpi_handle_by_index(mitem, addr);
|
||||
word_index = vpi_handle_by_index(mitem, addr);
|
||||
assert(word_index);
|
||||
vpi_get_value(word_index, &value);
|
||||
fprintf(file, "%s\n", value.value.str);
|
||||
}
|
||||
|
||||
|
||||
fclose(file);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -576,6 +576,9 @@ void sys_readmem_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_readmem.c,v $
|
||||
* Revision 1.16 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.15 2004/01/21 01:22:53 steve
|
||||
* Give the vip directory its own configure and vpi_config.h
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_vcd.c,v 1.55 2004/02/15 20:46:01 steve Exp $"
|
||||
#ident "$Id: sys_vcd.c,v 1.56 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "sys_priv.h"
|
||||
|
|
@ -73,7 +73,7 @@ static void gen_new_vcd_id(void)
|
|||
vcdid[i] = (char)((v%94)+33); /* for range 33..126 */
|
||||
v /= 94;
|
||||
if(!v) {
|
||||
vcdid[i+1] = '\0';
|
||||
vcdid[i+1] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -93,11 +93,11 @@ static char *truncate_bitvec(char *s)
|
|||
return s;
|
||||
else
|
||||
s += 1;
|
||||
|
||||
for(;;s++) {
|
||||
|
||||
for(;;s++) {
|
||||
l=r; r=*s;
|
||||
if(!r) return (s-1);
|
||||
|
||||
|
||||
if(l!=r)
|
||||
return(((l=='0')&&(r=='1'))?s:s-1);
|
||||
|
||||
|
|
@ -208,7 +208,7 @@ static int variable_cb_1(p_cb_data cause)
|
|||
cb.reason = cbReadOnlySynch;
|
||||
cb.cb_rtn = variable_cb_2;
|
||||
vpi_register_cb(&cb);
|
||||
}
|
||||
}
|
||||
|
||||
info->scheduled = 1;
|
||||
info->dmp_next = vcd_dmp_list;
|
||||
|
|
@ -365,8 +365,8 @@ static void open_dumpfile(void)
|
|||
dump_file = fopen(dump_path, "w");
|
||||
|
||||
if (dump_file == 0) {
|
||||
vpi_mcd_printf(1,
|
||||
"VCD Error: Unable to open %s for output.\n",
|
||||
vpi_mcd_printf(1,
|
||||
"VCD Error: Unable to open %s for output.\n",
|
||||
dump_path);
|
||||
return;
|
||||
} else {
|
||||
|
|
@ -375,10 +375,10 @@ static void open_dumpfile(void)
|
|||
unsigned udx = 0;
|
||||
time_t walltime;
|
||||
|
||||
vpi_mcd_printf(1,
|
||||
"VCD info: dumpfile %s opened for output.\n",
|
||||
vpi_mcd_printf(1,
|
||||
"VCD info: dumpfile %s opened for output.\n",
|
||||
dump_path);
|
||||
|
||||
|
||||
time(&walltime);
|
||||
|
||||
assert(prec >= -15);
|
||||
|
|
@ -416,9 +416,9 @@ static int sys_dumpfile_compiletf(char*name)
|
|||
|
||||
if (vpi_get(vpiType, item) != vpiConstant
|
||||
|| vpi_get(vpiConstType, item) != vpiStringConst) {
|
||||
vpi_mcd_printf(1,
|
||||
vpi_mcd_printf(1,
|
||||
"VCD Error:"
|
||||
" %s parameter must be a string constant\n",
|
||||
" %s parameter must be a string constant\n",
|
||||
name);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -501,9 +501,9 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
|
||||
if (skip)
|
||||
break;
|
||||
|
||||
|
||||
name = vpi_get_str(vpiName, item);
|
||||
|
||||
|
||||
nexus_id = vpi_get(_vpiNexusId, item);
|
||||
|
||||
if (nexus_id) {
|
||||
|
|
@ -511,14 +511,14 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
} else {
|
||||
ident = 0;
|
||||
}
|
||||
|
||||
|
||||
if (!ident) {
|
||||
ident = strdup(vcdid);
|
||||
gen_new_vcd_id();
|
||||
|
||||
|
||||
if (nexus_id)
|
||||
set_nexus_ident(nexus_id, ident);
|
||||
|
||||
|
||||
info = malloc(sizeof(*info));
|
||||
|
||||
info->time.type = vpiSimTime;
|
||||
|
|
@ -540,7 +540,7 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
|
||||
info->cb = vpi_register_cb(&cb);
|
||||
}
|
||||
|
||||
|
||||
fprintf(dump_file, "$var %s %u %s %s",
|
||||
type, vpi_get(vpiSize, item), ident,
|
||||
name);
|
||||
|
|
@ -604,16 +604,16 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
vpi_get_str(vpiFullName, item);
|
||||
|
||||
#if 0
|
||||
vpi_mcd_printf(1,
|
||||
vpi_mcd_printf(1,
|
||||
"VCD info:"
|
||||
" scanning scope %s, %u levels\n",
|
||||
fullname, depth);
|
||||
#endif
|
||||
nskip = 0 != vcd_names_search(&vcd_tab, fullname);
|
||||
|
||||
if (!nskip)
|
||||
|
||||
if (!nskip)
|
||||
vcd_names_add(&vcd_tab, fullname);
|
||||
else
|
||||
else
|
||||
vpi_mcd_printf(1,
|
||||
"VCD warning:"
|
||||
" ignoring signals"
|
||||
|
|
@ -631,11 +631,11 @@ static void scan_item(unsigned depth, vpiHandle item, int skip)
|
|||
scan_item(depth-1, hand, nskip);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fprintf(dump_file, "$upscope $end\n");
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
vpi_mcd_printf(1,
|
||||
"VCD Error: $dumpvars: Unsupported parameter "
|
||||
|
|
@ -652,7 +652,7 @@ static int draw_scope(vpiHandle item)
|
|||
vpiHandle scope = vpi_handle(vpiScope, item);
|
||||
if (!scope)
|
||||
return 0;
|
||||
|
||||
|
||||
depth = 1 + draw_scope(scope);
|
||||
name = vpi_get_str(vpiName, scope);
|
||||
|
||||
|
|
@ -663,7 +663,7 @@ static int draw_scope(vpiHandle item)
|
|||
case vpiNamedFork: type = "fork"; break;
|
||||
default: type = "module"; break;
|
||||
}
|
||||
|
||||
|
||||
fprintf(dump_file, "$scope %s %s $end\n", type, name);
|
||||
|
||||
return depth;
|
||||
|
|
@ -771,7 +771,7 @@ static int sys_dumpvars_calltf(char*name)
|
|||
|
||||
vcd_names_sort(&vcd_tab);
|
||||
scan_item(depth, item, 0);
|
||||
|
||||
|
||||
while (dep--) {
|
||||
fprintf(dump_file, "$upscope $end\n");
|
||||
}
|
||||
|
|
@ -835,6 +835,9 @@ void sys_vcd_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_vcd.c,v $
|
||||
* Revision 1.56 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.55 2004/02/15 20:46:01 steve
|
||||
* Add the $dumpflush function
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: sys_vcdoff.c,v 1.2 2004/01/21 01:22:53 steve Exp $"
|
||||
#ident "$Id: sys_vcdoff.c,v 1.3 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "sys_priv.h"
|
||||
|
|
@ -61,8 +61,8 @@ static void open_dumpfile(const char*path)
|
|||
dump_file = fopen(path, "w");
|
||||
|
||||
if (dump_file == 0) {
|
||||
vpi_mcd_printf(6,
|
||||
"VCD Error: Unable to open %s for output.\n",
|
||||
vpi_mcd_printf(6,
|
||||
"VCD Error: Unable to open %s for output.\n",
|
||||
path);
|
||||
return;
|
||||
} else {
|
||||
|
|
@ -83,9 +83,9 @@ static int sys_dumpfile_calltf(char*name)
|
|||
|
||||
if (vpi_get(vpiType, item) != vpiConstant
|
||||
|| vpi_get(vpiConstType, item) != vpiStringConst) {
|
||||
vpi_mcd_printf(6,
|
||||
vpi_mcd_printf(6,
|
||||
"VCD Error:"
|
||||
" %s parameter must be a string constant\n",
|
||||
" %s parameter must be a string constant\n",
|
||||
name);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -171,6 +171,9 @@ void sys_vcdoff_register()
|
|||
|
||||
/*
|
||||
* $Log: sys_vcdoff.c,v $
|
||||
* Revision 1.3 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.2 2004/01/21 01:22:53 steve
|
||||
* Give the vip directory its own configure and vpi_config.h
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: vcd_priv.c,v 1.5 2004/01/21 01:22:53 steve Exp $"
|
||||
#ident "$Id: vcd_priv.c,v 1.6 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vpi_config.h"
|
||||
|
|
@ -64,7 +64,7 @@ const char *vcd_names_search(struct vcd_names_list_s*tab, const char *key)
|
|||
if (tab->vcd_names_sorted == 0)
|
||||
return 0;
|
||||
|
||||
v = (const char **) bsearch(&key,
|
||||
v = (const char **) bsearch(&key,
|
||||
tab->vcd_names_sorted, tab->sorted_names,
|
||||
sizeof(const char *), vcd_names_compare );
|
||||
|
||||
|
|
@ -74,15 +74,15 @@ const char *vcd_names_search(struct vcd_names_list_s*tab, const char *key)
|
|||
void vcd_names_sort(struct vcd_names_list_s*tab)
|
||||
{
|
||||
if (tab->listed_names) {
|
||||
struct vcd_names_s *r;
|
||||
struct vcd_names_s *r;
|
||||
const char **l;
|
||||
|
||||
|
||||
tab->sorted_names += tab->listed_names;
|
||||
tab->vcd_names_sorted = (const char **)
|
||||
realloc(tab->vcd_names_sorted,
|
||||
tab->vcd_names_sorted = (const char **)
|
||||
realloc(tab->vcd_names_sorted,
|
||||
tab->sorted_names*(sizeof(const char *)));
|
||||
assert(tab->vcd_names_sorted);
|
||||
|
||||
|
||||
l = tab->vcd_names_sorted + tab->sorted_names - tab->listed_names;
|
||||
tab->listed_names = 0;
|
||||
|
||||
|
|
@ -95,29 +95,29 @@ void vcd_names_sort(struct vcd_names_list_s*tab)
|
|||
*(l++) = rr->name;
|
||||
free(rr);
|
||||
}
|
||||
|
||||
qsort(tab->vcd_names_sorted, tab->sorted_names,
|
||||
|
||||
qsort(tab->vcd_names_sorted, tab->sorted_names,
|
||||
sizeof(const char **), vcd_names_compare);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
Nexus Id cache
|
||||
|
||||
In structural models, many signals refer to the same nexus.
|
||||
Some structural models also have very many signals. This cache
|
||||
saves nexus_id - vcd_id pairs, and reuses the vcd_id when a signal
|
||||
saves nexus_id - vcd_id pairs, and reuses the vcd_id when a signal
|
||||
refers to a nexus that is already dumped.
|
||||
|
||||
The new signal will be listed as a $var, but no callback
|
||||
will be installed. This saves considerable CPU time and leads
|
||||
The new signal will be listed as a $var, but no callback
|
||||
will be installed. This saves considerable CPU time and leads
|
||||
to smalle VCD files.
|
||||
|
||||
The _vpiNexusId is a private (int) property of IVL simulators.
|
||||
*/
|
||||
|
||||
struct vcd_id_s
|
||||
struct vcd_id_s
|
||||
{
|
||||
const char *id;
|
||||
struct vcd_id_s *next;
|
||||
|
|
@ -137,7 +137,7 @@ static struct vcd_id_s **vcd_ids = 0;
|
|||
const char *find_nexus_ident(int nex)
|
||||
{
|
||||
struct vcd_id_s *bucket;
|
||||
|
||||
|
||||
if (!vcd_ids) {
|
||||
vcd_ids = (struct vcd_id_s **)
|
||||
calloc(256, sizeof(struct vcd_id_s*));
|
||||
|
|
@ -170,6 +170,9 @@ void set_nexus_ident(int nex, const char *id)
|
|||
|
||||
/*
|
||||
* $Log: vcd_priv.c,v $
|
||||
* Revision 1.6 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.5 2004/01/21 01:22:53 steve
|
||||
* Give the vip directory its own configure and vpi_config.h
|
||||
*
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: vpi_user.h,v 1.35 2004/09/05 21:30:16 steve Exp $"
|
||||
#ident "$Id: vpi_user.h,v 1.36 2004/10/04 01:10:56 steve Exp $"
|
||||
#endif
|
||||
|
||||
|
||||
|
|
@ -177,7 +177,7 @@ typedef struct t_vpi_value {
|
|||
#define vpiSysTfCall 85
|
||||
#define vpiArgument 89
|
||||
#define vpiInternalScope 92
|
||||
#define vpiVariables 100
|
||||
#define vpiVariables 100
|
||||
|
||||
#define vpiCallback 1000
|
||||
|
||||
|
|
@ -419,6 +419,9 @@ EXTERN_C_END
|
|||
|
||||
/*
|
||||
* $Log: vpi_user.h,v $
|
||||
* Revision 1.36 2004/10/04 01:10:56 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.35 2004/09/05 21:30:16 steve
|
||||
* Better type safety.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: vpi_mcd.c,v 1.6 2002/08/12 01:35:05 steve Exp $"
|
||||
#ident "$Id: vpi_mcd.c,v 1.7 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vpi_priv.h"
|
||||
|
|
@ -58,7 +58,7 @@ unsigned int vpi_mcd_close(unsigned int mcd)
|
|||
for(i = 3; i < 31; i++) {
|
||||
if( ((mcd>>i) & 1) && mcd_table[i].filename) {
|
||||
if(fclose(mcd_table[i].fp) != 0)
|
||||
rc |= 1<<i;
|
||||
rc |= 1<<i;
|
||||
free(mcd_table[i].filename);
|
||||
mcd_table[i].fp = NULL;
|
||||
mcd_table[i].filename = NULL;
|
||||
|
|
@ -148,6 +148,9 @@ int vpi_mcd_fgetc(unsigned int mcd)
|
|||
|
||||
/*
|
||||
* $Log: vpi_mcd.c,v $
|
||||
* Revision 1.7 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.6 2002/08/12 01:35:05 steve
|
||||
* conditional ident string using autoconfig.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: vpi_null.c,v 1.2 2002/08/12 01:35:05 steve Exp $"
|
||||
#ident "$Id: vpi_null.c,v 1.3 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "vpi_priv.h"
|
||||
|
|
@ -36,13 +36,16 @@ static struct __vpiNull vpip_null = {
|
|||
{ &vpip_null_rt }
|
||||
};
|
||||
|
||||
extern struct __vpiNull *vpip_get_null(void)
|
||||
extern struct __vpiNull *vpip_get_null(void)
|
||||
{
|
||||
return &vpip_null;
|
||||
}
|
||||
|
||||
/*
|
||||
* $Log: vpi_null.c,v $
|
||||
* Revision 1.3 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.2 2002/08/12 01:35:05 steve
|
||||
* conditional ident string using autoconfig.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: vpi_priv.h,v 1.3 2002/08/12 01:35:06 steve Exp $"
|
||||
#ident "$Id: vpi_priv.h,v 1.4 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -224,7 +224,7 @@ extern struct __vpiNull *vpip_get_null(void);
|
|||
* This type represents the handle to a Verilog scope. These include
|
||||
* module instantiations and name begin-end blocks. The attach
|
||||
* function is used to attach handles to the scope by the runtime
|
||||
* initializaiton.
|
||||
* initializaiton.
|
||||
*/
|
||||
struct __vpiScope {
|
||||
struct __vpiHandle base;
|
||||
|
|
@ -412,6 +412,9 @@ extern int vpip_finished();
|
|||
|
||||
/*
|
||||
* $Log: vpi_priv.h,v $
|
||||
* Revision 1.4 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.3 2002/08/12 01:35:06 steve
|
||||
* conditional ident string using autoconfig.
|
||||
*
|
||||
|
|
|
|||
110
vpip/vpip.def
110
vpip/vpip.def
|
|
@ -1,55 +1,55 @@
|
|||
|
||||
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_fgetc
|
||||
vpi_mcd_fputc
|
||||
vpi_mcd_init
|
||||
vpi_mcd_name
|
||||
vpi_mcd_open
|
||||
vpi_mcd_open_x
|
||||
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_get_null
|
||||
vpip_pair_resolve
|
||||
vpip_run_value_changes
|
||||
vpip_set_vlog_info
|
||||
vpip_sim_cancel_event
|
||||
vpip_sim_insert_event
|
||||
vpip_sim_time
|
||||
vpip_get_simulation_obj
|
||||
vpip_simulation_run
|
||||
vpip_get_sysfunc_rt
|
||||
vpip_get_systask_rt
|
||||
vpip_time_scale
|
||||
|
||||
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_fgetc
|
||||
vpi_mcd_fputc
|
||||
vpi_mcd_init
|
||||
vpi_mcd_name
|
||||
vpi_mcd_open
|
||||
vpi_mcd_open_x
|
||||
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_get_null
|
||||
vpip_pair_resolve
|
||||
vpip_run_value_changes
|
||||
vpip_set_vlog_info
|
||||
vpip_sim_cancel_event
|
||||
vpip_sim_insert_event
|
||||
vpip_sim_time
|
||||
vpip_get_simulation_obj
|
||||
vpip_simulation_run
|
||||
vpip_get_sysfunc_rt
|
||||
vpip_get_systask_rt
|
||||
vpip_time_scale
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Copyright (c) 2001 Stephen Williams (steve@icarus.com)
|
||||
*
|
||||
* $Id: README.txt,v 1.46 2004/06/16 16:33:25 steve Exp $
|
||||
* $Id: README.txt,v 1.47 2004/10/04 01:10:58 steve Exp $
|
||||
*/
|
||||
|
||||
VVP SIMULATION ENGINE
|
||||
|
|
@ -167,7 +167,7 @@ are strings which describe input states or edges, and the new output
|
|||
state. Combinatorial UDPs require one character for each input, and
|
||||
one character at the end for the output state. Sequential UDPs need
|
||||
an additional char for the current state, which is the first char of
|
||||
the row.
|
||||
the row.
|
||||
|
||||
Any input transition or the new state must match at most one row (or
|
||||
all matches must provide the same output state). If no row matches,
|
||||
|
|
@ -176,7 +176,7 @@ the output becomes 1'bx.
|
|||
The output state can be specified as "0", "1", or "x". Sequential
|
||||
UDPs may also have "-": no change.
|
||||
|
||||
An input or current output state can be
|
||||
An input or current output state can be
|
||||
|
||||
"1": 1
|
||||
"0": 0
|
||||
|
|
@ -192,20 +192,20 @@ replaced by an edge specification. Valid edges are:
|
|||
"*": (??) "_": (?0) "+": (?1) "%": (?x)
|
||||
"P": (0?) "r": (01) "Q": (0x)
|
||||
"N": (1?) "f": (10) "M": (1x)
|
||||
"B": (x?) "F": (x0) "R": (x1)
|
||||
"B": (x?) "F": (x0) "R": (x1)
|
||||
|
||||
"n": (1?) | (?0)
|
||||
"p": (0?) | (?1)
|
||||
|
||||
A combinatorial UDP is defined like this:
|
||||
|
||||
<type> .udp/comb "<name>", <number>, "<row0>", "<row1>", ... ;
|
||||
|
||||
<type> .udp/comb "<name>", <number>, "<row0>", "<row1>", ... ;
|
||||
|
||||
<type> is a label that identifies the UDP. <number> is the number of
|
||||
inputs. "<name>" is there for public identification. Sequential UDPs
|
||||
need an additional initialization value:
|
||||
|
||||
<type> .udp/sequ "<name>", <number>, <init>, "<row0>", "<row1>", ... ;
|
||||
<type> .udp/sequ "<name>", <number>, <init>, "<row0>", "<row1>", ... ;
|
||||
|
||||
<init> is the initial value for all instances of the UDP. We do not
|
||||
provide initial values for individual instances. <init> must be a
|
||||
|
|
@ -218,7 +218,7 @@ A UDP functor instance is created so:
|
|||
Where <label> identifies the functor, <type> is the label of a UDP
|
||||
defined earlier, and <symbol_list> is a list of symbols, one for each
|
||||
input of the UDP.
|
||||
|
||||
|
||||
|
||||
VARIABLE STATEMENTS:
|
||||
|
||||
|
|
@ -302,7 +302,7 @@ memory's contents.
|
|||
|
||||
The pair of numbers <msb>,<lsb> defines the data port width. The pair
|
||||
<last>,<first> defines the address range. Multiple address ranges are
|
||||
allowed for multidimensional indexing.
|
||||
allowed for multidimensional indexing.
|
||||
|
||||
Procedural access to the memory references the memory as single array
|
||||
of bits. For this purpose, the number of bits in a memory word is
|
||||
|
|
@ -337,7 +337,7 @@ A write port is a superset of a read port. It is a vector of functors
|
|||
that is wide enough to accept the address bits, an event input, a
|
||||
write enable input, and the data inputs.
|
||||
|
||||
<label> .mem/port <memid>, <msb>,<lsb>, <aw>, <addr_bits>,
|
||||
<label> .mem/port <memid>, <msb>,<lsb>, <aw>, <addr_bits>,
|
||||
<event>, <we>, <data> ;
|
||||
|
||||
<event> is an event functor that triggers a write, if the <we> input
|
||||
|
|
|
|||
25
vvp/arith.cc
25
vvp/arith.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: arith.cc,v 1.29 2004/09/22 16:44:07 steve Exp $"
|
||||
#ident "$Id: arith.cc,v 1.30 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "arith.h"
|
||||
|
|
@ -35,7 +35,7 @@ void vvp_arith_::output_x_(vvp_ipoint_t base, bool push, unsigned val)
|
|||
for (unsigned idx = 0 ; idx < wid_ ; idx += 1) {
|
||||
vvp_ipoint_t ptr = ipoint_index(base,idx);
|
||||
functor_t obj = functor_index(ptr);
|
||||
|
||||
|
||||
obj->put_oval(val, push);
|
||||
}
|
||||
}
|
||||
|
|
@ -45,10 +45,10 @@ void vvp_arith_::output_val_(vvp_ipoint_t base, bool push, unsigned long sum)
|
|||
for (unsigned idx = 0 ; idx < wid_ ; idx += 1) {
|
||||
vvp_ipoint_t ptr = ipoint_index(base,idx);
|
||||
functor_t obj = functor_index(ptr);
|
||||
|
||||
|
||||
unsigned val = sum & 1;
|
||||
sum >>= 1;
|
||||
|
||||
|
||||
obj->put_oval(val, push);
|
||||
}
|
||||
}
|
||||
|
|
@ -107,13 +107,13 @@ void vvp_arith_div::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
|||
for (unsigned idx = 0 ; idx < wid_ ; idx += 1) {
|
||||
vvp_ipoint_t ptr = ipoint_index(base,idx);
|
||||
functor_t obj = functor_index(ptr);
|
||||
|
||||
|
||||
unsigned val = obj->ival;
|
||||
if (val & 0xaa) {
|
||||
output_x_(base, push);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (val & 0x01)
|
||||
a += 1UL << idx;
|
||||
if (val & 0x04)
|
||||
|
|
@ -164,17 +164,17 @@ void vvp_arith_mod::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
|||
}
|
||||
|
||||
unsigned long a = 0, b = 0;
|
||||
|
||||
|
||||
for (unsigned idx = 0 ; idx < wid_ ; idx += 1) {
|
||||
vvp_ipoint_t ptr = ipoint_index(base,idx);
|
||||
functor_t obj = functor_index(ptr);
|
||||
|
||||
|
||||
unsigned val = obj->ival;
|
||||
if (val & 0xaa) {
|
||||
output_x_(base, push);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (val & 0x01)
|
||||
a += 1UL << idx;
|
||||
if (val & 0x04)
|
||||
|
|
@ -245,9 +245,9 @@ void vvp_arith_mult::wide(vvp_ipoint_t base, bool push)
|
|||
return;
|
||||
}
|
||||
|
||||
if((a[idx] = ((ival & 0x01) != 0))) mxa=idx+1;
|
||||
if((a[idx] = ((ival & 0x01) != 0))) mxa=idx+1;
|
||||
if((b[idx] = ((ival & 0x04) != 0))) mxb=idx;
|
||||
sum[idx] = 0;
|
||||
sum[idx] = 0;
|
||||
}
|
||||
|
||||
/* do the a*b multiply using the long method we learned in
|
||||
|
|
@ -687,6 +687,9 @@ void vvp_shiftr::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
|||
|
||||
/*
|
||||
* $Log: arith.cc,v $
|
||||
* Revision 1.30 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.29 2004/09/22 16:44:07 steve
|
||||
* Fix LPM GE to match LPM GT behavior.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: arith.h,v 1.18 2004/09/22 16:44:07 steve Exp $"
|
||||
#ident "$Id: arith.h,v 1.19 2004/10/04 01:10:58 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "functor.h"
|
||||
|
|
@ -43,7 +43,7 @@ class vvp_arith_ : public functor_s {
|
|||
|
||||
class vvp_wide_arith_ : public vvp_arith_ {
|
||||
public:
|
||||
explicit vvp_wide_arith_(unsigned wid);
|
||||
explicit vvp_wide_arith_(unsigned wid);
|
||||
|
||||
protected:
|
||||
static const unsigned pagesize = 8*sizeof(unsigned long);
|
||||
|
|
@ -169,6 +169,9 @@ class vvp_shiftr : public vvp_arith_ {
|
|||
|
||||
/*
|
||||
* $Log: arith.h,v $
|
||||
* Revision 1.19 2004/10/04 01:10:58 steve
|
||||
* Clean up spurious trailing white space.
|
||||
*
|
||||
* Revision 1.18 2004/09/22 16:44:07 steve
|
||||
* Fix LPM GE to match LPM GT behavior.
|
||||
*
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue