// DESCRIPTION: Verilator: Verilog Test module // // This file ONLY is placed under the Creative Commons Public Domain. // SPDX-FileCopyrightText: 2024 Liam Braun // SPDX-License-Identifier: CC0-1.0 module t; mailbox #(int) m; task automatic test_get; int v; m.get(v); // Only one thread should be here at a time (mailbox empty) $display("mailbox read %0t", $time); #1; m.put(v); endtask task automatic test_put; int v; m.put(42); // Only one thread should be here at a time (mailbox full) $display("mailbox write %0t", $time); #1; m.get(v); endtask initial begin m = new(1); m.put(42); fork test_get(); test_get(); test_get(); join m = new(1); fork test_put(); test_put(); test_put(); join $write("*-* All Finished *-*\n"); $finish; end endmodule