iverilog/ivtest/ivltests/br_gh307.v

38 lines
689 B
Verilog

typedef struct packed {
logic b;
} single_bit;
typedef struct packed {
single_bit b1;
single_bit b2;
} two_bits;
module simple(input two_bits b2in,
output two_bits b2out);
assign b2out.b1.b = b2in.b1.b;
endmodule // simple
module main;
two_bits src;
wire two_bits dst;
simple copy(src, dst);
assign dst.b2.b = src.b2.b;
initial begin
src.b1.b = 1'b1;
src.b2.b = 1'b0;
#1 ; // Let values settle.
$display("src=%b (s.b. 10), dst=%b (s.b. 10)", src, dst);
if (src !== 2'b10 || dst !== 2'b10) begin
$display("FAILED");
$finish;
end
$display("PASSED");
$finish;
end
endmodule // main