我想报告模拟结束时的时间。我以为我会使用 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;
希望能帮助到你。
这似乎有点骇人听闻,但是您可以在代码中可能是 sim 结束的关键点使用 sc_time_stamp() 更新全局时间变量,例如在等待之前或从耗时函数返回之前?然后从 sc_start() 返回后,您将获得您关心的代码的最后时间值。
我不确定我是否理解你的问题。
要运行模拟,必须规定它必须花费的总时间。sc_start(总时间,SC_NS)。
total_time 是模拟的最后时间。