verilator/test_regress/t/t_interface_array3.v

55 lines
1.1 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 Wilson Snyder.
// SPDX-License-Identifier: CC0-1.0
interface my_ifc ();
logic sig;
modport master ( output sig );
modport slave ( input sig );
endinterface
package my_pkg;
typedef virtual my_ifc my_vif;
function void my_func;
input my_vif in_vif;
begin
in_vif.sig = 1'b1;
end
endfunction
endpackage
module dut (input logic clk, my_ifc.slave sif[2]);
generate
genvar i;
for (i=0; i<2; i++) begin
always_ff @( posedge clk ) begin
if (sif[i].sig == 1'b1) $display("Hello World %0d", i);
end
end
endgenerate
endmodule
module t;
import my_pkg::*;
logic clk;
my_ifc sif[2] ();
dut DUT (.*);
initial begin
clk = 0;
forever #(5) clk = ~clk;
end
initial begin
repeat (4) @(posedge clk);
my_func(sif[0]);
my_func(sif[1]);
$write("*-* All Finished *-*\n");
$finish;
end
endmodule