diff --git a/tgt-vvp/draw_mux.c b/tgt-vvp/draw_mux.c index 73cb075f6..019ef32b7 100644 --- a/tgt-vvp/draw_mux.c +++ b/tgt-vvp/draw_mux.c @@ -57,10 +57,14 @@ static void draw_lpm_mux_ab(ivl_lpm_t net, const char*muxz) get_number_immediate(d_rise), net); } + const char* input[3]; + input[0] = draw_net_input(ivl_lpm_data(net,0)); + input[1] = draw_net_input(ivl_lpm_data(net,1)); + input[2] = draw_net_input(ivl_lpm_select(net)); fprintf(vvp_out, "L_%p%s .functor %s %u", net, dly, muxz, width); - fprintf(vvp_out, ", %s", draw_input_from_net(ivl_lpm_data(net,0))); - fprintf(vvp_out, ", %s", draw_input_from_net(ivl_lpm_data(net,1))); - fprintf(vvp_out, ", %s", draw_input_from_net(ivl_lpm_select(net))); + fprintf(vvp_out, ", %s", input[0]); + fprintf(vvp_out, ", %s", input[1]); + fprintf(vvp_out, ", %s", input[2]); fprintf(vvp_out, ", C4<>;\n"); } diff --git a/tgt-vvp/vvp_scope.c b/tgt-vvp/vvp_scope.c index 7b92a343b..e3ff3e77c 100644 --- a/tgt-vvp/vvp_scope.c +++ b/tgt-vvp/vvp_scope.c @@ -994,6 +994,8 @@ const char*draw_input_from_net(ivl_nexus_t nex) ivl_signal_t sig = signal_of_nexus(nex, &word); if (sig == 0) return draw_net_input(nex); + if (ivl_signal_type(sig)==IVL_SIT_REG && ivl_signal_dimensions(sig)>0) + return draw_net_input(nex); snprintf(result, sizeof result, "v%p_%u", sig, word); return result;