Handle short inputs to tasks. (Stephan Boettcher)

This commit is contained in:
steve 2001-06-23 00:30:42 +00:00
parent 1f1bfd0eab
commit 96d04bb5a0
1 changed files with 26 additions and 4 deletions

View File

@ -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: vvp_process.c,v 1.36 2001/06/18 03:10:34 steve Exp $" #ident "$Id: vvp_process.c,v 1.37 2001/06/23 00:30:42 steve Exp $"
#endif #endif
# include "vvp_priv.h" # include "vvp_priv.h"
@ -123,7 +123,6 @@ static int show_stmt_assign(ivl_statement_t net)
ivl_expr_t rval = ivl_stmt_rval(net); ivl_expr_t rval = ivl_stmt_rval(net);
ivl_memory_t mem; ivl_memory_t mem;
/* Handle the special case that the r-value is a constant. We /* Handle the special case that the r-value is a constant. We
can generate the %set statement directly, without any worry can generate the %set statement directly, without any worry
about generating code to evaluate the r-value expressions. */ about generating code to evaluate the r-value expressions. */
@ -131,6 +130,7 @@ static int show_stmt_assign(ivl_statement_t net)
if (ivl_expr_type(rval) == IVL_EX_NUMBER) { if (ivl_expr_type(rval) == IVL_EX_NUMBER) {
unsigned idx; unsigned idx;
const char*bits = ivl_expr_bits(rval); const char*bits = ivl_expr_bits(rval);
unsigned wid = ivl_expr_width(rval);
/* XXXX Only single l-value supported for now */ /* XXXX Only single l-value supported for now */
assert(ivl_stmt_lvals(net) == 1); assert(ivl_stmt_lvals(net) == 1);
@ -143,13 +143,22 @@ static int show_stmt_assign(ivl_statement_t net)
if (mem) if (mem)
draw_memory_index_expr(mem, ivl_lval_idx(lval)); draw_memory_index_expr(mem, ivl_lval_idx(lval));
for (idx = 0 ; idx < ivl_lval_pins(lval) ; idx += 1) if (wid > ivl_lval_pins(lval))
wid = ivl_lval_pins(lval);
for (idx = 0 ; idx < wid ; idx += 1)
if (mem) if (mem)
set_to_memory(mem, idx, bitchar_to_idx(bits[idx])); set_to_memory(mem, idx, bitchar_to_idx(bits[idx]));
else else
set_to_nexus(ivl_lval_pin(lval, idx), set_to_nexus(ivl_lval_pin(lval, idx),
bitchar_to_idx(bits[idx])); bitchar_to_idx(bits[idx]));
for (idx = wid ; idx < ivl_lval_pins(lval) ; idx += 1)
if (mem)
set_to_memory(mem, idx, 0);
else
set_to_nexus(ivl_lval_pin(lval, idx), 0);
return 0; return 0;
} }
@ -212,6 +221,7 @@ static int show_stmt_assign_nb(ivl_statement_t net)
if (ivl_expr_type(rval) == IVL_EX_NUMBER) { if (ivl_expr_type(rval) == IVL_EX_NUMBER) {
unsigned idx; unsigned idx;
const char*bits = ivl_expr_bits(rval); const char*bits = ivl_expr_bits(rval);
unsigned wid = ivl_expr_width(rval);
/* XXXX Only single l-value supported for now */ /* XXXX Only single l-value supported for now */
assert(ivl_stmt_lvals(net) == 1); assert(ivl_stmt_lvals(net) == 1);
@ -224,7 +234,10 @@ static int show_stmt_assign_nb(ivl_statement_t net)
if (mem) if (mem)
draw_memory_index_expr(mem, ivl_lval_idx(lval)); draw_memory_index_expr(mem, ivl_lval_idx(lval));
for (idx = 0 ; idx < ivl_lval_pins(lval) ; idx += 1) if (wid > ivl_lval_pins(lval))
wid = ivl_lval_pins(lval);
for (idx = 0 ; idx < wid ; idx += 1)
if (mem) if (mem)
assign_to_memory(mem, idx, assign_to_memory(mem, idx,
bitchar_to_idx(bits[idx]), delay); bitchar_to_idx(bits[idx]), delay);
@ -232,6 +245,12 @@ static int show_stmt_assign_nb(ivl_statement_t net)
assign_to_nexus(ivl_lval_pin(lval, idx), assign_to_nexus(ivl_lval_pin(lval, idx),
bitchar_to_idx(bits[idx]), delay); bitchar_to_idx(bits[idx]), delay);
for (idx = wid ; idx < ivl_lval_pins(lval) ; idx += 1)
if (mem)
assign_to_memory(mem, idx, 0, delay);
else
assign_to_nexus(ivl_lval_pin(lval, idx), 0, delay);
return 0; return 0;
} }
@ -864,6 +883,9 @@ int draw_func_definition(ivl_scope_t scope)
/* /*
* $Log: vvp_process.c,v $ * $Log: vvp_process.c,v $
* Revision 1.37 2001/06/23 00:30:42 steve
* Handle short inputs to tasks. (Stephan Boettcher)
*
* Revision 1.36 2001/06/18 03:10:34 steve * Revision 1.36 2001/06/18 03:10:34 steve
* 1. Logic with more than 4 inputs * 1. Logic with more than 4 inputs
* 2. Id and name mangling * 2. Id and name mangling