verilator/test_regress/t/t_struct_pat_width.v
2017-09-11 19:18:58 -04:00

39 lines
888 B
Verilog

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed into the Public Domain, for any use,
// without warranty, 2016 by Wilson Snyder.
module t (clk);
input clk;
typedef struct packed {
logic [2:0] _foo;
logic [2:0] _bar;
} struct_t;
logic [2:0] meh;
struct_t param;
localparam integer twentyone = 21;
// verilator lint_off WIDTH
assign param = '{
_foo: twentyone % 8 + 1,
_bar: (twentyone / 8) + 1
};
assign meh = twentyone % 8 + 1;
// verilator lint_on WIDTH
always @ (posedge clk) begin
`ifdef TEST_VERBOSE
$display("param: %d, %d, %b, %d", param._foo, param._bar, param, meh);
`endif
if (param._foo != 6) $stop;
if (param._bar != 3) $stop;
if (param != 6'b110011) $stop;
if (meh != 6) $stop;
$write("*-* All Finished *-*\n");
$finish;
end
endmodule