Fix @* to correctly handle non-input nets.
commitdbce0cb05ad159be22d645b7b465c965472c07f1
authorCary R <cygcary@yahoo.com>
Wed, 19 Sep 2007 18:32:01 +0000 (19 11:32 -0700)
committerStephen Williams <steve@icarus.com>
Thu, 8 Nov 2007 04:00:05 +0000 (7 20:00 -0800)
treeca994bcfdad12199f325b76ce44a7823c8317655
parent9a96d80a9e194257bdd1dcda47a60606c7f407e7
Fix @* to correctly handle non-input nets.

@* was only expanding to input nets. nex_input() for blocks was removing
any output net that was also an input. There was also a bug in how output
nets were removed. Only outputs currently defined were removed from the
input list.

always @(*) begin
  y = a;
  z = y;
end

would report "a" as an input. While

always @(*) begin
  z = y;
  y = a;
end

would report both "a" and "y" as inputs.

To fix this all nex_inputs now take a flag that when true (the default)
correctly removes any output from the input list. Both the above cases
will now return "a". If the flag is false outputs which are also inputs
will be included in the input list. This is what the @* elaboration code
uses to get the correct sensitivity list.
elaborate.cc
net_nex_input.cc
netlist.h