sync
System Verilog 言語の Specman e に相当するものは何ですか。
Specman e@ event_indentifier
と同等だと理解しています。wait @ event
しかし、どうsync @ event
ですか?
sync
System Verilog 言語の Specman e に相当するものは何ですか。
Specman e@ event_indentifier
と同等だと理解しています。wait @ event
しかし、どうsync @ event
ですか?
名前付きイベントの場合、triggered
プロパティを使用できます。
event ev;
...
wait (ev.triggered);
完全な説明については、2012 SystemVerilog LRM の 15.5.3 章を参照してください。
IEEE 1647の13.1.1の一部は言う
同期アクションは待機アクションと似ていますが、待機アクションでは、実行を続行する前に TCM のサンプリング イベントの少なくとも 1 サイクルが常に必要になる点が異なります。同期アクションを使用すると、同じタイム ステップで実行を継続できます。
1647年から2008年のドラフトの一部
為にsync
TCM が同期アクションに達すると、その実行が一時停止されるため、他の TCM または一時停止された TCM 自体の実行をスケジュールできます。
為にwait
TCM が待機アクションに達すると、その実行が中断され、他の TCM の実行をスケジュールできるようになります。中断された TCM 自体はアイドル状態のままであり、サンプリング イベントが次に発生するまでスケジュールされません。
色々と比べていると思います。SystemVerilogはシミュレーション エンジンおよびカーネルであり、Specmanはカーネルへのアドオンまたはプラグインのようなもので、e言語で記述したものを監視およびチェックします。SystemVerilogでは、イベントはシミュレーション イベント用であり、Specmanは TCM プロセス用の独自のイベントも作成します。したがって、Specmanでは、独自の TCM プロセス スケジューリングがあります。を使用するsync
と、余分なサイクルなしで同期を行うことができます。wait
サンプリングサイクルに少なくとも 1 サイクルを使用して発生させます。もちろん、もしsync
そしてwait
には一時的な表現がありません。どちらも TCM のデフォルトのサンプリング イベントを使用し、1 つ以上のサイクルを持つことができます。
SystemVerilogもイベントベースのシミュレータです。各時間ステップにデルタ サイクルがあります。http://standards.ieee.org/getieee/1800/download/1800-2012.pdfでIEEE 1800-2012 SystemVerilog LRM をダウンロードできます。スケジューリング リファレンス アルゴリズムについては 4.5 を参照してください。ただし、ハードウェア モデリングではwait
、現在のシミュレーション タイム ステップでサイクル遅延をゼロにするための明示的な同期はありません。これは、シミュレーターがセンシティビティ リストを実行するプロセスを自動的にスケジュールするためです。SpecmanとSystemVerilogを比較する必要がある場合は、具体的にはSystemVerilog アサーション構文である必要があります。##0
SVA には、次のアサーション式の前にアサーション プロセスのサイクル遅延をゼロにする構文があります。