iverilog/ivtest/ivltests/br_gh316b.v

67 lines
939 B
Verilog

module dut(input EN1, input I1, output O1,
input EN2, input I2, output O2);
assign O1 = EN1 ? I1 : 1'bz;
assign O2 = EN2 ? I2 : 1'bz;
specify
(I1 => O1) = (2);
(EN1 *> O1) = (4);
(I2 => O2) = (3);
(EN2 *> O2) = (4);
endspecify
endmodule
module test();
reg EN1;
reg EN2;
reg I1;
reg I2;
tri O;
pulldown(O);
dut dut(EN1, I1, O, EN2, I2, O);
reg failed = 0;
initial begin
$monitor($time,,EN1,,I1,,EN2,,I2,,O);
EN1 = 0;
EN2 = 0;
#4;
#0 if (O !== 0) failed = 1;
I1 = 1;
I2 = 1;
#1;
EN1 = 1;
#3;
#0 if (O !== 0) failed = 1;
#1;
#0 if (O !== 1) failed = 1;
I1 = 0;
#1;
#0 if (O !== 1) failed = 1;
#1;
#0 if (O !== 0) failed = 1;
EN1 = 0;
EN2 = 1;
#3;
#0 if (O !== 0) failed = 1;
#1;
#0 if (O !== 1) failed = 1;
I2 = 0;
#2;
#0 if (O !== 1) failed = 1;
#1;
if (failed)
$display("FAILED");
else
$display("PASSED");
end
endmodule