こんにちは、これを見てくれてありがとう。
私は、SystemVerilogシミュレーション用の非アクティブなキルスイッチのアイデアについて考えていました。
「simv」を実行しているときに非アクティブの(プログラム可能な)期間が長くなると、「$ finish」を呼び出す内部イベントがトリガーされる可能性がありますか?または、VCSコマンドを使用することは可能ですか?
ブレーンストーミングしましょう。そして、何か不明な点があれば教えてください。
RRS
こんにちは、これを見てくれてありがとう。
私は、SystemVerilogシミュレーション用の非アクティブなキルスイッチのアイデアについて考えていました。
「simv」を実行しているときに非アクティブの(プログラム可能な)期間が長くなると、「$ finish」を呼び出す内部イベントがトリガーされる可能性がありますか?または、VCSコマンドを使用することは可能ですか?
ブレーンストーミングしましょう。そして、何か不明な点があれば教えてください。
RRS
私が働いてきたチップ設計会社の中では、これは「静止チェック」と呼ばれていますが、それが業界標準の名前かどうかはわかりません。システムが静止状態になったことを確認する「インストルメンテーションコード」を実装します。V̶e̶r̶i̶s̶i̶t̶y̶'̶s̶ケイデンスのSpecman-eツールは、テストメカニズムの終了に反対してこれを非常にエレガントに行います(raise_objection(MAIN_TEST_DONE)/drop_objection(MAIN_TEST_DONE)
)。基本的に、システム全体のモニターは、シミュレーションの開始時に異議を「提起」し(つまり、カウンターをインクリメント)、シミュレーションが実行されると、DUTの一部が静止していると判断し、異議を「デクリメント」します。このグローバルカウンター)。テストを終了することに異議がない場合(つまり、グローバルカウンターが0の場合)、$finish
と呼ばれます。モニターはテスト全体を通して反対意見を上げたり下げたりすることができますが、カウンターが0に達した場合、テストは$finish
'dです。
Universal Verification Methodology(UVM)は、Specmanからこの方法論を採用しており、UVMリファレンスマニュアルで説明されています。UVMは何よりもまずVerilogで実装されているため、無料で入手できるライブラリを使用して「静止チェック」を実装できます。CadenceのSpecmanUVMリファレンスマニュアルでも、このメカニズムについてhttp://support.cadence.comで説明されています。残念ながら、ケイデンスでは、ドキュメントを表示する前に顧客である必要があるため、Google以外の検索エンジンを使用して必要なものを見つける必要があります。少し苦痛です。
VHDLでは、解決された信号を使用します。
データを生成または分析する各プロセスは0
、動作中にその信号に書き込みます。シミュレーションが終了する状態になると、を書き込みます1
。
すべてのプロセスが満足している場合にのみ、シグナルは状態をaに変更します1
(それはいずれかX
または0
残りの時間です)。
クロック生成プロセスはこの信号を監視し、信号が発生すると1
クロックパルスの生成を停止します。それ以上の遷移はスケジュールされておらず、シミュレーターは停止することを認識しています。
おそらく、Verilogは同様のことを行うことができます。