私はGUIシミュレータを使用していますが、どちらも同じことをしているようです。
$finish
はシミュレーションを終了し、オペレーティングシステムに制御を戻します。
$stop
はシミュレーションを一時停止し、シミュレータをインタラクティブモードにします。
IEEE Standard for Verilog(1364-2005、Section 17.4、 "Simulation control system tasks")に従って、$stop
はシミュレーションを一時停止し、$finish
は、シミュレータを終了し、制御をホストオペレーティングシステムに戻す必要があります。もちろん、シミュレータごとに微妙に異なる方法で仕様を実装する場合があり、すべてのシミュレータが仕様に完全に準拠しているわけではありません。
シミュレーターのドキュメントには、特にGUIとコマンドラインモードの関係で、その動作の詳細な説明が記載されている場合があります。
$stop
:シミュレーションの望ましくない終了。すべてのシステムアクティビティが一時停止されます。 $finish
:コンパイラーを解放するために使用されます。
いい例えは$finish
は、コンピュータをシャットダウンするようなもので、$stop
は突然プラグを抜くようなものです。
Modelsim GUIを使用しています。シミュレーションで$ stopステートメントを使用すると、シミュレーションの実行中にGUIの上部にある停止ボタンを押したかのようになります。ただし、$ finishステートメントがある場合、GUIには、modelsimを完全に終了するかどうかを尋ねる終了プロンプトが表示されます。
A クイックリファレンスリンク :
$finish;
Finishes a simulation and exits the simulation process.
$stop;
Halts a simulation and enters an interactive debug mode.
$ stop-シミュレーションを一時停止するため、Linuxでfgコマンドを使用してシミュレーションを再開できます。この場合、ライセンスは解放されず、プロセスも強制終了されず、メモリが消費されます。
$ finish-シミュレーションが終了したので、ライセンスの解放とプロセスの強制終了が行われます。