Handle select of darray signals in general expressions.
This commit is contained in:
parent
a2d980540d
commit
e071bd81ee
|
|
@ -2479,6 +2479,17 @@ static struct vector_info draw_select_signal(ivl_expr_t expr,
|
||||||
unsigned use_word = 0;
|
unsigned use_word = 0;
|
||||||
unsigned use_wid, lab_x, lab_end;
|
unsigned use_wid, lab_x, lab_end;
|
||||||
|
|
||||||
|
/* Special case: the sub expression is a DARRAY variable, so
|
||||||
|
do a dynamic array word load. */
|
||||||
|
if (ivl_signal_data_type(sig) == IVL_VT_DARRAY) {
|
||||||
|
res.base = allocate_vector(wid);
|
||||||
|
res.wid = wid;
|
||||||
|
draw_eval_expr_into_integer(bit_idx, 3);
|
||||||
|
fprintf(vvp_out, " %%load/dar %u, v%p_0, %u;\n",
|
||||||
|
res.base, sig, res.wid);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
/* If this is an access to an array, try to get the index as a
|
/* If this is an access to an array, try to get the index as a
|
||||||
constant. If it is (and the array is not a reg array then
|
constant. If it is (and the array is not a reg array then
|
||||||
this reduces to a signal access and we stay here. If it is
|
this reduces to a signal access and we stay here. If it is
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue