1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed into the Public Domain, for any use,
// without warranty, 2019 by Driss Hafdi
// SPDX-License-Identifier: CC0-1.0
interface validData
(
input wire clk,
input wire rst
);
logic data;
logic valid;
modport sink
(
input data, valid, clk, rst
);
modport source
(
input clk, rst,
output data, valid
);
endinterface
module sinkMod
(
validData.sink ctrl,
output logic valid_data
);
always_ff @(posedge ctrl.clk) begin
if (ctrl.valid) valid_data <= ctrl.data;
end
endmodule
module sourceMod
(
validData.source ctrl
);
always_ff @(posedge ctrl.clk) begin
ctrl.data <= ~ctrl.data;
ctrl.valid <= ~ctrl.valid;
end
endmodule
module parentSourceMod
(
validData.sink ctrl
);
sourceMod source_i (.ctrl);
endmodule
module t (/*AUTOARG*/
// Outputs
data,
// Inputs
clk, rst
);
input clk;
input rst;
output logic data;
validData ctrl(.clk, .rst);
sinkMod sink_i (.ctrl, .valid_data(data));
parentSourceMod source_i (.ctrl);
initial begin
$write("*-* All Finished *-*\n");
$finish;
end
endmodule
|