ハードウェアの一部を systemverilog でモデル化する必要があり、次のようになります。
2 つのトレッド (SV タスク) を並行して実行できます。
Thread:
1. get_resource_from_manager() [sema.get(1) ??]
2. repeat(until_finish)
3. do_work()
4. give_contorl_to_thread1() [sema.put(1) ??]
5. wait_for_thread1_to_return_control() [sema.get(1) ??]
6. continue_work()
7. endrepeat
8. do_some_cleanup()
9. exit()
両方のスレッドが同じ作業を行います。セマフォの使用を考えています。私は前にそれを使用したことがありません。スレッドが 5 行目でブロックされるというのは有効な仮定/事実ですか? 私が達成したかったのは、スレッド 1 が 4 行目のセマフォ put() を使用してスレッド 2 にリソースを放棄することです - > スレッド 2 がこのリソースを取得し、その作業を行い、最終的に put を使用して解放します。この間、スレッド 1 は 5 行目で get() 呼び出しのブロックを待機します。