|
From: Larry D. <ldo...@re...> - 2008-04-02 21:38:51
|
Cary - On Wed, Apr 02, 2008 at 02:29:45PM -0700, Cary R. wrote: > --- Larry Doolittle <ldo...@re...> wrote: > > > The attached code shows a change in behavior in recent > > (as of March 20) git. It triggered a failure in my > > inverse regression test. I need to know if my Verilog > > assumptions are wrong, or the new Icarus behavior is wrong. > > This does seem to be slightly incorrect. Section 3.6 in 1364-2001 implies > that the initial value should be z, but then the driver value should > propagate. Given that this hasn't happened after #10 implies that the x is > not propagating after the initial z. Icarus, both before and after the patch in question, gives "x" for the uninitialized fdbk_err_wide (sorry about the strange names, this was stripped from a larger code base and I didn't bother to change names). The behavior change is how "x" propagates through the ternary expression. The old result (that I expect) is it comes out "x". After the commit in question, it comes out "z". I din't try to isolate this to a particular mux input; in this case all three mux inputs are derived from fdbk_err_wide. My wild guess is that the confusion comes from the control input to the mux. - Larry |