当前位置: 首页 > news >正文

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)
http://www.jsqmd.com/news/1144935/

相关文章:

  • 会计岗位智能报税和对账用哪款Agent?主流企业级智能体选型与技术解析
  • 研究生招生国家分数线 API 接口
  • 我同时用了 Claude Code、Cursor 和 Codex,说说三个工具的真实差距——2026 年选错工具比不用 AI 更浪费时间
  • 倒置荧光显微镜LF200-类器官与器官芯片:生命科学的前沿窗口
  • 长沙阳台推拉门怎么选?不卡顿、不漏水、隔音好,照着选就对了
  • S32K14X CAN
  • 我给 AI 提了个小需求,它帮我“重构“了整个系统——AI 编程范围失控怎么办?
  • 深度解密大模型 Agent 的终极银弹:Browser(浏览器沙箱)操作全指引与检索降级闭环
  • 自动调整学习率
  • LangGraph 工作流:普通开发者先补哪三块
  • 直线电机在3D打印中的精密运动控制应用与优化实践
  • AI知识库技术:构建个人B站视频检索系统的实践指南
  • Napping: 1.0.1靶场攻略
  • 系统日志智能分析和数据库自动备份怎么做?从工程实践到企业级智能自动化选型建议
  • Oracle 11g RAC 多路径配置总搞不定?iSCSI + Multipath + ASM 磁盘组,14节视频带你完整通关
  • 阿里云 OPC 创业平台:从零搭建 OpenClaw AI Agent 完全实战手册
  • MateClaw 1.7.0 开源发布,企业级JAVA龙虾平台,支持员工、看板、WIKI知识库、技能和审计,Spring AI 最佳实践
  • 销售线索自动跟进和商机管理能用AI吗?——2026企业级AI Agent落地深度测评
  • 基于HarmonyOS的情侣美食管理应用开发实战(三)- 美食相册与设置功能
  • 【OpenHarmony/HarmonyOs 】从化学学习 App 出发:近场快传、实况窗与全场景智慧学习方案
  • 《凌微经》通读:论“透过现象看本质”与“把握本质辨现象”的理论实践之统一
  • 设备机箱定制厂家如何提升客户满意度
  • 存储碎片化难以根治?深度解析 PowerFS 真正的协议无关存储底层设计
  • 如何在openEuler上快速部署Marvell QLogic FC HBA驱动:qla2xxx安装教程
  • ISO9001认证真的有用吗?干了多年投标的人来说点真话
  • 【单片机毕业设计】基于 STM32 单片机与 NRF24L01 的四路无线继电器控制系统设计,基于 51 单片机与 NRF24L01 的无线多路开关控制装置设计(020701)
  • ImportError: cannot import name ‘download‘ from ‘aistudio_sdk.hub‘ (/opt/conda/envs/pure-paddle/lib/
  • 第2篇:策略模式三大角色拆解与UML
  • 【Java实习面试算法冲刺】栈、队列与单调栈
  • 从零打造一款垂直领域微信小程序:工程实践与技术复盘