iverilog/ivtest/ivltests/sv_array_cassign9.v

45 lines
763 B
Verilog

// Check that continuous assignments to unpacked arrays preserve delay.
module test;
reg failed;
wire delayed[0:1];
reg value[0:1];
assign #5 delayed = value;
`define check(val, exp) \
if (val !== exp) begin \
$display("FAILED(%0d). '%s' expected %b, got %b", `__LINE__, \
`"val`", exp, val); \
failed = 1'b1; \
end
initial begin
failed = 1'b0;
value[0] = 1'b1;
value[1] = 1'b0;
#5;
`check(delayed[0], 1'b1)
`check(delayed[1], 1'b0)
value[0] = 1'b0;
value[1] = 1'b1;
#4;
`check(delayed[0], 1'b1)
`check(delayed[1], 1'b0)
#1;
`check(delayed[0], 1'b0)
`check(delayed[1], 1'b1)
if (!failed) begin
$display("PASSED");
end
end
endmodule