参考问题SystemC module not working with SC_THREAD,使用next_trigger()
模仿定时模拟。据我所知this article,这会在指定的时间后重新启动线程:
next_trigger(double, sc_time_unit)
:当指定的时间过去时,将触发该过程。
即。它在指定的时间之后发生此指令后有效地执行操作,但也执行之前找到的操作该指令。我觉得在next_trigger
内重复使用SC_THREAD
可能会导致“故障”。在模拟中。
Q1:我的感觉是否正确?
Q2:是否有其他可能延迟执行(在给定时间暂停线程,而不是重新启动它)
答案 0 :(得分:1)
首先,next_trigger只能与SC_METHOD
一起使用here:
next_trigger()
与流程方法一起使用,其中一个不是线程。
以下是SystemC流程中的一些指针:
SC_METHOD
是必须在一次通过时完成执行的过程(例如:一个简单的函数调用)while(1)
个圈次。SC_METHOD
是进程,它们是独立的执行线程,必须在此明确使用SC_THREAD
语句来同步SystemC内核模拟。在这里您将主要使用wait()
(无限)循环。对于暂停线程一段模拟时间,您可以使用while(1)
语句来引入感知延迟。
但为了更好地理解,您需要了解SystemC中静态和动态灵敏度之间的区别,请参阅here以获取更多信息。