针对线程问题,利用next_trigger()进行了时间仿真。正如我从这篇文章中了解到的,在指定的时间之后,这个线程会重新启动:
next_trigger(double, sc_time_unit):当指定的时间过去时,进程将被触发。
也就是说,它在指定的时间之后有效地执行该指令发生后的操作,但也执行在该指令之前找到的操作。我觉得next_trigger在SC_THREAD中的重复使用可能会导致模拟中的“小故障”。
Q1:我的感觉对吗?
Q2:是否有另一种可能延迟执行(将线程挂起,而不是重新启动)
发布于 2017-04-05 13:59:45
首先,next_trigger只能与SC_METHOD的这里一起使用。
next_trigger()与进程方法一起使用,这些方法不是线程。
下面是一些关于SystemC进程的指针:
SC_METHOD是必须一次完成执行的进程。(例如:一个简单的函数调用)
注意:在SC_METHOD中不使用while(1)循环。SC_THREAD的进程是单独的执行线程,必须在这里显式地使用wait()语句来同步SystemC内核模拟,这是您通常会发现使用while(1) (无限)循环的地方。为了将线程挂起一段模拟时间,可以使用wait()语句引入所感知的延迟。
但是,为了更好地理解,您需要了解SystemC中静态和动态灵敏度之间的差异,请参阅这里获取更多信息。
https://stackoverflow.com/questions/43158691
复制相似问题