verilator/test_regress/t/t_interface_generic_array2.v

72 lines
1.4 KiB
Systemverilog
Raw Normal View History

// 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
interface ifc;
int v;
endinterface
module GenericModule1D (
interface a[4]
);
initial begin
#1;
if (a[0].v != 'hdead) $stop;
if (a[1].v != 'hbeef) $stop;
a[2].v = 'hface;
a[3].v = 'hcafe;
end
endmodule
module GenericModule2D (
interface a[2][2]
);
initial begin
#3;
if (a[0][0].v != 'hdead) $stop;
a[0][1].v = 'hbeef;
if (a[1][0].v != 'hface) $stop;
a[1][1].v = 'hcafe;
end
endmodule
module GenericModuleRng (
interface a[5:3]
);
initial begin
#5;
if (a[3].v != 'hdead) $stop;
if (a[4].v != 'hbeef) $stop;
a[5].v = 'hface;
end
endmodule
module t;
ifc inf1d[4] ();
ifc inf2d[2][2] ();
ifc infrng[5:3] ();
GenericModule1D mod1d (inf1d);
GenericModule2D mod2d (inf2d);
GenericModuleRng modrng (infrng);
initial begin
inf1d[0].v = 'hdead;
inf1d[1].v = 'hbeef;
#2;
if (inf1d[2].v != 'hface) $stop;
if (inf1d[3].v != 'hcafe) $stop;
inf2d[0][0].v = 'hdead;
inf2d[1][0].v = 'hface;
#2;
if (inf2d[0][1].v != 'hbeef) $stop;
if (inf2d[1][1].v != 'hcafe) $stop;
infrng[3].v = 'hdead;
infrng[4].v = 'hbeef;
#2;
if (infrng[5].v != 'hface) $stop;
$write("*-* All Finished *-*\n");
$finish;
end
endmodule