diff --git a/elab_net.cc b/elab_net.cc index 289f6aefe..fd945b54f 100644 --- a/elab_net.cc +++ b/elab_net.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_CVS_IDENT -#ident "$Id: elab_net.cc,v 1.194 2007/01/20 02:10:45 steve Exp $" +#ident "$Id: elab_net.cc,v 1.195 2007/01/31 04:21:10 steve Exp $" #endif # include "config.h" @@ -28,6 +28,7 @@ # include "compiler.h" # include +# include "ivl_assert.h" /* * This is a state flag that determines whether an elaborate_net must @@ -1742,9 +1743,9 @@ NetNet* PEIdent::elaborate_net_array_(Design*des, NetScope*scope, Link::strength_t drive0, Link::strength_t drive1) const { - assert(msb_ == 0); - assert(lsb_ == 0); - assert(idx_.size() == 1); + ivl_assert(*this, msb_ == 0); + ivl_assert(*this, lsb_ == 0); + ivl_assert(*this, idx_.size() == 1); NetExpr*index_ex = elab_and_eval(des, scope, idx_[0], -1); if (index_ex == 0) @@ -2894,6 +2895,9 @@ NetNet* PEUnary::elaborate_net(Design*des, NetScope*scope, /* * $Log: elab_net.cc,v $ + * Revision 1.195 2007/01/31 04:21:10 steve + * Add method to bind assertions to verilog source lines. + * * Revision 1.194 2007/01/20 02:10:45 steve * Get argument widths right for shift results. * diff --git a/ivl_assert.h b/ivl_assert.h new file mode 100644 index 000000000..503e148b6 --- /dev/null +++ b/ivl_assert.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2007 Stephen Williams (steve@icarus.com) + * + * This source code is free software; you can redistribute it + * and/or modify it in source code form under the terms of the GNU + * General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ +#ifdef HAVE_CVS_IDENT +#ident "$Id: ivl_assert.h,v 1.1 2007/01/31 04:21:10 steve Exp $" +#endif + +#ifndef __ivl_assert_h +#define __ivl_assert_h + +# include + +#define ivl_assert(tok, expression) \ + do { \ + if (! (expression)) \ + __ivl_assert(#expression, tok, __FILE__, __LINE__); \ + } while(0) + +#define __ivl_assert(expression, tok, file, line) \ + do { \ + cerr << (tok).get_line() << ": assert: " \ + << file << ":" << line \ + << ": failed assertion " << (expression) << endl; \ + abort(); \ + } while(0) + + +#endif