iverilog/ivtest/ivltests/pr2725700a.v

65 lines
1.3 KiB
Verilog

module top;
reg pass;
wire out;
reg drive_val;
reg oe_n;
reg [1:0] pull_vec;
bufif0 (out, drive_val, oe_n);
assign (pull0, pull1) out = pull_vec[0];
initial begin
pass = 1'b1;
pull_vec = 2'b00;
oe_n = 1'b0;
// Drive is selected.
drive_val = 1'b0;
#1;
if (out !== drive_val) begin
$display("Failed to drive 0, got %b", out);
pass = 1'b0;
end
drive_val = 1'b1;
#1;
if (out !== drive_val) begin
$display("Failed to drive 1, got %b", out);
pass = 1'b0;
end
// The pull is selected (low).
oe_n = 1'b1;
drive_val = 1'b0;
#1;
if (out !== pull_vec[0]) begin
$display("Failed pull #1, expected 1'b0, got %b", out);
pass = 1'b0;
end
drive_val = 1'b1;
#1;
if (out !== pull_vec[0]) begin
$display("Failed pull #2, expected 1'b0, got %b", out);
pass = 1'b0;
end
// The pull is selected (high).
pull_vec = 2'b11;
drive_val = 1'b0;
#1;
if (out !== pull_vec[0]) begin
$display("Failed pull #3, expected 1'b1, got %b", out);
pass = 1'b0;
end
drive_val = 1'b1;
if (out !== pull_vec[0]) begin
$display("Failed pull #4, expected 1'b1, got %b", out);
pass = 1'b0;
end
if (pass) $display("PASSED");
end
endmodule