iverilog/ivtest/ivltests/inout4.v

46 lines
786 B
Verilog

module main;
wire [31:0] DB;
reg E;
X2 U (.DB(DB[31:8]), .E(E));
Y1 V (.DB(DB[7:0]), .E(E));
initial begin
E = 0;
#1 if (DB !== 32'hzzzzzzzz) begin
$display("FAILED -- DB=%b", DB);
$finish;
end
E = 1;
#1 if (DB !== 32'h9zzzzz87) begin
$display("FAILED -- DB=%b", DB);
$finish;
end
$display("PASSED");
end // initial begin
endmodule // main
module X2(inout wire [31:8] DB, input wire E);
X1 uu (.DB(DB[31:28]), .E(E));
endmodule // X2
module X1(inout wire [31:28] DB, input wire E);
wire foo = DB[31:28];
assign DB[31:28] = E? 4'b1001 : 4'bzzzz;
endmodule // sub
module Y1(inout wire [7:0] DB, input wire E);
wire foo = DB[7:0];
assign DB[7:0] = E? 8'h87 : 8'hzz;
endmodule // sub