iverilog/ivtest/ivltests/bitsel10.v

70 lines
1.2 KiB
Verilog

module main;
wire [7:0] bus;
reg [7:0] HiZ;
assign bus = HiZ;
reg E;
reg D;
reg CLK;
BUFT drv (bus[0], D, E, CLK);
bufif0 drv0 (bus[0], D, E);
initial begin
HiZ = 8'hzz;
D = 1;
E = 1;
CLK = 0;
#1 CLK = 1;
#1 if (bus !== 8'bzzzzzzz1) begin
$display("FAILED");
$finish;
end
if (drv.D !== D) begin
$display("FAILED (D)");
$finish;
end
E = 0;
#1 if (bus !== 8'bzzzzzzz1) begin
$display("FAILED");
$finish;
end
D = 0;
CLK = 0;
#1 CLK = 1;
if (drv.D !== D) begin
$display("FAILED (D)");
$finish;
end
#1 D = 1;
#1 if (bus !== 8'bzzzzzzz1) begin
$display("FAILED");
$finish;
end
if (drv.D !== D) begin
$display("FAILED (D)");
$finish;
end
$display("bus=%b, D=%b, drv.D=%b, E=%b, drv.save=%b", bus, D, drv.D, E, drv.save);
$display("PASSED");
end // initial begin
endmodule // main
module BUFT(inout wire TO, input wire D, input wire E, input wire CLK);
reg save;
assign TO = E? save : 2'bz;
always @(posedge CLK)
save <= D;
endmodule // BUFT