使用SystemC进行定时模拟

时间:2017-04-01 15:31:52

标签: systemc

参考问题SystemC module not working with SC_THREAD,使用next_trigger()模仿定时模拟。据我所知this article,这会在指定的时间后重新启动线程:

  

next_trigger(double, sc_time_unit):当指定的时间过去时,将触发该过程。

即。它在指定的时间之后发生此指令后有效地执行操作,但也执行之前找到的操作该指令。我觉得在next_trigger内重复使用SC_THREAD可能会导致“故障”。在模拟中。

Q1:我的感觉是否正确?

Q2:是否有其他可能延迟执行(在给定时间暂停线程,而不是重新启动它)

1 个答案:

答案 0 :(得分:1)

首先,next_trigger只能与SC_METHOD一起使用here

  

next_trigger()与流程方法一起使用,其中一个不是线程。

以下是SystemC流程中的一些指针:

  • SC_METHOD是必须在一次通过时完成执行的过程(例如:一个简单的函数调用)
    注意:请勿在{{1​​}}中使用while(1)个圈次。
  • SC_METHOD是进程,它们是独立的执行线程,必须在此明确使用SC_THREAD语句来同步SystemC内核模拟。在这里您将主要使用wait()(无限)循环。

对于暂停线程一段模拟时间,您可以使用while(1)语句来引入感知延迟。

但为了更好地理解,您需要了解SystemC中静态和动态灵敏度之间的区别,请参阅here以获取更多信息。