2

我想报告模拟结束时的时间。我以为我会使用 end_of_simulation 例程,只需在例程中执行一个 sc_timestamp 即可。

问题是内核在 end_of_simulation 之前终止,我得到了一个虚假的时间戳。

我不能真正使用线程来确定这一点,因为让我脱离模拟的是所有线程都在等待事件。没有“主线程”我可以只存储时间戳。

有什么想法吗?

4

3 回答 3

1

你可以使用类似的东西:

cout << "Start of simulation is " << sc_time_stamp() << endl;
sc_start (); // sc_start (-1);
cout << "End of simulation is " << sc_time_stamp() << endl;

希望能帮助到你。

于 2013-07-24T17:52:09.633 回答
0

这似乎有点骇人听闻,但是您可以在代码中可能是 sim 结束的关键点使用 sc_time_stamp() 更新全局时间变量,例如在等待之前或从耗时函数返回之前?然后从 sc_start() 返回后,您将获得您关心的代码的最后时间值。

于 2012-07-21T01:27:21.010 回答
0

我不确定我是否理解你的问题。

要运行模拟,必须规定它必须花费的总时间。sc_start(总时间,SC_NS)。

total_time 是模拟的最后时间。

于 2012-05-30T14:44:58.927 回答