From e8225bd39e53a0b0de7b66c26db60523bdd39d36 Mon Sep 17 00:00:00 2001 From: Martin Whitaker Date: Tue, 30 Jun 2015 21:45:27 +0100 Subject: [PATCH] Fix for GitHub issue #73 - allow for island ports in vpi_put_value. In the special case that a net is attached to an island port, values driven onto the net via the VPI must go to the functor, not the filter, so that they propagate through the island. --- vvp/vpi_signal.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vvp/vpi_signal.cc b/vvp/vpi_signal.cc index 053829a95..aed3138c5 100644 --- a/vvp/vpi_signal.cc +++ b/vvp/vpi_signal.cc @@ -25,6 +25,7 @@ # include "compile.h" # include "vpi_priv.h" # include "vvp_net_sig.h" +# include "vvp_island.h" # include "schedule.h" # include "statistics.h" # include "config.h" @@ -830,7 +831,7 @@ static vpiHandle signal_put_value(vpiHandle ref, s_vpi_value*vp, int flags) if (flags == vpiForceFlag) { vvp_vector2_t mask (vvp_vector2_t::FILL1, wid); rfp->node->force_vec4(val, mask); - } else if (net_flag) { + } else if (net_flag && !dynamic_cast(rfp->node->fun)) { rfp->node->send_vec4(val, vthread_get_wt_context()); } else { vvp_send_vec4(dest, val, vthread_get_wt_context());