如何确定SystemC仿真中事件执行的顺序

时间:2016-10-03 23:09:18

标签: systemc

例如,假设我的代码有三个函数,它们都对同一个时钟的正边沿敏感。有没有办法告诉给定的SystemC模拟器如何对这些函数的执行进行排序?

我正在使用Cadence的IUS模拟器。

我知道代码不应该假设排序,因为它是建模硬件。但我问这个问题是因为了解事件的顺序对于促进SystemC调试至关重要。

1 个答案:

答案 0 :(得分:1)

不,对于对同一事件敏感的进程,SystemC标准不保证某些特定的执行顺序。 您应该使用通道进行进程间通信,因此模拟的行为不依赖于确切的执行顺序。

在内部,对同一事件敏感的所有进程的句柄将存储在事件对象中。因此,当触发事件时,预定义执行的顺序(按顺序将句柄存储在事件内)。但是,此信息是私密的,因此您无法在应用程序代码中使用它:

class sc_event {
...
private:
    ...

    mutable std::vector<sc_method_handle> m_methods_static;
    mutable std::vector<sc_method_handle> m_methods_dynamic;
    mutable std::vector<sc_thread_handle> m_threads_static;
    mutable std::vector<sc_thread_handle> m_threads_dynamic;
}