SystemC - 在 systemc 模拟中测量并包含文件解析时间
SystemC - measure and include file parsing time in systemc simulation
我有一个简单的 C++ 函数,它逐行解析 CSV(10-10k 行)文件并将每个字段插入定义的结构中,更具体地说是结构数组。
现在我想使用 systemc
方法(没有 C++ 实用程序,例如 clock()
)测量解析时间,并像任何其他进程一样将其包含在模拟中并生成跟踪文件 - 是否可能?
几天来,我一直在努力以各种可能的方式做到这一点。实际上我已经意识到 sc_time_stamp()
在那种特殊情况下是无用的,因为它只显示声明的 sc_start()
模拟经过时间。
我以为会很简单:
wait() until pos.edg
parseFile()
signal.write(1)
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 知道一个进程需要多长时间才能完成的唯一方法是告诉它。
我有一个简单的 C++ 函数,它逐行解析 CSV(10-10k 行)文件并将每个字段插入定义的结构中,更具体地说是结构数组。
现在我想使用 systemc
方法(没有 C++ 实用程序,例如 clock()
)测量解析时间,并像任何其他进程一样将其包含在模拟中并生成跟踪文件 - 是否可能?
几天来,我一直在努力以各种可能的方式做到这一点。实际上我已经意识到 sc_time_stamp()
在那种特殊情况下是无用的,因为它只显示声明的 sc_start()
模拟经过时间。
我以为会很简单:
wait() until pos.edg
parseFile()
signal.write(1)
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 知道一个进程需要多长时间才能完成的唯一方法是告诉它。