Fix detect of signal that is an array.
This commit is contained in:
parent
f9c1c02f8d
commit
890f592eec
|
|
@ -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: expression.c,v 1.5 2007/04/02 01:12:34 steve Exp $"
|
#ident "$Id: expression.c,v 1.6 2007/04/21 03:20:47 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -101,19 +101,26 @@ static void show_signal_expression(ivl_expr_t net, unsigned ind)
|
||||||
ivl_expr_t word = ivl_expr_oper1(net);
|
ivl_expr_t word = ivl_expr_oper1(net);
|
||||||
|
|
||||||
ivl_signal_t sig = ivl_expr_signal(net);
|
ivl_signal_t sig = ivl_expr_signal(net);
|
||||||
|
unsigned dimensions = ivl_signal_dimensions(sig);
|
||||||
unsigned word_count = ivl_signal_array_count(sig);
|
unsigned word_count = ivl_signal_array_count(sig);
|
||||||
|
|
||||||
|
if (dimensions == 0 && word_count != 1) {
|
||||||
|
fprintf(out, "%*sERROR: Word count = %u for non-array object\n",
|
||||||
|
ind, "", word_count);
|
||||||
|
stub_errors += 1;
|
||||||
|
}
|
||||||
|
|
||||||
fprintf(out, "%*s<signal=%s, words=%u, width=%u, %s type=%s>\n", ind, "",
|
fprintf(out, "%*s<signal=%s, words=%u, width=%u, %s type=%s>\n", ind, "",
|
||||||
ivl_expr_name(net), word_count, width, sign, vt);
|
ivl_expr_name(net), word_count, width, sign, vt);
|
||||||
|
|
||||||
/* If the expression refers to a signal array, then there must
|
/* If the expression refers to a signal array, then there must
|
||||||
also be a word select expression, and if the signal is not an
|
also be a word select expression, and if the signal is not an
|
||||||
array, there must NOT be a word expression. */
|
array, there must NOT be a word expression. */
|
||||||
if (word_count == 1 && word != 0) {
|
if (dimensions == 0 && word != 0) {
|
||||||
fprintf(out, "%*sERROR: Unexpected word expression\n", ind+2, "");
|
fprintf(out, "%*sERROR: Unexpected word expression\n", ind+2, "");
|
||||||
stub_errors += 1;
|
stub_errors += 1;
|
||||||
}
|
}
|
||||||
if (word_count > 1 && word == 0) {
|
if (dimensions >= 1 && word == 0) {
|
||||||
fprintf(out, "%*sERROR: Missing word expression\n", ind+2, "");
|
fprintf(out, "%*sERROR: Missing word expression\n", ind+2, "");
|
||||||
stub_errors += 1;
|
stub_errors += 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue