From fad1620828bfc42428dbba21f41f1ff2ffa950cb Mon Sep 17 00:00:00 2001 From: steve Date: Sat, 20 May 2006 16:06:48 +0000 Subject: [PATCH] Replace assertions with error messages. --- synth2.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/synth2.cc b/synth2.cc index 106f85db5..613f3a077 100644 --- a/synth2.cc +++ b/synth2.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: synth2.cc,v 1.39.2.31 2006/05/18 01:47:12 steve Exp $" +#ident "$Id: synth2.cc,v 1.39.2.32 2006/05/20 16:06:48 steve Exp $" #endif # include "config.h" @@ -99,6 +99,13 @@ bool NetAssignBase::synth_async(Design*des, NetScope*scope, bool sync_flag, NetNet*accum_in) { NetNet*rsig = rval_->synthesize(des); + if (rsig == 0) { + cerr << get_line() << ": error: Cannot synthesize r-value " + << "expression of assignment." << endl; + des->errors += 1; + return false; + } + assert(rsig); unsigned roff = 0; @@ -1288,6 +1295,10 @@ bool NetBlock::synth_sync(Design*des, NetScope*scope, } while (cur != last_); + + if (flag == false) + return false; + /* Done. The large NetFF is no longer needed, as it has been taken up by the smaller NetFF devices. */ delete ff; @@ -1415,6 +1426,13 @@ bool NetCondit::synth_sync(Design*des, NetScope*scope, tmp.set(bit, asig->pin(bit).nexus()->driven_value()); } + if (!tmp.is_defined()) { + cerr << get_line() << ": internal error: " + << "True clause returns constant 'bx/'bz values" + << " which are not plausible for set/reset." << endl; + return false; + } + assert(tmp.is_defined()); if (tmp.is_zero()) { connect(ff->pin_Aclr(), rst->pin(0)); @@ -1836,6 +1854,9 @@ void synth2(Design*des) /* * $Log: synth2.cc,v $ + * Revision 1.39.2.32 2006/05/20 16:06:48 steve + * Replace assertions with error messages. + * * Revision 1.39.2.31 2006/05/18 01:47:12 steve * Fix synthesis of l-value bit select in block. *