iverilog/ivtest/ivltests/pr2788686.v

77 lines
1.8 KiB
Verilog

module top;
reg pass;
reg [7:0] vec;
integer off;
time delay;
event trig;
initial begin
pass = 1'b1;
delay = 1;
// Assign before the vector (constant delay).
vec = 8'hff;
off = -1;
vec[off] <= #1 1'b0;
#2 if (vec !== 8'hff) begin
$display("Failed the before vector (C) test, expected 8'hff, got %h",
vec);
pass = 1'b0;
end
// Assign after the vector (constant delay).
vec = 8'hff;
off = 8;
vec[off] <= #1 1'b0;
#2 if (vec !== 8'hff) begin
$display("Failed the after vector (C) test, expected 8'hff, got %h",
vec);
pass = 1'b0;
end
// Assign before the vector (variable delay).
vec = 8'hff;
off = -1;
vec[off] <= #(delay) 1'b0;
#2 if (vec !== 8'hff) begin
$display("Failed the before vector (V) test, expected 8'hff, got %h",
vec);
pass = 1'b0;
end
// Assign after the vector (variable delay).
vec = 8'hff;
off = 8;
vec[off] <= #(delay) 1'b0;
#2 if (vec !== 8'hff) begin
$display("Failed the after vector (V) test, expected 8'hff, got %h",
vec);
pass = 1'b0;
end
// Assign before the vector (event trigger).
vec = 8'hff;
off = -1;
vec[off] <= @(trig) 1'b0;
->trig;
#1 if (vec !== 8'hff) begin
$display("Failed the before vector (E) test, expected 8'hff, got %h",
vec);
pass = 1'b0;
end
// Assign after the vector (event trigger).
vec = 8'hff;
off = 8;
vec[off] <= @(trig) 1'b0;
->trig;
#1 if (vec !== 8'hff) begin
$display("Failed the after vector (V) test, expected 8'hff, got %h",
vec);
pass = 1'b0;
end
if (pass) $display("PASSED");
end
endmodule