Add debug dumps for vectors, and fix vvp_scaler_t make from BIT4_X values.
This commit is contained in:
parent
4fce321900
commit
355ead0002
|
|
@ -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: vthread.cc,v 1.127 2005/01/28 05:34:25 steve Exp $"
|
#ident "$Id: vthread.cc,v 1.128 2005/02/12 06:13:22 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -1480,16 +1480,16 @@ bool of_INV(vthread_t thr, vvp_code_t cp)
|
||||||
{
|
{
|
||||||
assert(cp->bit_idx[0] >= 4);
|
assert(cp->bit_idx[0] >= 4);
|
||||||
for (unsigned idx = 0 ; idx < cp->bit_idx[1] ; idx += 1) {
|
for (unsigned idx = 0 ; idx < cp->bit_idx[1] ; idx += 1) {
|
||||||
unsigned val = thr_get_bit(thr, cp->bit_idx[0]+idx);
|
vvp_bit4_t val = thr_get_bit(thr, cp->bit_idx[0]+idx);
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case 0:
|
case BIT4_0:
|
||||||
val = 1;
|
val = BIT4_1;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case BIT4_1:
|
||||||
val = 0;
|
val = BIT4_0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
val = 2;
|
val = BIT4_X;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
thr_put_bit(thr, cp->bit_idx[0]+idx, val);
|
thr_put_bit(thr, cp->bit_idx[0]+idx, val);
|
||||||
|
|
@ -3067,6 +3067,9 @@ bool of_JOIN_UFUNC(vthread_t thr, vvp_code_t cp)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vthread.cc,v $
|
* $Log: vthread.cc,v $
|
||||||
|
* Revision 1.128 2005/02/12 06:13:22 steve
|
||||||
|
* Add debug dumps for vectors, and fix vvp_scaler_t make from BIT4_X values.
|
||||||
|
*
|
||||||
* Revision 1.127 2005/01/28 05:34:25 steve
|
* Revision 1.127 2005/01/28 05:34:25 steve
|
||||||
* Add vector4 implementation of .arith/mult.
|
* Add vector4 implementation of .arith/mult.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ident "$Id: vvp_net.cc,v 1.15 2005/02/10 04:54:41 steve Exp $"
|
#ident "$Id: vvp_net.cc,v 1.16 2005/02/12 06:13:22 steve Exp $"
|
||||||
|
|
||||||
# include "vvp_net.h"
|
# include "vvp_net.h"
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
|
|
@ -549,6 +549,17 @@ void vvp_vector8_t::set_bit(unsigned idx, vvp_scaler_t val)
|
||||||
bits_[idx] = val;
|
bits_[idx] = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vvp_vector8_t::dump(FILE*out)
|
||||||
|
{
|
||||||
|
fprintf(out, "C8<");
|
||||||
|
for (unsigned idx = 0 ; idx < size() ; idx += 1) {
|
||||||
|
vvp_scaler_t tmp = value(size()-idx-1);
|
||||||
|
tmp.dump(out);
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(out,">");
|
||||||
|
}
|
||||||
|
|
||||||
vvp_net_fun_t::vvp_net_fun_t()
|
vvp_net_fun_t::vvp_net_fun_t()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -768,8 +779,8 @@ vvp_bit4_t vvp_fun_signal::value(unsigned idx) const
|
||||||
# define STREN1(v) ( ((v)&0x80)? ((v)&0xf0) : (0x70 - ((v)&0xf0)) )
|
# define STREN1(v) ( ((v)&0x80)? ((v)&0xf0) : (0x70 - ((v)&0xf0)) )
|
||||||
# define STREN0(v) ( ((v)&0x08)? ((v)&0x0f) : (0x07 - ((v)&0x0f)) )
|
# define STREN0(v) ( ((v)&0x08)? ((v)&0x0f) : (0x07 - ((v)&0x0f)) )
|
||||||
#else
|
#else
|
||||||
# define STREN1(v) ((v)&0xf0)
|
# define STREN1(v) (((v)&0x70) >> 4)
|
||||||
# define STREN0(v) ((v)&0x0f)
|
# define STREN0(v) ((v)&0x07)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
vvp_scaler_t::vvp_scaler_t(vvp_bit4_t val, unsigned str)
|
vvp_scaler_t::vvp_scaler_t(vvp_bit4_t val, unsigned str)
|
||||||
|
|
@ -785,6 +796,7 @@ vvp_scaler_t::vvp_scaler_t(vvp_bit4_t val, unsigned str)
|
||||||
break;
|
break;
|
||||||
case BIT4_X:
|
case BIT4_X:
|
||||||
value_ = str | (str<<4) | 0x80;
|
value_ = str | (str<<4) | 0x80;
|
||||||
|
break;
|
||||||
case BIT4_Z:
|
case BIT4_Z:
|
||||||
value_ = 0;
|
value_ = 0;
|
||||||
break;
|
break;
|
||||||
|
|
@ -832,6 +844,25 @@ vvp_bit4_t vvp_scaler_t::value() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vvp_scaler_t::dump(FILE*out)
|
||||||
|
{
|
||||||
|
fprintf(out, "%01u%01u", STREN0(value_), STREN1(value_));
|
||||||
|
switch (value()) {
|
||||||
|
case BIT4_0:
|
||||||
|
fprintf(out, "0");
|
||||||
|
break;
|
||||||
|
case BIT4_1:
|
||||||
|
fprintf(out, "1");
|
||||||
|
break;
|
||||||
|
case BIT4_X:
|
||||||
|
fprintf(out, "x");
|
||||||
|
break;
|
||||||
|
case BIT4_Z:
|
||||||
|
fprintf(out, "z");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
vvp_scaler_t resolve(vvp_scaler_t a, vvp_scaler_t b)
|
vvp_scaler_t resolve(vvp_scaler_t a, vvp_scaler_t b)
|
||||||
{
|
{
|
||||||
// If the value is 0, that is the same as HiZ. In that case,
|
// If the value is 0, that is the same as HiZ. In that case,
|
||||||
|
|
@ -1067,6 +1098,9 @@ vvp_bit4_t compare_gtge_signed(const vvp_vector4_t&a,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vvp_net.cc,v $
|
* $Log: vvp_net.cc,v $
|
||||||
|
* Revision 1.16 2005/02/12 06:13:22 steve
|
||||||
|
* Add debug dumps for vectors, and fix vvp_scaler_t make from BIT4_X values.
|
||||||
|
*
|
||||||
* Revision 1.15 2005/02/10 04:54:41 steve
|
* Revision 1.15 2005/02/10 04:54:41 steve
|
||||||
* Simplify vvp_scaler strength representation.
|
* Simplify vvp_scaler strength representation.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,12 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ident "$Id: vvp_net.h,v 1.14 2005/02/07 22:42:42 steve Exp $"
|
#ident "$Id: vvp_net.h,v 1.15 2005/02/12 06:13:22 steve Exp $"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
# include <assert.h>
|
# include <assert.h>
|
||||||
|
|
||||||
|
|
||||||
/* Data types */
|
/* Data types */
|
||||||
class vvp_scaler_t;
|
class vvp_scaler_t;
|
||||||
|
|
||||||
|
|
@ -171,6 +173,8 @@ class vvp_scaler_t {
|
||||||
// Get the vvp_bit4_t version of the value
|
// Get the vvp_bit4_t version of the value
|
||||||
vvp_bit4_t value() const;
|
vvp_bit4_t value() const;
|
||||||
|
|
||||||
|
void dump(FILE*fd);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
unsigned char value_;
|
unsigned char value_;
|
||||||
};
|
};
|
||||||
|
|
@ -204,6 +208,8 @@ class vvp_vector8_t {
|
||||||
vvp_scaler_t value(unsigned idx) const;
|
vvp_scaler_t value(unsigned idx) const;
|
||||||
void set_bit(unsigned idx, vvp_scaler_t val);
|
void set_bit(unsigned idx, vvp_scaler_t val);
|
||||||
|
|
||||||
|
void dump(FILE*fd);
|
||||||
|
|
||||||
vvp_vector8_t(const vvp_vector8_t&that);
|
vvp_vector8_t(const vvp_vector8_t&that);
|
||||||
vvp_vector8_t& operator= (const vvp_vector8_t&that);
|
vvp_vector8_t& operator= (const vvp_vector8_t&that);
|
||||||
|
|
||||||
|
|
@ -567,6 +573,9 @@ class vvp_fun_signal : public vvp_net_fun_t {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vvp_net.h,v $
|
* $Log: vvp_net.h,v $
|
||||||
|
* Revision 1.15 2005/02/12 06:13:22 steve
|
||||||
|
* Add debug dumps for vectors, and fix vvp_scaler_t make from BIT4_X values.
|
||||||
|
*
|
||||||
* Revision 1.14 2005/02/07 22:42:42 steve
|
* Revision 1.14 2005/02/07 22:42:42 steve
|
||||||
* Add .repeat functor and BIFIF functors.
|
* Add .repeat functor and BIFIF functors.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue