UberDDR3/testbench/models/IOBUF_model.v

62 lines
1.6 KiB
Verilog
Executable File

`timescale 1 ps / 1 ps
module IOBUF_model (
output O,
inout IO,
input I,
input T
);
parameter IBUF_LOW_PWR = "TRUE";
parameter SLEW = "SLOW";
`ifdef NO_TEST_MODEL
parameter TEST_MODEL = 0;
`else
parameter TEST_MODEL = 1;
`endif
bufif0 T1 (IO, I, T);
buf B1 (O, IO);
generate
if(TEST_MODEL == 1) begin
reg unequal = 0;
wire O_test, IO_test;
bufif0 (IO_test, IO, 1'b0);
IOBUF #(
.IBUF_LOW_PWR("FALSE"), // Low Power - "TRUE", High Performance = "FALSE"
.SLEW("FAST") // Specify the output slew rate
) IOBUF_test_model (
.O(O_test),// Buffer output
.IO(IO_test), // Buffer inout port (connect directly to top-level port)
.I(I), // Buffer input
.T(T) // 3-state enable input, high=read, low=write
);
always @* begin
#1;
if((O !== O_test) && ($time > 500_000)) begin
$display("IOBUF MODEL O does not match: time = %t", $time);
unequal <= 1;
$stop;
end
if((IO != IO_test) && ($time > 500_000)) begin
$display("IOBUF MODEL IO does not match: time = %t", $time);
unequal <= 1;
$stop;
end
end
initial begin
$display("---------------------------------------- TESTING IOBUF Model ----------------------------------------");
end
end
endgenerate
endmodule