シミュレーション終了時を報告したいと思います。end_of_simulationルーチンを使用し、ルーチンでsc_timestampを実行するだけだと思いました。
問題は、カーネルがend_of_simulationの前に終了し、偽のタイムスタンプを取得することです。
シミュレーションから私を引き離すのは、すべてのスレッドがイベントを待機しているため、スレッドを使用してこれを判断することはできません。タイムスタンプを保存できる「マスタースレッド」はありません。
何かご意見は?
シミュレーション終了時を報告したいと思います。end_of_simulationルーチンを使用し、ルーチンでsc_timestampを実行するだけだと思いました。
問題は、カーネルがend_of_simulationの前に終了し、偽のタイムスタンプを取得することです。
シミュレーションから私を引き離すのは、すべてのスレッドがイベントを待機しているため、スレッドを使用してこれを判断することはできません。タイムスタンプを保存できる「マスタースレッド」はありません。
何かご意見は?
次のようなものを使用できます。
cout << "Start of simulation is " << sc_time_stamp() << endl;
sc_start (); // sc_start (-1);
cout << "End of simulation is " << sc_time_stamp() << endl;
それが役に立てば幸い。
あなたの質問を理解できるかどうかわかりません。
シミュレーションを実行するには、合計でかかる時間を規定する必要があります。sc_start(total_time、SC_NS)。
total_timeは、シミュレーションの最後の時間です。
これは少しハックなようですが、待機前や時間のかかる関数から戻る前など、シムの終わりになる可能性のあるコードの重要なポイントでsc_time_stamp()を使用してグローバルタイム変数を更新できますか?次に、sc_start()から戻った後、気になるコードから最後の時間の値を取得します。