verilator/test_regress/t/t_interface_param2.v

55 lines
1.0 KiB
Systemverilog

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2016 Adrian Wise
// SPDX-License-Identifier: CC0-1.0
//bug1104
module t (
input clk
);
simple_bus sb_intf (clk);
simple_bus #(.DWIDTH(16)) wide_intf (clk);
mem mem (sb_intf.slave);
cpu cpu (sb_intf.master);
mem memW (wide_intf.slave);
cpu cpuW (wide_intf.master);
endmodule
interface simple_bus #(
AWIDTH = 8,
DWIDTH = 8
) (
input logic clk
); // Define the interface
logic req, gnt;
logic [AWIDTH-1:0] addr;
logic [DWIDTH-1:0] data;
modport slave(input req, addr, clk, output gnt, input data);
modport master(input gnt, clk, output req, addr, output data);
initial begin
if (DWIDTH != 8 && DWIDTH != 16) $stop;
end
endinterface : simple_bus
module mem (
interface a
);
logic avail;
always @(posedge a.clk) a.gnt <= a.req & avail;
initial begin
$write("*-* All Finished *-*\n");
$finish;
end
endmodule
module cpu (
interface b
);
endmodule