web-dev-qa-db-ja.com

Verilogの$ stopと$ finishの違いは何ですか?

私はGUIシミュレータを使用していますが、どちらも同じことをしているようです。

25
Steven

$finishはシミュレーションを終了し、オペレーティングシステムに制御を戻します。

$stopはシミュレーションを一時停止し、シミュレータをインタラクティブモードにします。

32
user285321

IEEE Standard for Verilog(1364-2005、Section 17.4、 "Simulation control system tasks")に従って、$stopはシミュレーションを一時停止し、$finishは、シミュレータを終了し、制御をホストオペレーティングシステムに戻す必要があります。もちろん、シミュレータごとに微妙に異なる方法で仕様を実装する場合があり、すべてのシミュレータが仕様に完全に準拠しているわけではありません。

シミュレーターのドキュメントには、特にGUIとコマンドラインモードの関係で、その動作の詳細な説明が記載されている場合があります。

8
toolic

$stop:シミュレーションの望ましくない終了。すべてのシステムアクティビティが一時停止されます。 $finish:コンパイラーを解放するために使用されます。

いい例えは$finishは、コンピュータをシャットダウンするようなもので、$stopは突然プラグを抜くようなものです。

3
user3547407

Modelsim GUIを使用しています。シミュレーションで$ stopステートメントを使用すると、シミュレーションの実行中にGUIの上部にある停止ボタンを押したかのようになります。ただし、$ finishステートメントがある場合、GUIには、modelsimを完全に終了するかどうかを尋ねる終了プロンプトが表示されます。

2
Michael Grover

これは link である程度説明されています。

$stop - When Verilog encounters a $stop, it pauses as if you sent a Ctrl-C.

$finish - Verilog exits as if you sent Ctrl-D when it encounters $finish.

この15ページから取得 紹介 PDF。

乾杯

2
Arnkrishn

A クイックリファレンスリンク

$finish;
    Finishes a simulation and exits the simulation process.
$stop;
    Halts a simulation and enters an interactive debug mode.
2
Donald Byrd

$ stop-シミュレーションを一時停止するため、Linuxでfgコマンドを使用してシミュレーションを再開できます。この場合、ライセンスは解放されず、プロセスも強制終了されず、メモリが消費されます。

$ finish-シミュレーションが終了したので、ライセンスの解放とプロセスの強制終了が行われます。

2
Karan Shah