[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gEDA-dev: icarus verilog wor net simulation question
Hi,
I didn't see this in the FAQ or in a quick browse of the mailing list
archives, but feel free to flame me if this has been asked before.
I have the following code.
module blah ( in, out );
input in;
output out;
assign out = in;
endmodule
module top;
wor total;
blah blah1 ( 1'b0, total );
blah blah2 ( 1'b1, total );
endmodule
Reading the value of blah1.in gives me, confusingly, a 1.
What I'm guessing is happening is that due to the assign, blah1.in,
blah1.out, blah2.in and blah2.out end up being merged into the same
net.
I understand that it's not easy in a hardware implementation to find
out which of the inputs or a wor net is causing the net to be driven
high, but it would be nice if the simulator could give me this info.
If I change the assign to the following, I do get the info I'm
looking for (probably due to defeating some optimisation.)
assign out = ~(~in);
Is where a way of achieving the same result without having to add
~(~x) hacks?
(Using Icarus verilog 0.8.4 on a Linux box, using gtkwave to look
at the VCDs.)
thanks,
Lennert
_______________________________________________
geda-dev mailing list
geda-dev@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev