[SC]SystemC中的SC_FORK和SC_JOIN用法详细介绍
SystemC中的SC_FORK和SC_JOIN用法详细介绍
摘要:SystemC是一个开源的C++库(由Accellera和IEEE标准化,IEEE 1666-2011),用于系统级建模、硬件描述和仿真。它扩展了C++以支持硬件概念,如模块(sc_module)、端口(sc_port)、信号(sc_signal)和进程(SC_METHOD、SC_THREAD)。SystemC特别适合于硬件/软件协同设计、SoC(System-on-Chip)验证和高级抽象建模(如TLM - Transaction-Level Modeling)。
在SystemC中,"进程"(processes)是模拟并发行为的机制,但实际模拟是单线程的(使用协程或事件驱动模拟器,如Accellera的参考实现)。这意味着SystemC的并发是确定性的、非抢占式的(deterministic and non-preemptive),不像真正的多线程那样有操作系统调度。SC_THREAD是支持挂起(wait())的无限循环进程,常用于行为建模。
SC_FORK和SC_JOIN是SystemC提供的宏,用于在SC_THREAD中创建和管理并行子进程(子线程)。它们类似于C++11的std::thread或fork/join,但专为SystemC的模拟语义设计。下面我将详细介绍其背景、用法、注意事项,并提供代码示例。
1. 背景知识
-
SystemC进程类型: