SystemC:内核回调函数
SystemC中内核回调函数callback主要有以下四个回调函数调用阶段主要用途before_end_of_elaboration()所有构造函数完成后端口绑定之前在端口连接前进行早期设置或检查。end_of_elaboration()所有 before_end_of_elaboration 回调之后端口绑定完成仿真开始之前验证结构完整性如端口是否绑定进行系统级最终配置。start_of_simulation()首次调用 sc_start() 时初始化阶段之前初始化与仿真运行相关的状态如开启波形轨迹VCD记录。end_of_simulation()仿真因 sc_stop() 或自然结束而停止时执行清理工作如关闭文件、打印最终统计结果。1、before_end_of_elaboration()时机在所有模块的构造函数执行完毕后端口port和导出export进行实际绑定之前被调用。用途这是一个早期的钩子可以在连接关系最终确定前执行一些准备工作。2、end_of_elaboration()时机在“Elaboration阶段的最后时刻被调用。用途此时整个模型层次结构和连接关系都已最终确定是进行结构完整性检查如使用 is_bound() 检查端口是否连接和最终配置的理想位置。3、start_of_simulation()时机在首次调用 sc_start() 时、end_of_elaboration 回调之后、仿真内核进行初始化之前被调用。用途用于初始化那些依赖于仿真运行状态的代码。例如在此处开启 VCD 波形转储是安全的因为此时仿真内核已准备就绪。4、end_of_simulation()时机当仿真因调用 sc_stop() 或达到最大仿真时间而结束时被调用。用途与 start_of_simulation 对应用于执行清理工作如关闭文件句柄、报告最终覆盖率数据等。注意即使多次调用 sc_stop()此回调也只执行一次。5、调用顺序总结整个调用链的完整顺序如下这清晰地展示了它们在仿真生命周期中的位置构造函数 (Constructors)before_end_of_elaboration()端口port和导出export进行实际绑定end_of_elaboration()start_of_simulation()(仿真运行…)end_of_simulation()析构函数 (Destructors)