Add support for reduction NOR.
This commit is contained in:
parent
a7f48c86e2
commit
4d8c0c79d6
|
|
@ -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: design_dump.cc,v 1.45 1999/09/30 02:43:01 steve Exp $"
|
#ident "$Id: design_dump.cc,v 1.46 1999/10/05 06:19:46 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -698,7 +698,15 @@ void NetEUFunc::dump(ostream&o) const
|
||||||
|
|
||||||
void NetEUnary::dump(ostream&o) const
|
void NetEUnary::dump(ostream&o) const
|
||||||
{
|
{
|
||||||
o << op_ << "(";
|
switch (op_) {
|
||||||
|
case 'N':
|
||||||
|
o << "~|";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
o << op_;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
o << "(";
|
||||||
expr_->dump(o);
|
expr_->dump(o);
|
||||||
o << ")";
|
o << ")";
|
||||||
}
|
}
|
||||||
|
|
@ -774,6 +782,9 @@ void Design::dump(ostream&o) const
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: design_dump.cc,v $
|
* $Log: design_dump.cc,v $
|
||||||
|
* Revision 1.46 1999/10/05 06:19:46 steve
|
||||||
|
* Add support for reduction NOR.
|
||||||
|
*
|
||||||
* Revision 1.45 1999/09/30 02:43:01 steve
|
* Revision 1.45 1999/09/30 02:43:01 steve
|
||||||
* Elaborate ~^ and ~| operators.
|
* Elaborate ~^ and ~| operators.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
11
elaborate.cc
11
elaborate.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: elaborate.cc,v 1.108 1999/10/05 02:00:06 steve Exp $"
|
#ident "$Id: elaborate.cc,v 1.109 1999/10/05 06:19:46 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -1867,6 +1867,12 @@ NetProc* PCondit::elaborate(Design*des, const string&path) const
|
||||||
// generate a comparison operator to get the result down to
|
// generate a comparison operator to get the result down to
|
||||||
// one bit. Turn <e> into <e> != 0;
|
// one bit. Turn <e> into <e> != 0;
|
||||||
|
|
||||||
|
if (expr->expr_width() < 1) {
|
||||||
|
cerr << get_line() << ": internal error: "
|
||||||
|
"incomprehensible expression width (0)." << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (! expr->set_width(1)) {
|
if (! expr->set_width(1)) {
|
||||||
assert(expr->expr_width() > 1);
|
assert(expr->expr_width() > 1);
|
||||||
verinum zero (verinum::V0, expr->expr_width());
|
verinum zero (verinum::V0, expr->expr_width());
|
||||||
|
|
@ -2547,6 +2553,9 @@ Design* elaborate(const map<string,Module*>&modules,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: elaborate.cc,v $
|
* $Log: elaborate.cc,v $
|
||||||
|
* Revision 1.109 1999/10/05 06:19:46 steve
|
||||||
|
* Add support for reduction NOR.
|
||||||
|
*
|
||||||
* Revision 1.108 1999/10/05 02:00:06 steve
|
* Revision 1.108 1999/10/05 02:00:06 steve
|
||||||
* sorry message for non-constant l-value bit select.
|
* sorry message for non-constant l-value bit select.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
13
set_width.cc
13
set_width.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: set_width.cc,v 1.5 1999/10/05 04:02:10 steve Exp $"
|
#ident "$Id: set_width.cc,v 1.6 1999/10/05 06:19:46 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -245,14 +245,8 @@ bool NetEUnary::set_width(unsigned w)
|
||||||
case '-':
|
case '-':
|
||||||
flag = expr_->set_width(w);
|
flag = expr_->set_width(w);
|
||||||
break;
|
break;
|
||||||
case '&':
|
|
||||||
case '!':
|
|
||||||
if (w != 1) {
|
|
||||||
flag = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
flag = false;
|
flag = expr_width() == w;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
expr_width(w);
|
expr_width(w);
|
||||||
|
|
@ -262,6 +256,9 @@ bool NetEUnary::set_width(unsigned w)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: set_width.cc,v $
|
* $Log: set_width.cc,v $
|
||||||
|
* Revision 1.6 1999/10/05 06:19:46 steve
|
||||||
|
* Add support for reduction NOR.
|
||||||
|
*
|
||||||
* Revision 1.5 1999/10/05 04:02:10 steve
|
* Revision 1.5 1999/10/05 04:02:10 steve
|
||||||
* Relaxed width handling for <= assignment.
|
* Relaxed width handling for <= assignment.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
26
t-vvm.cc
26
t-vvm.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: t-vvm.cc,v 1.57 1999/10/05 04:02:10 steve Exp $"
|
#ident "$Id: t-vvm.cc,v 1.58 1999/10/05 06:19:46 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include <iostream>
|
# include <iostream>
|
||||||
|
|
@ -309,28 +309,25 @@ void vvm_proc_rval::expr_unary(const NetEUnary*expr)
|
||||||
<< tname << " = ";
|
<< tname << " = ";
|
||||||
switch (expr->op()) {
|
switch (expr->op()) {
|
||||||
case '~':
|
case '~':
|
||||||
os_ << "vvm_unop_not(" << result << ");"
|
os_ << "vvm_unop_not(" << result << ");" << endl;
|
||||||
<< endl;
|
|
||||||
break;
|
break;
|
||||||
case '&':
|
case '&':
|
||||||
os_ << "vvm_unop_and(" << result << ");"
|
os_ << "vvm_unop_and(" << result << ");" << endl;
|
||||||
<< endl;
|
|
||||||
break;
|
break;
|
||||||
case '^':
|
case '^':
|
||||||
os_ << "vvm_unop_xor(" << result << ");"
|
os_ << "vvm_unop_xor(" << result << ");" << endl;
|
||||||
<< endl;
|
|
||||||
break;
|
break;
|
||||||
case '!':
|
case '!':
|
||||||
os_ << "vvm_unop_lnot(" << result << ");"
|
os_ << "vvm_unop_lnot(" << result << ");" << endl;
|
||||||
<< endl;
|
|
||||||
break;
|
break;
|
||||||
case '-':
|
case '-':
|
||||||
os_ << "vvm_unop_uminus(" << result << ");"
|
os_ << "vvm_unop_uminus(" << result << ");" << endl;
|
||||||
<< endl;
|
break;
|
||||||
|
case 'N':
|
||||||
|
os_ << "vvm_unop_nor(" << result << ");" << endl;
|
||||||
break;
|
break;
|
||||||
case 'X':
|
case 'X':
|
||||||
os_ << "vvm_unop_xnor(" << result << ");"
|
os_ << "vvm_unop_xnor(" << result << ");" << endl;
|
||||||
<< endl;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cerr << "vvm: Unhandled unary op `" << expr->op() << "'"
|
cerr << "vvm: Unhandled unary op `" << expr->op() << "'"
|
||||||
|
|
@ -1681,6 +1678,9 @@ extern const struct target tgt_vvm = {
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
* $Log: t-vvm.cc,v $
|
* $Log: t-vvm.cc,v $
|
||||||
|
* Revision 1.58 1999/10/05 06:19:46 steve
|
||||||
|
* Add support for reduction NOR.
|
||||||
|
*
|
||||||
* Revision 1.57 1999/10/05 04:02:10 steve
|
* Revision 1.57 1999/10/05 04:02:10 steve
|
||||||
* Relaxed width handling for <= assignment.
|
* Relaxed width handling for <= assignment.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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: vvm_func.h,v 1.13 1999/10/01 15:26:29 steve Exp $"
|
#ident "$Id: vvm_func.h,v 1.14 1999/10/05 06:19:47 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "vvm.h"
|
# include "vvm.h"
|
||||||
|
|
@ -78,6 +78,13 @@ vvm_bitset_t<1> vvm_unop_or(const vvm_bitset_t<WIDTH>&r)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <unsigned WIDTH>
|
||||||
|
vvm_bitset_t<1> vvm_unop_nor(const vvm_bitset_t<WIDTH>&r)
|
||||||
|
{
|
||||||
|
vvm_bitset_t<1>res = vvm_unop_or(r);
|
||||||
|
return vvm_unop_not(res);
|
||||||
|
}
|
||||||
|
|
||||||
template <unsigned WIDTH>
|
template <unsigned WIDTH>
|
||||||
vvm_bitset_t<1> vvm_unop_lnot(const vvm_bitset_t<WIDTH>&r)
|
vvm_bitset_t<1> vvm_unop_lnot(const vvm_bitset_t<WIDTH>&r)
|
||||||
{
|
{
|
||||||
|
|
@ -601,6 +608,9 @@ vvm_bitset_t<W> vvm_ternary(vvm_bit_t c, const vvm_bitset_t<W>&t,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vvm_func.h,v $
|
* $Log: vvm_func.h,v $
|
||||||
|
* Revision 1.14 1999/10/05 06:19:47 steve
|
||||||
|
* Add support for reduction NOR.
|
||||||
|
*
|
||||||
* Revision 1.13 1999/10/01 15:26:29 steve
|
* Revision 1.13 1999/10/01 15:26:29 steve
|
||||||
* Add some vvm operators from Eric Aardoom.
|
* Add some vvm operators from Eric Aardoom.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue