72 lines
1.4 KiB
Systemverilog
72 lines
1.4 KiB
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
|
|
|
|
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
|