57 lines
1.4 KiB
Systemverilog
57 lines
1.4 KiB
Systemverilog
// DESCRIPTION: Verilator: Verilog Test module
|
|
//
|
|
// This file ONLY is placed under the Creative Commons Public Domain, for
|
|
// any use, without warranty, 2025 by Antmicro.
|
|
// SPDX-License-Identifier: CC0-1.0
|
|
|
|
class SubClass;
|
|
rand bit [2:0] field;
|
|
function new ();
|
|
field = 0;
|
|
endfunction
|
|
endclass
|
|
class MyClass;
|
|
SubClass sc_inst2[$];
|
|
function new ();
|
|
SubClass inst = new;
|
|
sc_inst2 = { inst };
|
|
endfunction
|
|
endclass;
|
|
class Deep;
|
|
MyClass sc_inst1;
|
|
function new ();
|
|
sc_inst1 = new;
|
|
endfunction
|
|
endclass;
|
|
class WeNeedToGoDeeper;
|
|
Deep sc_inst;
|
|
function new ();
|
|
sc_inst = new;
|
|
endfunction
|
|
endclass;
|
|
|
|
module t;
|
|
initial begin
|
|
WeNeedToGoDeeper inst = new;
|
|
MyClass inst2 = new;
|
|
WeNeedToGoDeeper cl_inst[$] = { inst };
|
|
MyClass cl_inst2[$] = { inst2 };
|
|
repeat(10) begin
|
|
if (cl_inst[0].sc_inst.sc_inst1.sc_inst2[0].randomize() with {field inside {1, 2, 3};} == 0) begin
|
|
$stop;
|
|
end
|
|
if (cl_inst[0].sc_inst.sc_inst1.sc_inst2[0].field < 1 || cl_inst[0].sc_inst.sc_inst1.sc_inst2[0].field > 3) begin
|
|
$stop;
|
|
end
|
|
if (cl_inst2[0].sc_inst2[0].randomize() with {field inside {1, 2, 3};} == 0) begin
|
|
$stop;
|
|
end
|
|
if (cl_inst2[0].sc_inst2[0].field < 1 || cl_inst2[0].sc_inst2[0].field > 3) begin
|
|
$stop;
|
|
end
|
|
end
|
|
$write("*-* All Finished *-*\n");
|
|
$finish;
|
|
end
|
|
endmodule
|