iverilog/ivtest/ivltests/sv_uwire3.v

44 lines
769 B
Verilog

// output ports may be uwire, or even a variable, if wire-ness
// or variable-ness are not explicitly stated.
typedef struct packed {
logic [1:0] a;
logic [1:0] b;
} sample_t;
module main;
sample_t dst;
logic [1:0] src_a, src_b;
DUT dut(.out(dst), .x(src_a), .y(src_b));
initial begin
src_a = 1;
src_b = 2;
#1 /* wait for dst */;
if (dst.a !== 1) begin
$display("FAILED -- dst.a=%b (dst=%b)", dst.a, dst);
$finish;
end
if (dst.b !== 2) begin
$display("FAILED -- dst.b=%b (dst=%b)", dst.b, dst);
$finish;
end
$display("PASSED");
end
endmodule // main
module DUT(output sample_t out,
input logic [1:0] x, y);
always @* begin
out.a = x;
out.b = y;
end
endmodule