Give tri0 and tri1 their proper strengths.
This commit is contained in:
parent
7d494fd3d5
commit
ace6b0a767
|
|
@ -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.116 2001/12/15 01:54:38 steve Exp $"
|
#ident "$Id: compile.cc,v 1.117 2001/12/15 02:11:51 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "arith.h"
|
# include "arith.h"
|
||||||
|
|
@ -858,13 +858,13 @@ void compile_resolver(char*label, char*type, unsigned argc, struct symb_s*argv)
|
||||||
functor_t obj = 0;
|
functor_t obj = 0;
|
||||||
|
|
||||||
if (strcmp(type,"tri") == 0) {
|
if (strcmp(type,"tri") == 0) {
|
||||||
obj = new resolv_functor_s(3);
|
obj = new resolv_functor_s(HiZ);
|
||||||
|
|
||||||
} else if (strcmp(type,"tri0") == 0) {
|
} else if (strcmp(type,"tri0") == 0) {
|
||||||
obj = new resolv_functor_s(0);
|
obj = new resolv_functor_s(Pu0);
|
||||||
|
|
||||||
} else if (strcmp(type,"tri1") == 0) {
|
} else if (strcmp(type,"tri1") == 0) {
|
||||||
obj = new resolv_functor_s(1);
|
obj = new resolv_functor_s(Pu1);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "invalid resolver type: %s\n", type);
|
fprintf(stderr, "invalid resolver type: %s\n", type);
|
||||||
|
|
@ -1350,6 +1350,9 @@ vvp_ipoint_t debug_lookup_functor(const char*name)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: compile.cc,v $
|
* $Log: compile.cc,v $
|
||||||
|
* Revision 1.117 2001/12/15 02:11:51 steve
|
||||||
|
* Give tri0 and tri1 their proper strengths.
|
||||||
|
*
|
||||||
* Revision 1.116 2001/12/15 01:54:38 steve
|
* Revision 1.116 2001/12/15 01:54:38 steve
|
||||||
* Support tri0 and tri1 resolvers.
|
* Support tri0 and tri1 resolvers.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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.10 2001/12/15 01:54:39 steve Exp $"
|
#ident "$Id: resolv.cc,v 1.11 2001/12/15 02:11:51 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "resolv.h"
|
# include "resolv.h"
|
||||||
|
|
@ -133,11 +133,10 @@ static unsigned blend(unsigned a, unsigned b)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
resolv_functor_s::resolv_functor_s(unsigned hiz_value)
|
resolv_functor_s::resolv_functor_s(unsigned char pull)
|
||||||
{
|
{
|
||||||
istr[0]=istr[1]=istr[2]=istr[3]=StX;
|
istr[0]=istr[1]=istr[2]=istr[3]=StX;
|
||||||
assert(hiz_value < 4);
|
hiz_ = pull;
|
||||||
hiz_ = hiz_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resolv_functor_s::~resolv_functor_s()
|
resolv_functor_s::~resolv_functor_s()
|
||||||
|
|
@ -154,14 +153,15 @@ void resolv_functor_s::set(vvp_ipoint_t i, bool push, unsigned, unsigned str)
|
||||||
unsigned pp = ipoint_port(i);
|
unsigned pp = ipoint_port(i);
|
||||||
istr[pp] = str;
|
istr[pp] = str;
|
||||||
|
|
||||||
unsigned sval = istr[0];
|
unsigned sval = hiz_;
|
||||||
|
sval = blend(sval, istr[0]);
|
||||||
sval = blend(sval, istr[1]);
|
sval = blend(sval, istr[1]);
|
||||||
sval = blend(sval, istr[2]);
|
sval = blend(sval, istr[2]);
|
||||||
sval = blend(sval, istr[3]);
|
sval = blend(sval, istr[3]);
|
||||||
|
|
||||||
unsigned val;
|
unsigned val;
|
||||||
if (sval == HiZ) {
|
if (sval == HiZ) {
|
||||||
val = hiz_;
|
val = 3;
|
||||||
|
|
||||||
} else switch (sval & 0x88) {
|
} else switch (sval & 0x88) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
|
|
@ -187,6 +187,9 @@ void resolv_functor_s::set(vvp_ipoint_t i, bool push, unsigned, unsigned str)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: resolv.cc,v $
|
* $Log: resolv.cc,v $
|
||||||
|
* Revision 1.11 2001/12/15 02:11:51 steve
|
||||||
|
* Give tri0 and tri1 their proper strengths.
|
||||||
|
*
|
||||||
* Revision 1.10 2001/12/15 01:54:39 steve
|
* Revision 1.10 2001/12/15 01:54:39 steve
|
||||||
* Support tri0 and tri1 resolvers.
|
* Support tri0 and tri1 resolvers.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
15
vvp/resolv.h
15
vvp/resolv.h
|
|
@ -19,32 +19,35 @@
|
||||||
* 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.h,v 1.4 2001/12/15 01:54:39 steve Exp $"
|
#ident "$Id: resolv.h,v 1.5 2001/12/15 02:11:51 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "functor.h"
|
# include "functor.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This functor type resolves its inputs using the verilog method of
|
* This functor type resolves its inputs using the verilog method of
|
||||||
* combining signals, and outputs that resolved value. If the result
|
* combining signals, and outputs that resolved value. The puller
|
||||||
* is HiZ, then drive the hiz_value instead. This supports tri0 and
|
* value is also blended with the result. This helps with the
|
||||||
* tri1.
|
* implementation of tri0 and tri1, which have pull constants attached.
|
||||||
*/
|
*/
|
||||||
class resolv_functor_s: public functor_s {
|
class resolv_functor_s: public functor_s {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit resolv_functor_s(unsigned hiz_value);
|
explicit resolv_functor_s(unsigned char hiz_value);
|
||||||
~resolv_functor_s();
|
~resolv_functor_s();
|
||||||
|
|
||||||
virtual void set(vvp_ipoint_t i, bool push, unsigned val, unsigned str);
|
virtual void set(vvp_ipoint_t i, bool push, unsigned val, unsigned str);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
unsigned char istr[4];
|
unsigned char istr[4];
|
||||||
unsigned hiz_;
|
unsigned char hiz_;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: resolv.h,v $
|
* $Log: resolv.h,v $
|
||||||
|
* Revision 1.5 2001/12/15 02:11:51 steve
|
||||||
|
* Give tri0 and tri1 their proper strengths.
|
||||||
|
*
|
||||||
* Revision 1.4 2001/12/15 01:54:39 steve
|
* Revision 1.4 2001/12/15 01:54:39 steve
|
||||||
* Support tri0 and tri1 resolvers.
|
* Support tri0 and tri1 resolvers.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue