SystemC - 在 systemc 模拟中测量并包含文件解析时间

SystemC - measure and include file parsing time in systemc simulation

我有一个简单的 C++ 函数,它逐行解析 CSV(10-10k 行)文件并将每个字段插入定义的结构中,更具体地说是结构数组。

现在我想使用 systemc 方法(没有 C++ 实用程序,例如 clock())测量解析时间,并像任何其他进程一样将其包含在模拟中并生成跟踪文件 - 是否可能?

几天来,我一直在努力以各种可能的方式做到这一点。实际上我已经意识到 sc_time_stamp() 在那种特殊情况下是无用的,因为它只显示声明的 sc_start() 模拟经过时间。

我以为会很简单:

  1. wait() until pos.edg
  2. parseFile()
  3. signal.write(1)
  4. doOtherStuff()

但显然不是...

Internet 上到处都是加法器、计数器和其他逻辑示例,但我没有找到与我的问题相关的任何内容。

提前致谢!

SystemC 是一个建模库。所以你只能用sc_time_stamp测量模拟时间。 如果你想测量物理时间,你需要用其他一些 C/C++ 库(Easily measure elapsed time)来测量它。

然后,如果你想把这个时间加到你的模拟时间里,你可以把

wait( measured_parsing_time );

您的问题"measure parsing time using systemc"和您提供的伪代码示例似乎表明您想要实时测量。伪代码

wait some-event
parseFile()
signal.write(1)
...

由于(除非 parseFile() 本身有等待语句)parseFile() 是在一个增量循环中执行的,因此模拟时间将完全为零。如果 parseFile() 确实有等待语句(例如等待 10 毫秒),那么在模拟时间内它将花费 10 毫秒。 systemc 知道一个进程需要多长时间才能完成的唯一方法是告诉它。