System Design with SystemC——学习笔记4

来源:互联网 发布:软件工程学出来干什么 编辑:程序博客网 时间:2024/05/06 11:45

2.10 仿真语义

SystemC的仿真是基于事件的仿真,虽然SystemC中存在时钟的概念,但此时钟只是一种事件触发机制,没有绝对时间的意义。例如在2秒触发一次,5秒触发一次,10秒再触发一次,如果2秒、5秒、10秒之间都没有其他时钟,那么完成2秒的触发就是5秒的触发,完成5秒的触发就是10秒的触发,根本没有分别间隔3秒、5秒的概念。

SystemC的仿真语言如下:

l         S1initialize):将所有SC_METHOD类型的process执行一遍,将SC_THREAD类型的process执行到第一个wait,除非这些process指明了dont_initialize()

l         S2evaluate):找一个ready-to-runprocess,继续其执行,执行过程可能引发immediate event,从而导致新的process ready-to-run。但注意应该尽量避免immediate event

l         S3:如果还有ready-to-runprocess,则转S2

l         S4update):遍历所有在之前的evaluate阶段注册了request_updateprocess,执行它们的update方法。update方法的执行可能导致一些event的触发,这些event可能部分或全部都是delta_cycle类型的。

l         S5:由于S4delta_cycle类型event的触发,一部分process又可能ready-to-run了,因此仿真流程返回S2;注意此过程仿真时间并不推进。

l         S6:如果事件队列上没有任何定时事件(由带参数的notify函数调用参数,或clock产生)了,那么仿真结束。

l         S7:否则,将仿真时间推进到离当前时间最近的定时事件所在时间。

l         S8:找到那些由于S7中的定时事件而ready-to-runprocess,返回S2

原创粉丝点击