在systemC中,如何在end_of_simulation例程中获取sc_time

时间:2012-05-14 22:35:29

标签: systemc

我想报告模拟结束时的时间。我以为我会使用end_of_simulation例程,只是在例程中执行sc_timestamp来执行此操作。

问题是内核在end_of_simulation之前已经终止,我得到了一个伪造的时间戳。

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

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

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

希望它有所帮助。

答案 1 :(得分:0)

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

运行模拟是必要的,以规定它必须总共采取的时间。 sc_start(total_time,SC_NS)。

total_time是模拟的最后时间。

答案 2 :(得分:0)

这似乎有点hackish但你可以在代码中的关键点用sc_time_stamp()更新一个全局时间变量,这可能是一个sim的结束,比如在等待之前或者从耗时的函数返回之前?然后从sc_start()返回后,您将获得您关注的代码中的最后一次值。