65 lines
1.3 KiB
Verilog
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
|