From babfd720743ae36ceecad6abd3b701a1ede3a680 Mon Sep 17 00:00:00 2001 From: Stephen Williams Date: Tue, 9 Mar 2010 18:22:31 -0800 Subject: [PATCH] Fix anyedge to not trigger on time-0 input of 'bx. This assumes that an input is initially 'bx, so a time-0 input of X need not trigger events. --- vvp/event.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/vvp/event.cc b/vvp/event.cc index 02e02c77b..516ac118c 100644 --- a/vvp/event.cc +++ b/vvp/event.cc @@ -377,7 +377,20 @@ bool vvp_fun_anyedge::recv_vec4_(vvp_net_ptr_t port, const vvp_vector4_t&bit, bool flag = false; if (old_bits.size() != bit.size()) { - flag = true; + if (old_bits.size() == 0) { + // Special case: If we've not seen any input yet + // (old_bits.size()==0) then replace it will a reference + // vector that is 'bx. Then compare that with the input + // to see if we are processing a change from 'bx. + old_bits = vvp_vector4_t(bit.size(), BIT4_X); + if (old_bits.eeq(bit)) + flag = false; + else + flag = true; + + } else { + flag = true; + } } else { for (unsigned idx = 0 ; idx < bit.size() ; idx += 1) {