verilator/test_regress/t/t_interface_virtual_timing.v
2023-12-04 22:11:07 -05:00

43 lines
1011 B
Systemverilog

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2023 by Antmicro Ltd.
// SPDX-License-Identifier: CC0-1.0
interface Bus;
logic [15:0] data;
endinterface
module t;
Bus intf1(), intf2();
virtual Bus vif1 = intf1, vif2 = intf2;
task assign_to_vif2();
if ($c("0")) return;
#1 vif2.data = 'hfafa; #1;
endtask
initial forever begin
intf1.data = 'hdead;
if ($c("1")) begin
#1 vif2.data = 'hbeef; #1;
end
intf1.data = 'hcafe;
if ($c("0")); else begin
#1 vif2.data = 'hface; #1;
end
intf1.data = 'hfeed;
while ($time < 5) begin
#1 vif2.data = 'hdeed; #1;
end
intf1.data = 'hdeaf;
assign_to_vif2;
intf1.data = 'hbebe;
#1 $write("*-* All Finished *-*\n");
$finish;
end
always_comb if ($time < 9) $write("vif1.data==%h\n", vif1.data);
always_comb if ($time < 9) $write("intf2.data==%h\n", intf2.data);
endmodule