1) Adds configure logic to clean up compiler warnings
2) adds acc_compare_handle, acc_fetch_range, acc_next_scope and
tf_isetrealdelay, acc_handle_scope
3) makes acc_next reentrant
4) adds basic vpiWire type support
5) fills in some acc_object_of_type() and acc_fetch_{full}type()
6) add vpiLeftRange/RigthRange to signals
This commit is contained in:
parent
d3daa997b5
commit
1c65ea08e8
25
acc_user.h
25
acc_user.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: acc_user.h,v 1.16 2003/05/30 04:18:31 steve Exp $"
|
#ident "$Id: acc_user.h,v 1.17 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -57,14 +57,21 @@ typedef struct __vpiHandle *handle;
|
||||||
#define accScope 21
|
#define accScope 21
|
||||||
#define accNet 25
|
#define accNet 25
|
||||||
#define accReg 30
|
#define accReg 30
|
||||||
|
#define accIntegerParam 200
|
||||||
|
#define accRealParam 202
|
||||||
#define accStringParam 204
|
#define accStringParam 204
|
||||||
#define accParameter 220
|
#define accParameter 220
|
||||||
#define accTopModule 224
|
#define accTopModule 224
|
||||||
#define accModuleInstance 226
|
#define accModuleInstance 226
|
||||||
|
#define accWire 260
|
||||||
|
#define accNamedEvent 280
|
||||||
#define accIntegerVar 281
|
#define accIntegerVar 281
|
||||||
#define accIntVar 281
|
#define accRealVar 282
|
||||||
|
#define accTimeVar 283
|
||||||
|
#define accIntVar accIntegerVar
|
||||||
#define accScalar 300
|
#define accScalar 300
|
||||||
#define accVector 302
|
#define accVector 302
|
||||||
|
#define accUnknown 412
|
||||||
#define accConstant 600
|
#define accConstant 600
|
||||||
|
|
||||||
/* type VALUES FOR t_setval_delay STRUCTURE */
|
/* type VALUES FOR t_setval_delay STRUCTURE */
|
||||||
|
|
@ -215,6 +222,7 @@ extern PLI_INT32 acc_fetch_size(handle obj);
|
||||||
|
|
||||||
extern PLI_INT32 acc_fetch_type(handle obj);
|
extern PLI_INT32 acc_fetch_type(handle obj);
|
||||||
extern PLI_INT32 acc_fetch_fulltype(handle obj);
|
extern PLI_INT32 acc_fetch_fulltype(handle obj);
|
||||||
|
extern PLI_INT32 acc_fetch_range(handle object, int *msb, int *lsb);
|
||||||
extern char* acc_fetch_type_str(PLI_INT32 type);
|
extern char* acc_fetch_type_str(PLI_INT32 type);
|
||||||
|
|
||||||
extern char* acc_fetch_value(handle obj, const char*fmt, s_acc_value*value);
|
extern char* acc_fetch_value(handle obj, const char*fmt, s_acc_value*value);
|
||||||
|
|
@ -222,11 +230,15 @@ extern char* acc_fetch_value(handle obj, const char*fmt, s_acc_value*value);
|
||||||
extern handle acc_handle_by_name(const char*name, handle scope);
|
extern handle acc_handle_by_name(const char*name, handle scope);
|
||||||
extern handle acc_handle_object(const char*name);
|
extern handle acc_handle_object(const char*name);
|
||||||
extern handle acc_handle_parent(handle obj);
|
extern handle acc_handle_parent(handle obj);
|
||||||
|
extern handle acc_handle_scope(handle obj);
|
||||||
|
|
||||||
extern handle acc_handle_tfarg(int n);
|
extern handle acc_handle_tfarg(int n);
|
||||||
extern handle acc_handle_tfinst(void);
|
extern handle acc_handle_tfinst(void);
|
||||||
|
|
||||||
|
extern PLI_INT32 acc_compare_handles(handle, handle);
|
||||||
|
|
||||||
extern handle acc_next(PLI_INT32 *, handle, handle);
|
extern handle acc_next(PLI_INT32 *, handle, handle);
|
||||||
|
extern handle acc_next_scope(handle, handle);
|
||||||
extern handle acc_next_topmod(handle prev_topmod);
|
extern handle acc_next_topmod(handle prev_topmod);
|
||||||
|
|
||||||
extern int acc_object_in_typelist(handle object, PLI_INT32*typelist);
|
extern int acc_object_in_typelist(handle object, PLI_INT32*typelist);
|
||||||
|
|
@ -248,6 +260,15 @@ EXTERN_C_END
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: acc_user.h,v $
|
* $Log: acc_user.h,v $
|
||||||
|
* Revision 1.17 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.16 2003/05/30 04:18:31 steve
|
* Revision 1.16 2003/05/30 04:18:31 steve
|
||||||
* Add acc_next function.
|
* Add acc_next function.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
# 59 Temple Place - Suite 330
|
# 59 Temple Place - Suite 330
|
||||||
# Boston, MA 02111-1307, USA
|
# Boston, MA 02111-1307, USA
|
||||||
#
|
#
|
||||||
#ident "$Id: Makefile.in,v 1.25 2003/05/30 04:18:31 steve Exp $"
|
#ident "$Id: Makefile.in,v 1.26 2003/06/04 01:56:20 steve Exp $"
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
|
|
@ -45,13 +45,14 @@ LDFLAGS = @LDFLAGS@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
|
|
||||||
A = a_close.o a_configure.o a_fetch_argc.o a_fetch_argv.o a_fetch_fullname.o \
|
A = a_close.o a_compare_handles.o a_configure.o a_fetch_argc.o \
|
||||||
a_fetch_location.o a_fetch_param.o a_fetch_tfarg.o a_fetch_time.o \
|
a_fetch_argv.o a_fetch_fullname.o a_fetch_location.o \
|
||||||
a_fetch_type.o a_fetch_type_str.o a_fetch_value.o \
|
a_fetch_param.o a_fetch_range.o a_fetch_tfarg.o a_fetch_time.o \
|
||||||
a_handle_by_name.o a_handle_object.o a_handle_parent.o a_handle_tfarg.o \
|
a_fetch_type.o a_fetch_type_str.o a_fetch_value.o a_handle_by_name.o \
|
||||||
a_initialize.o a_next.o a_next_topmod.o a_object_of_type.o \
|
a_handle_object.o a_handle_parent.o a_handle_tfarg.o a_initialize.o \
|
||||||
a_product_version.o \
|
a_next.o a_next_topmod.o a_object_of_type.o a_product_version.o \
|
||||||
a_set_value.o a_vcl.o a_version.o
|
a_set_value.o a_vcl.o a_version.o
|
||||||
|
|
||||||
O = asynch.o delay.o finish.o getcstringp.o getinstance.o getlongp.o \
|
O = asynch.o delay.o finish.o getcstringp.o getinstance.o getlongp.o \
|
||||||
getp.o getsimtime.o io_print.o math.o mc_scan_plusargs.o nump.o putlongp.o \
|
getp.o getsimtime.o io_print.o math.o mc_scan_plusargs.o nump.o putlongp.o \
|
||||||
putp.o spname.o typep.o workarea.o veriusertfs.o priv.o $A
|
putp.o spname.o typep.o workarea.o veriusertfs.o priv.o $A
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
/* vi:sw=6
|
||||||
|
* Copyright (c) 2003 Michael Ruff (mruff at chiaro.com)
|
||||||
|
*
|
||||||
|
* This source code is free software; you can redistribute it
|
||||||
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
* General Public License as published by the Free Software
|
||||||
|
* Foundation; either version 2 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
*/
|
||||||
|
#if !defined(WINNT)
|
||||||
|
#ident "$Id: a_compare_handles.c,v 1.1 2003/06/04 01:56:20 steve Exp $"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# include <vpi_user.h>
|
||||||
|
# include <acc_user.h>
|
||||||
|
|
||||||
|
int acc_compare_handles(handle handle1, handle handle2)
|
||||||
|
{
|
||||||
|
return handle1 == handle2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: a_compare_handles.c,v $
|
||||||
|
* Revision 1.1 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
/* vi:sw=6
|
||||||
|
* Copyright (c) 2003 Michael Ruff (mruff at chiaro.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
|
||||||
|
*/
|
||||||
|
#ifdef HAVE_CVS_IDENT
|
||||||
|
#ident "$Id: a_fetch_range.c,v 1.1 2003/06/04 01:56:20 steve Exp $"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <vpi_user.h>
|
||||||
|
#include <acc_user.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* acc_fetch_range implemented using VPI interface
|
||||||
|
*/
|
||||||
|
PLI_INT32 acc_fetch_range(handle object, PLI_INT32 *msb, PLI_INT32 *lsb)
|
||||||
|
{
|
||||||
|
*msb = vpi_get(vpiLeftRange, object);
|
||||||
|
*lsb = vpi_get(vpiRightRange, object);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: a_fetch_range.c,v $
|
||||||
|
* Revision 1.1 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: a_fetch_type.c,v 1.6 2003/05/30 04:18:31 steve Exp $"
|
#ident "$Id: a_fetch_type.c,v 1.7 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include <acc_user.h>
|
# include <acc_user.h>
|
||||||
|
|
@ -42,6 +42,9 @@ PLI_INT32 acc_fetch_type(handle obj)
|
||||||
else
|
else
|
||||||
return accConstant;
|
return accConstant;
|
||||||
|
|
||||||
|
case vpiNamedEvent:
|
||||||
|
return accNamedEvent;
|
||||||
|
|
||||||
case vpiNet:
|
case vpiNet:
|
||||||
return accNet;
|
return accNet;
|
||||||
|
|
||||||
|
|
@ -60,7 +63,7 @@ PLI_INT32 acc_fetch_type(handle obj)
|
||||||
default:
|
default:
|
||||||
vpi_printf("acc_fetch_type: vpiType %d is what accType?\n",
|
vpi_printf("acc_fetch_type: vpiType %d is what accType?\n",
|
||||||
vpi_get(vpiType, obj));
|
vpi_get(vpiType, obj));
|
||||||
return 0;
|
return accUnknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -68,7 +71,20 @@ PLI_INT32 acc_fetch_type(handle obj)
|
||||||
|
|
||||||
PLI_INT32 acc_fetch_fulltype(handle obj)
|
PLI_INT32 acc_fetch_fulltype(handle obj)
|
||||||
{
|
{
|
||||||
switch (vpi_get(vpiType, obj)) {
|
int type = vpi_get(vpiType, obj);
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case vpiNet: {
|
||||||
|
type = vpi_get(vpiNetType, obj);
|
||||||
|
switch(type) {
|
||||||
|
case vpiWire: return accWire;
|
||||||
|
default:
|
||||||
|
vpi_printf("acc_fetch_fulltype: vpiNetType %d unknown?\n",
|
||||||
|
type);
|
||||||
|
return accUnknown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case vpiConstant:
|
case vpiConstant:
|
||||||
/* see acc_fetch_type */
|
/* see acc_fetch_type */
|
||||||
if (vpi_get(vpiConstType, obj) == vpiStringConst)
|
if (vpi_get(vpiConstType, obj) == vpiStringConst)
|
||||||
|
|
@ -76,8 +92,7 @@ PLI_INT32 acc_fetch_fulltype(handle obj)
|
||||||
else
|
else
|
||||||
return accConstant;
|
return accConstant;
|
||||||
|
|
||||||
case vpiIntegerVar:
|
case vpiIntegerVar: return accIntegerVar;
|
||||||
return accIntegerVar;
|
|
||||||
|
|
||||||
case vpiModule:
|
case vpiModule:
|
||||||
if (!vpi_handle(vpiScope, obj))
|
if (!vpi_handle(vpiScope, obj))
|
||||||
|
|
@ -86,18 +101,35 @@ PLI_INT32 acc_fetch_fulltype(handle obj)
|
||||||
return accModuleInstance;
|
return accModuleInstance;
|
||||||
// FIXME accCellInstance
|
// FIXME accCellInstance
|
||||||
|
|
||||||
case vpiReg:
|
case vpiNamedEvent: return accNamedEvent;
|
||||||
return accReg;
|
|
||||||
|
case vpiParameter:
|
||||||
|
switch(vpi_get(vpiConstType, obj)) {
|
||||||
|
case vpiRealConst: return accRealParam;
|
||||||
|
case vpiStringConst: return accStringParam;
|
||||||
|
default: return accIntegerParam;
|
||||||
|
}
|
||||||
|
|
||||||
|
case vpiReg: return accReg;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
vpi_printf("acc_fetch_fulltype: vpiType %d is what accType?\n",
|
vpi_printf("acc_fetch_fulltype: vpiType %d unknown?\n",
|
||||||
vpi_get(vpiType, obj));
|
type);
|
||||||
return 0;
|
return accUnknown;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: a_fetch_type.c,v $
|
* $Log: a_fetch_type.c,v $
|
||||||
|
* 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.6 2003/05/30 04:18:31 steve
|
* Revision 1.6 2003/05/30 04:18:31 steve
|
||||||
* Add acc_next function.
|
* Add acc_next function.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: a_handle_parent.c,v 1.1 2003/03/13 04:35:09 steve Exp $"
|
#ident "$Id: a_handle_parent.c,v 1.2 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <vpi_user.h>
|
#include <vpi_user.h>
|
||||||
|
|
@ -34,8 +34,23 @@ handle acc_handle_parent(handle obj)
|
||||||
return scope;
|
return scope;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
handle acc_handle_scope(handle obj)
|
||||||
|
{
|
||||||
|
return vpi_handle(vpiScope, obj);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: a_handle_parent.c,v $
|
* $Log: a_handle_parent.c,v $
|
||||||
|
* Revision 1.2 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.1 2003/03/13 04:35:09 steve
|
* Revision 1.1 2003/03/13 04:35:09 steve
|
||||||
* Add a bunch of new acc_ and tf_ functions.
|
* Add a bunch of new acc_ and tf_ functions.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: a_next.c,v 1.1 2003/05/30 04:18:31 steve Exp $"
|
#ident "$Id: a_next.c,v 1.2 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
@ -30,12 +30,7 @@
|
||||||
*/
|
*/
|
||||||
handle acc_next(PLI_INT32 *type, handle scope, handle prev)
|
handle acc_next(PLI_INT32 *type, handle scope, handle prev)
|
||||||
{
|
{
|
||||||
vpiHandle hand;
|
vpiHandle iter, hand = 0;
|
||||||
|
|
||||||
/* preserved state */
|
|
||||||
static vpiHandle pscope = 0;
|
|
||||||
static vpiHandle iter = 0;
|
|
||||||
static vpiHandle rtn = 0;
|
|
||||||
|
|
||||||
/* trace */
|
/* trace */
|
||||||
if (pli_trace) {
|
if (pli_trace) {
|
||||||
|
|
@ -55,49 +50,59 @@ handle acc_next(PLI_INT32 *type, handle scope, handle prev)
|
||||||
fflush(pli_trace);
|
fflush(pli_trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* initialize or reset if detect user dain bramaged */
|
/*
|
||||||
if (!prev || !*type || scope != pscope || prev != rtn) {
|
* The acc_next_* functions need to be reentrant, so we need to
|
||||||
/* if iterator still valid, free it */
|
* rescan all the items upto the previous one, then return
|
||||||
if (iter) vpi_free_object(iter);
|
* the next one.
|
||||||
|
*/
|
||||||
/* iterate across all things in specified scope */
|
iter = vpi_iterate(vpiScope, scope); // ICARUS extension
|
||||||
if (!*type) {
|
if (prev) {
|
||||||
pscope = iter = rtn = 0;
|
|
||||||
goto err;
|
|
||||||
} else {
|
|
||||||
pscope = scope;
|
|
||||||
iter = vpi_iterate(vpiScope, pscope);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* scan iterator */
|
|
||||||
rtn = 0;
|
|
||||||
while ((hand = vpi_scan(iter))) {
|
while ((hand = vpi_scan(iter))) {
|
||||||
if (acc_object_in_typelist(hand, type)) {
|
if (hand == prev) break;
|
||||||
rtn = hand;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* scan for next */
|
||||||
|
if (hand) {
|
||||||
|
while ((hand = vpi_scan(iter))) {
|
||||||
|
if (acc_object_in_typelist(hand, type))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we exhausted iterator, cleanup */
|
/* don't leak iterators */
|
||||||
if (!hand) { pscope = iter = 0; }
|
if (hand) vpi_free_object(iter);
|
||||||
|
|
||||||
err:
|
|
||||||
/* trace */
|
/* trace */
|
||||||
if (pli_trace) {
|
if (pli_trace) {
|
||||||
fprintf(pli_trace, " --> %p", rtn);
|
fprintf(pli_trace, " --> %p", hand);
|
||||||
if (rtn)
|
if (hand)
|
||||||
fprintf(pli_trace, " \"%s\"\n", vpi_get_str(vpiName, rtn));
|
fprintf(pli_trace, " \"%s\"\n", vpi_get_str(vpiName, hand));
|
||||||
else
|
else
|
||||||
fprintf(pli_trace, "\n");
|
fprintf(pli_trace, "\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return rtn;
|
return hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
handle acc_next_scope(handle scope, handle prev)
|
||||||
|
{
|
||||||
|
PLI_INT32 type[2] = {accScope, 0};
|
||||||
|
return acc_next(type, scope, prev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: a_next.c,v $
|
* $Log: a_next.c,v $
|
||||||
|
* Revision 1.2 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.1 2003/05/30 04:18:31 steve
|
* Revision 1.1 2003/05/30 04:18:31 steve
|
||||||
* Add acc_next function.
|
* Add acc_next function.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: a_object_of_type.c,v 1.4 2003/05/30 04:18:31 steve Exp $"
|
#ident "$Id: a_object_of_type.c,v 1.5 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
@ -43,10 +43,7 @@ PLI_INT32 acc_object_of_type(handle object, PLI_INT32 type)
|
||||||
vtype = vpi_get(vpiType, object);
|
vtype = vpi_get(vpiType, object);
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case accModule:
|
case accModule: rtn = vtype == vpiModule; break;
|
||||||
if (vtype == vpiModule)
|
|
||||||
rtn = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case accScope:
|
case accScope:
|
||||||
if (vtype == vpiModule || vtype == vpiNamedBegin ||
|
if (vtype == vpiModule || vtype == vpiNamedBegin ||
|
||||||
|
|
@ -54,15 +51,20 @@ PLI_INT32 acc_object_of_type(handle object, PLI_INT32 type)
|
||||||
vtype == vpiFunction) rtn = 1;
|
vtype == vpiFunction) rtn = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case accNet:
|
case accNet: rtn = vtype == vpiNet; break;
|
||||||
if (vtype == vpiNet)
|
case accReg: rtn = vtype == vpiReg; break;
|
||||||
|
|
||||||
|
case accRealParam:
|
||||||
|
if (vtype == vpiNamedEvent &&
|
||||||
|
vpi_get(vpiConstType, object) == vpiRealConst)
|
||||||
rtn = 1;
|
rtn = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case accReg:
|
case accParameter: rtn = vtype == vpiParameter; break;
|
||||||
if (vtype == vpiReg)
|
case accNamedEvent: rtn = vtype == vpiNamedEvent; break;
|
||||||
rtn = 1;
|
case accIntegerVar: rtn = vtype == vpiIntegerVar; break;
|
||||||
break;
|
case accRealVar: rtn = vtype == vpiRealVar; break;
|
||||||
|
case accTimeVar: rtn = vtype == vpiTimeVar; break;
|
||||||
|
|
||||||
case accScalar:
|
case accScalar:
|
||||||
if (vtype == vpiReg || vtype == vpiNet)
|
if (vtype == vpiReg || vtype == vpiNet)
|
||||||
|
|
@ -74,11 +76,6 @@ PLI_INT32 acc_object_of_type(handle object, PLI_INT32 type)
|
||||||
rtn = vpi_get(vpiSize, object) > 1;
|
rtn = vpi_get(vpiSize, object) > 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case accParameter:
|
|
||||||
if (vtype == vpiParameter)
|
|
||||||
rtn = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
vpi_printf("acc_object_of_type: Unknown type %d\n", type);
|
vpi_printf("acc_object_of_type: Unknown type %d\n", type);
|
||||||
rtn = 0;
|
rtn = 0;
|
||||||
|
|
@ -104,6 +101,15 @@ PLI_INT32 acc_object_in_typelist(handle object, PLI_INT32*typelist)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: a_object_of_type.c,v $
|
* $Log: a_object_of_type.c,v $
|
||||||
|
* Revision 1.5 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.4 2003/05/30 04:18:31 steve
|
* Revision 1.4 2003/05/30 04:18:31 steve
|
||||||
* Add acc_next function.
|
* Add acc_next function.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
#ifndef __config_H
|
||||||
|
#define __config_H
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2003 Stephen Williams (steve@icarus.com)
|
||||||
|
*
|
||||||
|
* This source code is free software; you can redistribute it
|
||||||
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
* General Public License as published by the Free Software
|
||||||
|
* Foundation; either version 2 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
*/
|
||||||
|
#if !defined(WINNT)
|
||||||
|
#ident "$Id: config.h.in,v 1.1 2003/06/04 01:56:20 steve Exp $"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define SIZEOF_UNSIGNED_LONG_LONG 0
|
||||||
|
# define SIZEOF_UNSIGNED_LONG 0
|
||||||
|
# define SIZEOF_UNSIGNED 0
|
||||||
|
|
||||||
|
#if SIZEOF_UNSIGNED >= 8
|
||||||
|
typedef unsigned ivl_u64_t;
|
||||||
|
#else
|
||||||
|
# if SIZEOF_UNSIGNED_LONG >= 8
|
||||||
|
typedef unsigned long ivl_u64_t;
|
||||||
|
# else
|
||||||
|
# if SIZEOF_UNSIGNED_LONG_LONG > SIZEOF_UNSIGNED_LONG
|
||||||
|
typedef unsigned long long ivl_u64_t;
|
||||||
|
# else
|
||||||
|
typedef unsigned long ivl_u64_t;
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: config.h.in,v $
|
||||||
|
* Revision 1.1 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
AC_INIT(Makefile.in)
|
AC_INIT(Makefile.in)
|
||||||
|
AC_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
|
|
@ -9,6 +10,10 @@ AC_EXEEXT
|
||||||
|
|
||||||
AC_CHECK_HEADERS(malloc.h)
|
AC_CHECK_HEADERS(malloc.h)
|
||||||
|
|
||||||
|
AC_CHECK_SIZEOF(unsigned long long)
|
||||||
|
AC_CHECK_SIZEOF(unsigned long)
|
||||||
|
AC_CHECK_SIZEOF(unsigned)
|
||||||
|
|
||||||
# Darwin requires -no-cpp-precomp
|
# Darwin requires -no-cpp-precomp
|
||||||
case "${host}" in
|
case "${host}" in
|
||||||
*-*-darwin*)
|
*-*-darwin*)
|
||||||
|
|
|
||||||
|
|
@ -17,22 +17,23 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: getsimtime.c,v 1.8 2003/05/30 04:01:55 steve Exp $"
|
#ident "$Id: getsimtime.c,v 1.9 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <veriuser.h>
|
#include <veriuser.h>
|
||||||
#include <vpi_user.h>
|
#include <vpi_user.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* some TF time routines implemented using VPI interface
|
* some TF time routines implemented using VPI interface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static long long
|
static ivl_u64_t
|
||||||
scale(int high, int low, void*obj) {
|
scale(int high, int low, void*obj) {
|
||||||
vpiHandle hand = vpi_handle(vpiScope, vpi_handle(vpiSysTfCall,0));
|
vpiHandle hand = vpi_handle(vpiScope, vpi_handle(vpiSysTfCall,0));
|
||||||
long long scaled;
|
ivl_u64_t scaled;
|
||||||
|
|
||||||
scaled = high;
|
scaled = high;
|
||||||
scaled = (scaled << 32) | low;
|
scaled = (scaled << 32) | low;
|
||||||
|
|
@ -68,7 +69,7 @@ char *tf_strgettime(void)
|
||||||
PLI_INT32 tf_getlongtime(PLI_INT32 *high)
|
PLI_INT32 tf_getlongtime(PLI_INT32 *high)
|
||||||
{
|
{
|
||||||
s_vpi_time time;
|
s_vpi_time time;
|
||||||
long long scaled;
|
ivl_u64_t scaled;
|
||||||
time.type = vpiSimTime;
|
time.type = vpiSimTime;
|
||||||
vpi_get_time (0, &time);
|
vpi_get_time (0, &time);
|
||||||
scaled = scale(time.high, time.low, 0);
|
scaled = scale(time.high, time.low, 0);
|
||||||
|
|
@ -80,7 +81,7 @@ PLI_INT32 tf_getlongtime(PLI_INT32 *high)
|
||||||
PLI_INT32 tf_igetlongtime(PLI_INT32 *high, void*obj)
|
PLI_INT32 tf_igetlongtime(PLI_INT32 *high, void*obj)
|
||||||
{
|
{
|
||||||
s_vpi_time time;
|
s_vpi_time time;
|
||||||
long long scaled;
|
ivl_u64_t scaled;
|
||||||
time.type = vpiSimTime;
|
time.type = vpiSimTime;
|
||||||
vpi_get_time ((vpiHandle)obj, &time);
|
vpi_get_time ((vpiHandle)obj, &time);
|
||||||
scaled = scale(time.high, time.low, obj);
|
scaled = scale(time.high, time.low, obj);
|
||||||
|
|
@ -96,7 +97,7 @@ PLI_INT32 tf_getlongsimtime(PLI_INT32 *high) \
|
||||||
void tf_scale_longdelay(void*obj, PLI_INT32 lo, PLI_INT32 hi,
|
void tf_scale_longdelay(void*obj, PLI_INT32 lo, PLI_INT32 hi,
|
||||||
PLI_INT32 *low, PLI_INT32 *high)
|
PLI_INT32 *low, PLI_INT32 *high)
|
||||||
{
|
{
|
||||||
long long scaled = scale(hi, lo, obj);
|
ivl_u64_t scaled = scale(hi, lo, obj);
|
||||||
*high = (scaled >> 32) & 0xffffffff;
|
*high = (scaled >> 32) & 0xffffffff;
|
||||||
*low = scaled & 0xffffffff;
|
*low = scaled & 0xffffffff;
|
||||||
}
|
}
|
||||||
|
|
@ -129,6 +130,15 @@ PLI_INT32 tf_igettimeunit(void*obj)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: getsimtime.c,v $
|
* $Log: getsimtime.c,v $
|
||||||
|
* Revision 1.9 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.8 2003/05/30 04:01:55 steve
|
* Revision 1.8 2003/05/30 04:01:55 steve
|
||||||
* Add tf_scale_longdelay.
|
* Add tf_scale_longdelay.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,42 +17,43 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: math.c,v 1.1 2003/04/23 15:01:29 steve Exp $"
|
#ident "$Id: math.c,v 1.2 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include <string.h>
|
# include <string.h>
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
# include <assert.h>
|
# include <assert.h>
|
||||||
|
# include "config.h"
|
||||||
# include "vpi_user.h"
|
# include "vpi_user.h"
|
||||||
# include "veriuser.h"
|
# include "veriuser.h"
|
||||||
|
|
||||||
void tf_multiply_long(PLI_INT32*aof_low1, PLI_INT32*aof_high1,
|
void tf_multiply_long(PLI_INT32*aof_low1, PLI_INT32*aof_high1,
|
||||||
PLI_INT32 aof_low2, PLI_INT32 aof_high2)
|
PLI_INT32 aof_low2, PLI_INT32 aof_high2)
|
||||||
{
|
{
|
||||||
if (sizeof(long) == 8) {
|
ivl_u64_t a, b;
|
||||||
long a, b;
|
a = *aof_high1;
|
||||||
a = (*aof_high1 << 32) | (*aof_low1);
|
a <<= 32;
|
||||||
b = (aof_high2 << 32) | (aof_low2);
|
a |= *aof_low1;
|
||||||
|
b = aof_high2;
|
||||||
|
b <<= 32;
|
||||||
|
b |= aof_low2;
|
||||||
a *= b;
|
a *= b;
|
||||||
*aof_low1 = a & 0xffffffff;
|
*aof_low1 = a & 0xffffffff;
|
||||||
a >>= 32;
|
a >>= 32;
|
||||||
*aof_high1 = a & 0xffffffff;
|
*aof_high1 = a & 0xffffffff;
|
||||||
|
|
||||||
} else if (sizeof(long long) == 8) {
|
|
||||||
long long a, b;
|
|
||||||
a = (*aof_high1 << 32) | (*aof_low1);
|
|
||||||
b = ( aof_high2 << 32) | ( aof_low2);
|
|
||||||
a *= b;
|
|
||||||
*aof_low1 = a & 0xffffffff;
|
|
||||||
a >>= 32;
|
|
||||||
*aof_high1 = a & 0xffffffff;
|
|
||||||
} else {
|
|
||||||
assert(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: math.c,v $
|
* $Log: math.c,v $
|
||||||
|
* Revision 1.2 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.1 2003/04/23 15:01:29 steve
|
* Revision 1.1 2003/04/23 15:01:29 steve
|
||||||
* Add tf_synchronize and tf_multiply_long.
|
* Add tf_synchronize and tf_multiply_long.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: veriusertfs.c,v 1.10 2003/05/30 04:05:32 steve Exp $"
|
#ident "$Id: veriusertfs.c,v 1.11 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -29,9 +29,11 @@
|
||||||
# include <string.h>
|
# include <string.h>
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
# include <assert.h>
|
# include <assert.h>
|
||||||
|
# include <math.h>
|
||||||
|
# include "config.h"
|
||||||
|
# include "priv.h"
|
||||||
# include "vpi_user.h"
|
# include "vpi_user.h"
|
||||||
# include "veriuser.h"
|
# include "veriuser.h"
|
||||||
# include "priv.h"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* local structure used to hold the persistent veriusertfs data
|
* local structure used to hold the persistent veriusertfs data
|
||||||
|
|
@ -263,6 +265,9 @@ static int callback(p_cb_data data)
|
||||||
case cbReadOnlySynch:
|
case cbReadOnlySynch:
|
||||||
reason = reason_rosynch;
|
reason = reason_rosynch;
|
||||||
break;
|
break;
|
||||||
|
case cbAfterDelay:
|
||||||
|
reason = reason_reactivate;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
|
@ -334,8 +339,51 @@ PLI_INT32 tf_rosynchronize(void)
|
||||||
return tf_irosynchronize(tf_getinstance());
|
return tf_irosynchronize(tf_getinstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PLI_INT32 tf_isetrealdelay(double dly, void*obj)
|
||||||
|
{
|
||||||
|
vpiHandle sys = (vpiHandle)obj;
|
||||||
|
p_pli_data pli = vpi_get_userdata(sys);
|
||||||
|
s_cb_data cb;
|
||||||
|
s_vpi_time ti = {vpiSimTime};
|
||||||
|
|
||||||
|
// Scale delay to SimTime
|
||||||
|
ivl_u64_t delay = ((dly
|
||||||
|
* pow(10, tf_gettimeprecision() - tf_gettimeunit()))
|
||||||
|
+ 0.5);
|
||||||
|
ti.high = delay >> 32 & 0xffffffff;
|
||||||
|
ti.low = delay & 0xffffffff;
|
||||||
|
|
||||||
|
cb.reason = cbAfterDelay;
|
||||||
|
cb.cb_rtn = callback;
|
||||||
|
cb.obj = sys;
|
||||||
|
cb.time = &ti;
|
||||||
|
cb.user_data = (char *)pli;
|
||||||
|
|
||||||
|
vpi_register_cb(&cb);
|
||||||
|
|
||||||
|
if (pli_trace)
|
||||||
|
fprintf(pli_trace, "tf_isetrealdelay(%f, %p) --> %d\n",
|
||||||
|
dly, obj, 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
PLI_INT32 tf_setrealdelay(double dly)
|
||||||
|
{
|
||||||
|
return tf_isetrealdelay(dly, tf_getinstance());
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* $Log: veriusertfs.c,v $
|
* $Log: veriusertfs.c,v $
|
||||||
|
* Revision 1.11 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.10 2003/05/30 04:05:32 steve
|
* Revision 1.10 2003/05/30 04:05:32 steve
|
||||||
* Add tf_rosynchronize and friends.
|
* Add tf_rosynchronize and friends.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
16
veriuser.h
16
veriuser.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: veriuser.h,v 1.31 2003/05/30 04:22:13 steve Exp $"
|
#ident "$Id: veriuser.h,v 1.32 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -167,6 +167,8 @@ extern void veriusertfs_register_table(p_tfcell vtable);
|
||||||
#define reason_synch 8
|
#define reason_synch 8
|
||||||
#define REASON_SYNCH reason_synch
|
#define REASON_SYNCH reason_synch
|
||||||
#define reason_finish 9
|
#define reason_finish 9
|
||||||
|
#define reason_reactivate 10
|
||||||
|
#define REASON_REACTIVATE reason_reactivate
|
||||||
#define reason_rosynch 11
|
#define reason_rosynch 11
|
||||||
#define REASON_ROSYNCH reason_rosynch
|
#define REASON_ROSYNCH reason_rosynch
|
||||||
#define reason_endofcompile 16
|
#define reason_endofcompile 16
|
||||||
|
|
@ -323,6 +325,9 @@ extern PLI_INT32 tf_isynchronize(void* sys);
|
||||||
extern PLI_INT32 tf_rosynchronize(void);
|
extern PLI_INT32 tf_rosynchronize(void);
|
||||||
extern PLI_INT32 tf_irosynchronize(void* sys);
|
extern PLI_INT32 tf_irosynchronize(void* sys);
|
||||||
|
|
||||||
|
extern PLI_INT32 tf_setrealdelay(double realdelay);
|
||||||
|
extern PLI_INT32 tf_isetrealdelay(double realdelay, void*inst);
|
||||||
|
|
||||||
extern PLI_INT32 tf_typep(PLI_INT32 narg);
|
extern PLI_INT32 tf_typep(PLI_INT32 narg);
|
||||||
|
|
||||||
extern void tf_warning(const char*, ...)
|
extern void tf_warning(const char*, ...)
|
||||||
|
|
@ -332,6 +337,15 @@ EXTERN_C_END
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: veriuser.h,v $
|
* $Log: veriuser.h,v $
|
||||||
|
* Revision 1.32 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.31 2003/05/30 04:22:13 steve
|
* Revision 1.31 2003/05/30 04:22:13 steve
|
||||||
* Add tf_strgetp functions.
|
* Add tf_strgetp functions.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
13
vpi_user.h
13
vpi_user.h
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: vpi_user.h,v 1.27 2003/05/29 02:21:45 steve Exp $"
|
#ident "$Id: vpi_user.h,v 1.28 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -190,6 +190,8 @@ typedef struct t_vpi_value {
|
||||||
#define vpiDefName 9
|
#define vpiDefName 9
|
||||||
#define vpiTimeUnit 11
|
#define vpiTimeUnit 11
|
||||||
#define vpiTimePrecision 12
|
#define vpiTimePrecision 12
|
||||||
|
#define vpiNetType 22
|
||||||
|
# define vpiWire 1
|
||||||
#define vpiConstType 43
|
#define vpiConstType 43
|
||||||
# define vpiDecConst 1
|
# define vpiDecConst 1
|
||||||
# define vpiRealConst 2
|
# define vpiRealConst 2
|
||||||
|
|
@ -397,6 +399,15 @@ EXTERN_C_END
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_user.h,v $
|
* $Log: vpi_user.h,v $
|
||||||
|
* Revision 1.28 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.27 2003/05/29 02:21:45 steve
|
* Revision 1.27 2003/05/29 02:21:45 steve
|
||||||
* Implement acc_fetch_defname and its infrastructure in vvp.
|
* Implement acc_fetch_defname and its infrastructure in vvp.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: vpi_signal.cc,v 1.56 2003/05/02 04:29:57 steve Exp $"
|
#ident "$Id: vpi_signal.cc,v 1.57 2003/06/04 01:56:20 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -96,6 +96,15 @@ static int signal_get(int code, vpiHandle ref)
|
||||||
else
|
else
|
||||||
return rfp->lsb - rfp->msb + 1;
|
return rfp->lsb - rfp->msb + 1;
|
||||||
|
|
||||||
|
case vpiNetType:
|
||||||
|
if (ref->vpi_type->type_code==vpiNet)
|
||||||
|
return vpiWire;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case vpiLeftRange: return rfp->msb;
|
||||||
|
case vpiRightRange: return rfp->lsb;
|
||||||
|
|
||||||
case _vpiNexusId:
|
case _vpiNexusId:
|
||||||
if (rfp->msb == rfp->lsb)
|
if (rfp->msb == rfp->lsb)
|
||||||
return vvp_fvector_get(rfp->bits, 0);
|
return vvp_fvector_get(rfp->bits, 0);
|
||||||
|
|
@ -103,6 +112,7 @@ static int signal_get(int code, vpiHandle ref)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
vpi_printf("signal_get: property %d is unknown\n", code);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -835,6 +845,15 @@ vpiHandle vpip_make_net(const char*name, int msb, int lsb,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_signal.cc,v $
|
* $Log: vpi_signal.cc,v $
|
||||||
|
* Revision 1.57 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
|
||||||
|
* tf_isetrealdelay, acc_handle_scope
|
||||||
|
* 3) makes acc_next reentrant
|
||||||
|
* 4) adds basic vpiWire type support
|
||||||
|
* 5) fills in some acc_object_of_type() and acc_fetch_{full}type()
|
||||||
|
* 6) add vpiLeftRange/RigthRange to signals
|
||||||
|
*
|
||||||
* Revision 1.56 2003/05/02 04:29:57 steve
|
* Revision 1.56 2003/05/02 04:29:57 steve
|
||||||
* Add put_value with transport delay.
|
* Add put_value with transport delay.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue