例如,假设我的代码有三个函数,它们都对同一个时钟的正边沿敏感。有没有办法告诉给定的SystemC模拟器如何对这些函数的执行进行排序?
我正在使用Cadence的IUS模拟器。
我知道代码不应该假设排序,因为它是建模硬件。但我问这个问题是因为了解事件的顺序对于促进SystemC调试至关重要。
答案 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;
}