I wrote a module that should "or" a signal with a delayed version of itself. But, when I simulate my design, the output always goes x instead of 1. I have no idea why. Here is how I wrote my design:
module DUT(
input data_in,
input dw,
input rst,
output error
);
wire Edge;
wire #4 delayed_data_in;
assign Edge = data_in ^ delayed_data_in;
assign delayed_data_in = data_in;
always@(dw,Edge,rst) //Latch 1
begin
if(rst)
begin
error <= 0;
end
else if(dw)
begin
error <= Edge;
end
end
endmodule
The delayed version behaves as expected, but Edge
and error
just go to "x" instead of 1.