最近、systemc を勉強していて、セマフォ チャネルについて質問があります。
asic world ( http://www.asic-world.com/systemc/channels3.html )で例を見つけましたが、少し混乱しています。
この例の最初の 1ns で、最初のプロセス bus_semaphore() が機能し、「@1 ns ....」という 2 行を出力できます。同時に、セマフォの値 (bus) が 2 に変化し (bus.post())、次のクロック ポーズエッジを待ちます。
2 番目のプロセスである do_read() も 1ns で、最初の "@" 行は正常に出力できますが、次の if ステートメントの trywait() はどうでしょうか。最初のプロセスと 2 番目のプロセスは同時に実行する必要があります。 2番目のプロセスの行が印刷されます。
しかし、ページの下部に示されている答えは、bus.post() が実行された後に trywait() が実行され、2 番目の "@..." ステートメントが出力されることを意味します。bus.post() の実行後に trywait() が実行されることを確認するにはどうすればよいですか?
前もって感謝します!