verilator/test_regress/t/t_class_nested_split_var.v

41 lines
944 B
Systemverilog

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain
// SPDX-FileCopyrightText: 2026 Antmicro
// SPDX-License-Identifier: CC0-1.0
`ifdef VERILATOR
// The '$c(1)' is there to prevent inlining of the signal by V3Gate.
`define IMPURE_ONE ($c(1))
`else
// Use standard $random. The chance of getting 2 consecutive zeroes is negligible.
`define IMPURE_ONE (|($random | $random))
`endif
module t;
bit [2:0] y;
bit [2:0] z;
assign z[0] = 1'b1;
assign z[1] = !(y[0]);
assign z[2] = !(|y[1:0]);
class Foo;
bit foo;
task run();
foo = `IMPURE_ONE;
if (z !== 3'b001) begin
$error("Failed: got %0b, expected %0b", z, 3'b001);
end
if (foo != 1'b1) $stop;
endtask
endclass
Foo test;
initial begin
static Foo foo = new;
#10 y = 3'b111;
#1 foo.run();
$write("*-* All Finished *-*\n");
$finish;
end
endmodule