Use functor pointers where vvp_ipoint_t is unneeded.
This commit is contained in:
parent
9572ddd7e8
commit
fa23dafdae
25
vvp/arith.cc
25
vvp/arith.cc
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: arith.cc,v 1.19 2001/11/04 05:03:21 steve Exp $"
|
#ident "$Id: arith.cc,v 1.20 2001/11/07 03:34:41 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "arith.h"
|
# include "arith.h"
|
||||||
|
|
@ -36,7 +36,7 @@ void vvp_arith_::output_x_(vvp_ipoint_t base, bool push, unsigned val)
|
||||||
vvp_ipoint_t ptr = ipoint_index(base,idx);
|
vvp_ipoint_t ptr = ipoint_index(base,idx);
|
||||||
functor_t obj = functor_index(ptr);
|
functor_t obj = functor_index(ptr);
|
||||||
|
|
||||||
obj->put_oval(ptr, push, val);
|
obj->put_oval(push, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -49,7 +49,7 @@ void vvp_arith_::output_val_(vvp_ipoint_t base, bool push, unsigned long sum)
|
||||||
unsigned val = sum & 1;
|
unsigned val = sum & 1;
|
||||||
sum >>= 1;
|
sum >>= 1;
|
||||||
|
|
||||||
obj->put_oval(ptr, push, val);
|
obj->put_oval(push, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -79,7 +79,7 @@ void vvp_wide_arith_::output_val_(vvp_ipoint_t base, bool push)
|
||||||
page += 1;
|
page += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
obj->put_oval(ptr, push, val);
|
obj->put_oval(push, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -213,7 +213,7 @@ void vvp_arith_mult::wide(vvp_ipoint_t base, bool push)
|
||||||
|
|
||||||
unsigned val = sum[idx];
|
unsigned val = sum[idx];
|
||||||
|
|
||||||
obj->put_oval(ptr, push, val);
|
obj->put_oval(push, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[]sum;
|
delete[]sum;
|
||||||
|
|
@ -369,7 +369,7 @@ void vvp_cmp_ge::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
put_oval(base, push, out_val);
|
put_oval(push, out_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void vvp_cmp_gt::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
void vvp_cmp_gt::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
||||||
|
|
@ -403,7 +403,7 @@ void vvp_cmp_gt::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
put_oval(base, push, out_val);
|
put_oval(push, out_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -442,7 +442,7 @@ void vvp_shiftl::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
||||||
for (unsigned idx = 0 ; idx < amount ; idx += 1) {
|
for (unsigned idx = 0 ; idx < amount ; idx += 1) {
|
||||||
optr = ipoint_index(base, idx);
|
optr = ipoint_index(base, idx);
|
||||||
ofp = functor_index(optr);
|
ofp = functor_index(optr);
|
||||||
ofp->put_oval(optr, push, 0);
|
ofp->put_oval(push, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unsigned idx = amount ; idx < wid_ ; idx += 1) {
|
for (unsigned idx = amount ; idx < wid_ ; idx += 1) {
|
||||||
|
|
@ -451,7 +451,7 @@ void vvp_shiftl::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
||||||
iptr = ipoint_index(base, idx - amount);
|
iptr = ipoint_index(base, idx - amount);
|
||||||
ifp = functor_index(iptr);
|
ifp = functor_index(iptr);
|
||||||
|
|
||||||
ofp->put_oval(optr, push, ifp->ival & 3);
|
ofp->put_oval(push, ifp->ival & 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -494,13 +494,13 @@ void vvp_shiftr::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
||||||
iptr = ipoint_index(base, idx + amount);
|
iptr = ipoint_index(base, idx + amount);
|
||||||
ifp = functor_index(iptr);
|
ifp = functor_index(iptr);
|
||||||
|
|
||||||
ofp->put_oval(optr, push, ifp->ival & 3);
|
ofp->put_oval(push, ifp->ival & 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unsigned idx = wid_-amount; idx < wid_ ; idx += 1) {
|
for (unsigned idx = wid_-amount; idx < wid_ ; idx += 1) {
|
||||||
optr = ipoint_index(base, idx);
|
optr = ipoint_index(base, idx);
|
||||||
ofp = functor_index(optr);
|
ofp = functor_index(optr);
|
||||||
ofp->put_oval(optr, push, 0);
|
ofp->put_oval(push, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -508,6 +508,9 @@ void vvp_shiftr::set(vvp_ipoint_t i, bool push, unsigned val, unsigned)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: arith.cc,v $
|
* $Log: arith.cc,v $
|
||||||
|
* Revision 1.20 2001/11/07 03:34:41 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.19 2001/11/04 05:03:21 steve
|
* Revision 1.19 2001/11/04 05:03:21 steve
|
||||||
* MacOSX 10.1 updates.
|
* MacOSX 10.1 updates.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: bufif.cc,v 1.2 2001/10/31 04:27:46 steve Exp $"
|
#ident "$Id: bufif.cc,v 1.3 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "bufif.h"
|
# include "bufif.h"
|
||||||
|
|
@ -80,11 +80,14 @@ void vvp_bufif1_s::set(vvp_ipoint_t ptr, bool push, unsigned v, unsigned)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
put_ostr(ptr, push, val, str);
|
put_ostr(push, val, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: bufif.cc,v $
|
* $Log: bufif.cc,v $
|
||||||
|
* Revision 1.3 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.2 2001/10/31 04:27:46 steve
|
* Revision 1.2 2001/10/31 04:27:46 steve
|
||||||
* Rewrite the functor type to have fewer functor modes,
|
* Rewrite the functor type to have fewer functor modes,
|
||||||
* and use objects to manage the different types.
|
* and use objects to manage the different types.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: codes.h,v 1.36 2001/11/01 03:00:19 steve Exp $"
|
#ident "$Id: codes.h,v 1.37 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -106,6 +106,7 @@ struct vvp_code_s {
|
||||||
vvp_memory_t mem;
|
vvp_memory_t mem;
|
||||||
struct __vpiHandle*handle;
|
struct __vpiHandle*handle;
|
||||||
struct __vpiScope*scope;
|
struct __vpiScope*scope;
|
||||||
|
functor_t fun_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
union {
|
union {
|
||||||
|
|
@ -147,6 +148,9 @@ extern vvp_code_t codespace_index(vvp_cpoint_t ptr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: codes.h,v $
|
* $Log: codes.h,v $
|
||||||
|
* Revision 1.37 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.36 2001/11/01 03:00:19 steve
|
* Revision 1.36 2001/11/01 03:00:19 steve
|
||||||
* Add force/cassign/release/deassign support. (Stephan Boettcher)
|
* Add force/cassign/release/deassign support. (Stephan Boettcher)
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: compile.cc,v 1.113 2001/11/06 03:07:21 steve Exp $"
|
#ident "$Id: compile.cc,v 1.114 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "arith.h"
|
# include "arith.h"
|
||||||
|
|
@ -579,7 +579,7 @@ static vvp_ipoint_t make_const_functor(unsigned val,
|
||||||
functor_t obj = new const_functor_s(str0, str1);
|
functor_t obj = new const_functor_s(str0, str1);
|
||||||
functor_define(fdx, obj);
|
functor_define(fdx, obj);
|
||||||
|
|
||||||
obj->put_oval(fdx, false, val);
|
obj->put_oval(false, val);
|
||||||
|
|
||||||
return fdx;
|
return fdx;
|
||||||
}
|
}
|
||||||
|
|
@ -955,7 +955,7 @@ void compile_udp_functor(char*label, char*type,
|
||||||
free(argv);
|
free(argv);
|
||||||
|
|
||||||
if (u->sequ)
|
if (u->sequ)
|
||||||
udp->put_oval(fdx, false, u->init);
|
udp->put_oval(false, u->init);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1341,6 +1341,9 @@ vvp_ipoint_t debug_lookup_functor(const char*name)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: compile.cc,v $
|
* $Log: compile.cc,v $
|
||||||
|
* Revision 1.114 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.113 2001/11/06 03:07:21 steve
|
* Revision 1.113 2001/11/06 03:07:21 steve
|
||||||
* Code rearrange. (Stephan Boettcher)
|
* Code rearrange. (Stephan Boettcher)
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: force.cc,v 1.2 2001/11/01 04:42:40 steve Exp $"
|
#ident "$Id: force.cc,v 1.3 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "codes.h"
|
# include "codes.h"
|
||||||
|
|
@ -158,7 +158,7 @@ void var_functor_s::set(vvp_ipoint_t ptr, bool push, unsigned val, unsigned)
|
||||||
unsigned pp = ipoint_port(ptr);
|
unsigned pp = ipoint_port(ptr);
|
||||||
|
|
||||||
if (assigned() && pp==1 || !assigned() && pp==0) {
|
if (assigned() && pp==1 || !assigned() && pp==0) {
|
||||||
put_oval(ptr, push, val);
|
put_oval(push, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -249,6 +249,9 @@ bool of_DEASSIGN(vthread_t thr, vvp_code_t cp)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: force.cc,v $
|
* $Log: force.cc,v $
|
||||||
|
* Revision 1.3 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.2 2001/11/01 04:42:40 steve
|
* Revision 1.2 2001/11/01 04:42:40 steve
|
||||||
* Handle procedural constant functor pointers.
|
* Handle procedural constant functor pointers.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: functor.h,v 1.37 2001/11/06 03:07:22 steve Exp $"
|
#ident "$Id: functor.h,v 1.38 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "pointers.h"
|
# include "pointers.h"
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
* to have its output propagated, and the delay is the delay to
|
* to have its output propagated, and the delay is the delay to
|
||||||
* schedule the propagation.
|
* schedule the propagation.
|
||||||
*/
|
*/
|
||||||
extern void schedule_functor(vvp_ipoint_t fun, unsigned delay);
|
extern void schedule_functor(functor_t fun, unsigned delay);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The vvp_ipoint_t is an integral type that is 32bits. The low 2 bits
|
* The vvp_ipoint_t is an integral type that is 32bits. The low 2 bits
|
||||||
|
|
@ -85,8 +85,6 @@ extern void schedule_functor(vvp_ipoint_t fun, unsigned delay);
|
||||||
* value.
|
* value.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct functor_s *functor_t;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* signal strengths
|
* signal strengths
|
||||||
*/
|
*/
|
||||||
|
|
@ -182,8 +180,8 @@ struct functor_s {
|
||||||
inline unsigned char get() { return oval; }
|
inline unsigned char get() { return oval; }
|
||||||
inline unsigned char get_ostr() { return ostr; }
|
inline unsigned char get_ostr() { return ostr; }
|
||||||
void put(vvp_ipoint_t ipt, unsigned val);
|
void put(vvp_ipoint_t ipt, unsigned val);
|
||||||
void put_oval(vvp_ipoint_t ptr, bool push, unsigned val);
|
void put_oval(bool push, unsigned val);
|
||||||
void put_ostr(vvp_ipoint_t ptr, bool push, unsigned val, unsigned str);
|
void put_ostr(bool push, unsigned val, unsigned str);
|
||||||
bool disable(vvp_ipoint_t ptr);
|
bool disable(vvp_ipoint_t ptr);
|
||||||
bool enable(vvp_ipoint_t ptr);
|
bool enable(vvp_ipoint_t ptr);
|
||||||
void propagate(bool push);
|
void propagate(bool push);
|
||||||
|
|
@ -217,7 +215,7 @@ inline void functor_s::propagate(bool push)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void functor_s::put_oval(vvp_ipoint_t ptr, bool push, unsigned val)
|
inline void functor_s::put_oval(bool push, unsigned val)
|
||||||
{
|
{
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case 0:
|
case 0:
|
||||||
|
|
@ -240,12 +238,11 @@ inline void functor_s::put_oval(vvp_ipoint_t ptr, bool push, unsigned val)
|
||||||
if (push)
|
if (push)
|
||||||
propagate(true);
|
propagate(true);
|
||||||
else
|
else
|
||||||
schedule_functor(ptr, 0);
|
schedule_functor(this, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void functor_s::put_ostr(vvp_ipoint_t ptr, bool push,
|
inline void functor_s::put_ostr(bool push, unsigned val, unsigned str)
|
||||||
unsigned val, unsigned str)
|
|
||||||
{
|
{
|
||||||
if (val != oval || str != ostr) {
|
if (val != oval || str != ostr) {
|
||||||
ostr = str;
|
ostr = str;
|
||||||
|
|
@ -255,7 +252,7 @@ inline void functor_s::put_ostr(vvp_ipoint_t ptr, bool push,
|
||||||
if (push)
|
if (push)
|
||||||
propagate(true);
|
propagate(true);
|
||||||
else
|
else
|
||||||
schedule_functor(ptr, 0);
|
schedule_functor(this, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -306,9 +303,8 @@ unsigned functor_get(vvp_ipoint_t ptr)
|
||||||
* the way.
|
* the way.
|
||||||
*/
|
*/
|
||||||
inline static
|
inline static
|
||||||
void functor_propagate(vvp_ipoint_t ptr, bool push=true)
|
void functor_propagate(functor_t fp, bool push=true)
|
||||||
{
|
{
|
||||||
functor_t fp = functor_index(ptr);
|
|
||||||
fp->propagate(push);
|
fp->propagate(push);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -373,6 +369,9 @@ extern vvp_fvector_t vvp_fvector_continuous_new(unsigned size, vvp_ipoint_t p);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: functor.h,v $
|
* $Log: functor.h,v $
|
||||||
|
* Revision 1.38 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.37 2001/11/06 03:07:22 steve
|
* Revision 1.37 2001/11/06 03:07:22 steve
|
||||||
* Code rearrange. (Stephan Boettcher)
|
* Code rearrange. (Stephan Boettcher)
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: logic.cc,v 1.1 2001/11/06 03:07:22 steve Exp $"
|
#ident "$Id: logic.cc,v 1.2 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "logic.h"
|
# include "logic.h"
|
||||||
|
|
@ -52,7 +52,7 @@ void table_functor_s::set(vvp_ipoint_t ptr, bool push, unsigned v, unsigned)
|
||||||
val >>= 2 * (ival&0x03);
|
val >>= 2 * (ival&0x03);
|
||||||
val &= 0x03;
|
val &= 0x03;
|
||||||
|
|
||||||
put_oval(ptr, push, val);
|
put_oval(push, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -136,6 +136,9 @@ void compile_functor(char*label, char*type, unsigned argc, struct symb_s*argv)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: logic.cc,v $
|
* $Log: logic.cc,v $
|
||||||
|
* Revision 1.2 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.1 2001/11/06 03:07:22 steve
|
* Revision 1.1 2001/11/06 03:07:22 steve
|
||||||
* Code rearrange. (Stephan Boettcher)
|
* Code rearrange. (Stephan Boettcher)
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: memory.cc,v 1.12 2001/10/31 04:27:47 steve Exp $"
|
#ident "$Id: memory.cc,v 1.13 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
|
|
@ -317,7 +317,7 @@ void update_data(vvp_memory_port_t data)
|
||||||
vvp_ipoint_t dx = ipoint_index(data->ix, i);
|
vvp_ipoint_t dx = ipoint_index(data->ix, i);
|
||||||
functor_t df = functor_index(dx);
|
functor_t df = functor_index(dx);
|
||||||
unsigned char out = get_bit(data->cur_bits, i + data->bitoff);
|
unsigned char out = get_bit(data->cur_bits, i + data->bitoff);
|
||||||
df->put_oval(dx, false, out);
|
df->put_oval(false, out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -338,7 +338,7 @@ void update_data_ports(vvp_memory_t mem, vvp_memory_bits_t bits, int bit,
|
||||||
{
|
{
|
||||||
vvp_ipoint_t ix = ipoint_index(a->ix, i);
|
vvp_ipoint_t ix = ipoint_index(a->ix, i);
|
||||||
functor_t df = functor_index(ix);
|
functor_t df = functor_index(ix);
|
||||||
df->put_oval(ix, false, val);
|
df->put_oval(false, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a = a->next;
|
a = a->next;
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: npmos.cc,v 1.5 2001/10/31 04:27:47 steve Exp $"
|
#ident "$Id: npmos.cc,v 1.6 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "npmos.h"
|
# include "npmos.h"
|
||||||
|
|
@ -82,11 +82,14 @@ void vvp_pmos_s::set(vvp_ipoint_t ptr, bool push, unsigned v, unsigned s)
|
||||||
str = HiZ;
|
str = HiZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
put_ostr(ptr, push, val, str);
|
put_ostr(push, val, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: npmos.cc,v $
|
* $Log: npmos.cc,v $
|
||||||
|
* Revision 1.6 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.5 2001/10/31 04:27:47 steve
|
* Revision 1.5 2001/10/31 04:27:47 steve
|
||||||
* Rewrite the functor type to have fewer functor modes,
|
* Rewrite the functor type to have fewer functor modes,
|
||||||
* and use objects to manage the different types.
|
* and use objects to manage the different types.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: pointers.h,v 1.6 2001/10/31 04:27:47 steve Exp $"
|
#ident "$Id: pointers.h,v 1.7 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -46,6 +46,11 @@ typedef unsigned long vvp_ipoint_t;
|
||||||
#error "I need an unsigned type that is 32 bits!"
|
#error "I need an unsigned type that is 32 bits!"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is a native-pointer version of the vvp_ipoint_t
|
||||||
|
*/
|
||||||
|
typedef struct functor_s *functor_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Given a functor generic address and a desired port, this function
|
* Given a functor generic address and a desired port, this function
|
||||||
* makes a complete vvp_ipoint_t that points to the port of the given
|
* makes a complete vvp_ipoint_t that points to the port of the given
|
||||||
|
|
@ -101,6 +106,9 @@ typedef struct vvp_fvector_s *vvp_fvector_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: pointers.h,v $
|
* $Log: pointers.h,v $
|
||||||
|
* Revision 1.7 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.6 2001/10/31 04:27:47 steve
|
* Revision 1.6 2001/10/31 04:27:47 steve
|
||||||
* Rewrite the functor type to have fewer functor modes,
|
* Rewrite the functor type to have fewer functor modes,
|
||||||
* and use objects to manage the different types.
|
* and use objects to manage the different types.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: resolv.cc,v 1.7 2001/10/31 04:27:47 steve Exp $"
|
#ident "$Id: resolv.cc,v 1.8 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "resolv.h"
|
# include "resolv.h"
|
||||||
|
|
@ -164,11 +164,14 @@ void resolv_functor_s::set(vvp_ipoint_t i, bool push, unsigned, unsigned str)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If the output changes, then create a propagation event. */
|
/* If the output changes, then create a propagation event. */
|
||||||
put_ostr(i, push, val, sval);
|
put_ostr(push, val, sval);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: resolv.cc,v $
|
* $Log: resolv.cc,v $
|
||||||
|
* Revision 1.8 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.7 2001/10/31 04:27:47 steve
|
* Revision 1.7 2001/10/31 04:27:47 steve
|
||||||
* Rewrite the functor type to have fewer functor modes,
|
* Rewrite the functor type to have fewer functor modes,
|
||||||
* and use objects to manage the different types.
|
* and use objects to manage the different types.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: schedule.cc,v 1.12 2001/09/15 18:27:05 steve Exp $"
|
#ident "$Id: schedule.cc,v 1.13 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "schedule.h"
|
# include "schedule.h"
|
||||||
|
|
@ -51,6 +51,7 @@ struct event_s {
|
||||||
union {
|
union {
|
||||||
vthread_t thr;
|
vthread_t thr;
|
||||||
vvp_ipoint_t fun;
|
vvp_ipoint_t fun;
|
||||||
|
functor_t funp;
|
||||||
vvp_gen_event_t obj;
|
vvp_gen_event_t obj;
|
||||||
};
|
};
|
||||||
unsigned val :2;
|
unsigned val :2;
|
||||||
|
|
@ -237,12 +238,12 @@ void schedule_vthread(vthread_t thr, unsigned delay)
|
||||||
schedule_event_(cur);
|
schedule_event_(cur);
|
||||||
}
|
}
|
||||||
|
|
||||||
void schedule_functor(vvp_ipoint_t fun, unsigned delay)
|
void schedule_functor(functor_t funp, unsigned delay)
|
||||||
{
|
{
|
||||||
struct event_s*cur = e_alloc();
|
struct event_s*cur = e_alloc();
|
||||||
|
|
||||||
cur->delay = delay;
|
cur->delay = delay;
|
||||||
cur->fun = fun;
|
cur->funp = funp;
|
||||||
cur->type = TYPE_PROP;
|
cur->type = TYPE_PROP;
|
||||||
|
|
||||||
schedule_event_(cur);
|
schedule_event_(cur);
|
||||||
|
|
@ -319,7 +320,7 @@ void schedule_simulate(void)
|
||||||
|
|
||||||
case TYPE_PROP:
|
case TYPE_PROP:
|
||||||
//printf("Propagate %p\n", cur->fun);
|
//printf("Propagate %p\n", cur->fun);
|
||||||
functor_propagate(cur->fun);
|
functor_propagate(cur->funp);
|
||||||
e_free(cur);
|
e_free(cur);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -360,6 +361,9 @@ void schedule_simulate(void)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: schedule.cc,v $
|
* $Log: schedule.cc,v $
|
||||||
|
* Revision 1.13 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.12 2001/09/15 18:27:05 steve
|
* Revision 1.12 2001/09/15 18:27:05 steve
|
||||||
* Make configure detect malloc.h
|
* Make configure detect malloc.h
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: udp.cc,v 1.12 2001/10/31 04:27:47 steve Exp $"
|
#ident "$Id: udp.cc,v 1.13 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "udp.h"
|
#include "udp.h"
|
||||||
|
|
@ -36,7 +36,7 @@ void udp_functor_s::set(vvp_ipoint_t i, bool, unsigned val, unsigned)
|
||||||
// old_ival is set on the way out
|
// old_ival is set on the way out
|
||||||
put(i, val);
|
put(i, val);
|
||||||
unsigned char out = udp->propagate(this, i);
|
unsigned char out = udp->propagate(this, i);
|
||||||
put_oval(i, false, out);
|
put_oval(false, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -350,6 +350,9 @@ void vvp_udp_s::compile_row_(udp_table_entry_t row, char *rchr)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: udp.cc,v $
|
* $Log: udp.cc,v $
|
||||||
|
* Revision 1.13 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.12 2001/10/31 04:27:47 steve
|
* Revision 1.12 2001/10/31 04:27:47 steve
|
||||||
* Rewrite the functor type to have fewer functor modes,
|
* Rewrite the functor type to have fewer functor modes,
|
||||||
* and use objects to manage the different types.
|
* and use objects to manage the different types.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: vpi_signal.cc,v 1.28 2001/10/31 04:27:47 steve Exp $"
|
#ident "$Id: vpi_signal.cc,v 1.29 2001/11/07 03:34:42 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -404,7 +404,7 @@ static void functor_poke(struct __vpiSignal*rfp, unsigned idx,
|
||||||
{
|
{
|
||||||
vvp_ipoint_t ptr = vvp_fvector_get(rfp->bits,idx);
|
vvp_ipoint_t ptr = vvp_fvector_get(rfp->bits,idx);
|
||||||
functor_t fu = functor_index(ptr);
|
functor_t fu = functor_index(ptr);
|
||||||
fu->put_ostr(ptr, true, val, str);
|
fu->put_ostr(true, val, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static vpiHandle signal_put_value(vpiHandle ref, s_vpi_value*vp,
|
static vpiHandle signal_put_value(vpiHandle ref, s_vpi_value*vp,
|
||||||
|
|
@ -552,6 +552,9 @@ vpiHandle vpip_make_net(char*name, int msb, int lsb, bool signed_flag,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vpi_signal.cc,v $
|
* $Log: vpi_signal.cc,v $
|
||||||
|
* Revision 1.29 2001/11/07 03:34:42 steve
|
||||||
|
* Use functor pointers where vvp_ipoint_t is unneeded.
|
||||||
|
*
|
||||||
* Revision 1.28 2001/10/31 04:27:47 steve
|
* Revision 1.28 2001/10/31 04:27:47 steve
|
||||||
* Rewrite the functor type to have fewer functor modes,
|
* Rewrite the functor type to have fewer functor modes,
|
||||||
* and use objects to manage the different types.
|
* and use objects to manage the different types.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue