// 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;
  semaphore s;

  // Stand-in for a task that should only be run by one thread at a time
  task automatic exclusive_task;
    $display("%0t", $time);
    #1;
  endtask

  task automatic call_exclusive_task;
    s.get(1);
    exclusive_task();
    s.put(1);
  endtask

  initial begin
    s = new(1);
    fork
      call_exclusive_task();
      call_exclusive_task();
      call_exclusive_task();
      call_exclusive_task();
    join

    $write("*-* All Finished *-*\n");
    $finish;
  end
endmodule
