support functor_set push for blocking assignment.
This commit is contained in:
parent
3ffb3c7011
commit
9d2e22576e
|
|
@ -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: functor.cc,v 1.9 2001/03/31 19:29:23 steve Exp $"
|
#ident "$Id: functor.cc,v 1.10 2001/04/03 03:18:34 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "functor.h"
|
# include "functor.h"
|
||||||
|
|
@ -132,7 +132,7 @@ functor_t functor_index(vvp_ipoint_t point)
|
||||||
return functor_table[point]->table[index1]->table + index0;
|
return functor_table[point]->table[index1]->table + index0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void functor_set_mode0(vvp_ipoint_t ptr, functor_t fp)
|
static void functor_set_mode0(vvp_ipoint_t ptr, functor_t fp, bool push)
|
||||||
{
|
{
|
||||||
/* Locate the new output value in the table. */
|
/* Locate the new output value in the table. */
|
||||||
unsigned char out = fp->table[fp->ival >> 2];
|
unsigned char out = fp->table[fp->ival >> 2];
|
||||||
|
|
@ -142,7 +142,10 @@ static void functor_set_mode0(vvp_ipoint_t ptr, functor_t fp)
|
||||||
/* If the output changes, then create a propagation event. */
|
/* If the output changes, then create a propagation event. */
|
||||||
if (out != fp->oval) {
|
if (out != fp->oval) {
|
||||||
fp->oval = out;
|
fp->oval = out;
|
||||||
schedule_functor(ptr, 0);
|
if (push)
|
||||||
|
functor_propagate(ptr);
|
||||||
|
else
|
||||||
|
schedule_functor(ptr, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -209,7 +212,7 @@ static void functor_set_mode2(functor_t fp)
|
||||||
* output. If the output changes any, then generate the necessary
|
* output. If the output changes any, then generate the necessary
|
||||||
* propagation events to pass the output on.
|
* propagation events to pass the output on.
|
||||||
*/
|
*/
|
||||||
void functor_set(vvp_ipoint_t ptr, unsigned bit)
|
void functor_set(vvp_ipoint_t ptr, unsigned bit, bool push)
|
||||||
{
|
{
|
||||||
functor_t fp = functor_index(ptr);
|
functor_t fp = functor_index(ptr);
|
||||||
unsigned pp = ipoint_port(ptr);
|
unsigned pp = ipoint_port(ptr);
|
||||||
|
|
@ -223,7 +226,7 @@ void functor_set(vvp_ipoint_t ptr, unsigned bit)
|
||||||
|
|
||||||
switch (fp->mode) {
|
switch (fp->mode) {
|
||||||
case 0:
|
case 0:
|
||||||
functor_set_mode0(ptr, fp);
|
functor_set_mode0(ptr, fp, push);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
functor_set_mode1(fp);
|
functor_set_mode1(fp);
|
||||||
|
|
@ -297,6 +300,9 @@ const unsigned char ft_var[16] = {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: functor.cc,v $
|
* $Log: functor.cc,v $
|
||||||
|
* Revision 1.10 2001/04/03 03:18:34 steve
|
||||||
|
* support functor_set push for blocking assignment.
|
||||||
|
*
|
||||||
* Revision 1.9 2001/03/31 19:29:23 steve
|
* Revision 1.9 2001/03/31 19:29:23 steve
|
||||||
* Fix compilation warnings.
|
* Fix compilation warnings.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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.8 2001/04/01 21:31:46 steve Exp $"
|
#ident "$Id: functor.h,v 1.9 2001/04/03 03:18:34 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "pointers.h"
|
# include "pointers.h"
|
||||||
|
|
@ -112,7 +112,7 @@ extern vvp_ipoint_t functor_allocate(unsigned wid);
|
||||||
* calculates a new output value. If there is any propagation to do,
|
* calculates a new output value. If there is any propagation to do,
|
||||||
* propagation events are created.
|
* propagation events are created.
|
||||||
*/
|
*/
|
||||||
extern void functor_set(vvp_ipoint_t point, unsigned val);
|
extern void functor_set(vvp_ipoint_t point, unsigned val, bool push=false);
|
||||||
|
|
||||||
extern unsigned functor_get(vvp_ipoint_t ptr);
|
extern unsigned functor_get(vvp_ipoint_t ptr);
|
||||||
|
|
||||||
|
|
@ -145,6 +145,9 @@ extern const unsigned char ft_var[];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: functor.h,v $
|
* $Log: functor.h,v $
|
||||||
|
* Revision 1.9 2001/04/03 03:18:34 steve
|
||||||
|
* support functor_set push for blocking assignment.
|
||||||
|
*
|
||||||
* Revision 1.8 2001/04/01 21:31:46 steve
|
* Revision 1.8 2001/04/01 21:31:46 steve
|
||||||
* Add the buf functor type.
|
* Add the buf functor type.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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: vthread.cc,v 1.20 2001/04/01 22:25:33 steve Exp $"
|
#ident "$Id: vthread.cc,v 1.21 2001/04/03 03:18:34 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "vthread.h"
|
# include "vthread.h"
|
||||||
|
|
@ -475,7 +475,7 @@ bool of_OR(vthread_t thr, vvp_code_t cp)
|
||||||
bool of_SET(vthread_t thr, vvp_code_t cp)
|
bool of_SET(vthread_t thr, vvp_code_t cp)
|
||||||
{
|
{
|
||||||
unsigned char bit_val = thr_get_bit(thr, cp->bit_idx1);
|
unsigned char bit_val = thr_get_bit(thr, cp->bit_idx1);
|
||||||
functor_set(cp->iptr, bit_val);
|
functor_set(cp->iptr, bit_val, true);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -504,6 +504,9 @@ bool of_WAIT(vthread_t thr, vvp_code_t cp)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vthread.cc,v $
|
* $Log: vthread.cc,v $
|
||||||
|
* Revision 1.21 2001/04/03 03:18:34 steve
|
||||||
|
* support functor_set push for blocking assignment.
|
||||||
|
*
|
||||||
* Revision 1.20 2001/04/01 22:25:33 steve
|
* Revision 1.20 2001/04/01 22:25:33 steve
|
||||||
* Add the reduction nor instruction.
|
* Add the reduction nor instruction.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue