3. 性能与资源度量体系

星载FPGA的优化工作如果没有统一的度量体系,很容易陷入“感觉快了”“大概省了”的模糊判断。度量体系的作用,是把设计意图翻译成一组可采集、可比较、可回归的数值,让每一次改动都有明确的收益或代价。本节围绕七类核心指标展开:时序余量、吞吐率、延迟、动态功耗、静态功耗、资源利用率、辐射敏感截面。它们并非彼此独立,而是通过设计实现方式相互牵制——提高吞吐率往往增加动态功耗,放宽时序约束可能降低资源利用率,而抗辐射加固又会反过来消耗时序余量与资源。

一、时序余量:最紧路径的“安全距离”

时序余量(Slack)定义为要求到达时间与数据实际到达时间之差。对建立时间检查,Slack = 时钟周期 − 数据路径延迟 − 建立时间 − 时钟偏斜;对保持时间检查,Slack = 数据路径延迟 − 保持时间 + 时钟偏斜。Slack 为正是满足约束,为负则违例。工程上真正关心的不是“全部为正”,而是最差负余量(WNS)和总负余量(TNS),以及余量最小的若干条路径。

采集方法上,综合后用 report_timing_summary 获取预估余量,实现后必须重新采集,因为布线延迟会显著改变结果。建议固定一组采集条件:同一温度等级、同一电压档位、同一时钟约束文件,并记录时钟不确定性、输入输出延迟等约束值。星载场景还需关注跨时钟域路径,通常以同步器后的第一级寄存器作为终点单独统计。示例:某设计在100 MHz时钟下WNS为+0.42 ns,TNS为0;若把时钟提高到125 MHz,WNS可能变为−0.35 ns,此时应优先优化关键路径而非盲目加压。

二、吞吐率与延迟:一对需要区分的方向性指标

吞吐率指单位时间内完成的有效数据量,单位常为Mbps、MSPS或帧/秒;延迟指从输入到对应输出所经历的时间,单位常为时钟周期数或微秒。二者可以解耦:流水线能提高吞吐率但增加延迟,而某些反馈结构降低延迟却限制吞吐率。星载数传、成像处理通常更看重吞吐率,而闭环控制、波束指向则对延迟敏感。

采集吞吐率时,应在仿真中统计有效输出握手次数除以仿真时间,或在硬件上用计数器统计单位时间内的有效数据包数。采集延迟时,可在测试平台中给输入打时间戳,在输出端读取对应时间戳,二者之差即为延迟。注意区分“最坏延迟”和“平均延迟”,对存在仲裁或缓存的设计,最坏延迟往往才是系统设计依据。

三、动态功耗与静态功耗:来源不同,手段不同

动态功耗来自信号翻转对负载电容的充放电以及短路电流,近似为 P_dyn = α·C·V²·f,其中α为翻转率,C为等效电容,V为供电电压,f为时钟频率。静态功耗来自晶体管漏电流,与工艺、温度、电压强相关,在先进工艺和高温下不可忽略。星载环境散热受限,静态功耗的温升正反馈尤其危险。

采集方法分三层:综合后用功耗估算工具基于翻转率报告给出早期估计;实现后用带时序信息的功耗分析获得更准确结果;上板后用电流探头或电源监测芯片测量实际电流,再乘以电压得到总功耗。翻转率可通过仿真生成SAIF/VCD文件反标,也可用默认翻转率做保守估计。示例:若某模块时钟频率从100 MHz降到50 MHz,动态功耗理论上减半,但静态功耗不变,因此总功耗下降幅度小于50%。

四、资源利用率:不只看百分比

资源利用率通常统计LUT、寄存器、BRAM、DSP、时钟资源等的占用量与器件总量的比值。但百分比高不等于设计好:局部拥塞、布线困难、时钟资源紧张往往比总量更早成为瓶颈。采集时应同时记录“总量占用”和“最拥挤区域占用”,并关注实现后的布线拥塞报告。

建议在每次实现后固定导出资源表,并与上一版本对比。若某次优化使LUT减少但BRAM增加,需要判断是否值得。星载设计还要为抗辐射加固预留资源,例如三模冗余会使寄存器用量接近三倍,此时利用率目标应相应调整。

五、辐射敏感截面:星载特有的可靠性指标

辐射敏感截面(Cross Section)用于描述器件对单粒子效应的敏感程度,单位常为cm²/bit或cm²/device。单粒子翻转截面σ_SEU = 翻转次数 / (粒子注量 × 器件位数)。截面越小,抗辐射能力越强。采集方法包括地面重离子加速器试验、质子试验和激光模拟试验,也可通过故障注入仿真获得相对趋势。

工程上常把截面与轨道环境模型结合,估算在轨翻转率。例如某SRAM型FPGA配置存储器截面为2×10⁻⁹ cm²/bit,在特定轨道下每天可能发生若干次配置翻转,据此决定是否启用 Scrubbing 或 TMR。需要注意的是,截面随粒子线性能量传输(LET)变化,应给出截面-LET曲线而非单一数值。

星载FPGA七类核心度量指标关系与采集链 FPGA设计实现 RTL → 综合 → 实现 → 上板 时序余量 Slack WNS / TNS / 最紧路径 采集:report_timing_summary 吞吐率 Throughput Mbps / MSPS / 帧每秒 采集:有效握手计数/时间 延迟 Latency 时钟周期数 / 微秒 采集:输入输出时间戳差 动态功耗 P_dyn α·C·V²·f 采集:SAIF反标 + 电流测量 静态功耗 P_static 漏电流,随温度/电压上升 采集:功耗分析 + 空载电流 资源利用率 LUT / FF / BRAM / DSP 采集:实现后资源报告 辐射敏感截面 σ cm²/bit,随LET变化 采集:重离子/质子/激光试验 吞吐率↑ 常伴随 动态功耗↑ 资源↑ 可换 时序余量↑ / 功耗↑ TMR加固 截面↓ 资源↑ 采集阶段:综合后估算 → 实现后精确分析 → 上板实测验证(三阶段递进,不可跳步)

六、指标之间的耦合与权衡

把七类指标放在一起看,会发现它们构成一个相互制约的网络。提高吞吐率通常需要更多并行资源,动态功耗随之上升;插入流水线改善时序余量,却增加延迟和寄存器资源;三模冗余降低辐射敏感截面,但资源利用率接近三倍、功耗上升、时序余量被压缩。因此,度量体系的价值不在于单独追求某一项最优,而在于明确当前任务的约束边界:哪些指标是硬约束,哪些可以交换。

建议在项目初期就建立一张指标基线表,记录每个版本的关键数值。例如:版本A的WNS为+0.42 ns、吞吐率800 Mbps、延迟32周期、动态功耗1.8 W、静态功耗0.35 W、LUT利用率62%、配置存储器截面2×10⁻⁹ cm²/bit。版本B若把吞吐率提升到1.2 Gbps,但WNS降到+0.05 ns、动态功耗升到2.6 W,就需要判断时序余量是否还留有温度电压波动的安全裕度。

七、采集流程与注意事项

采集应遵循“同条件、同工具、同版本”的原则。每次采集记录工具版本、约束文件哈希、温度电压条件、翻转率来源。时序和资源在实现后采集;功耗在实现后结合SAIF反标采集,上板后再用电流测量校验;吞吐率和延迟以仿真为主、上板抽测为辅;辐射截面以地面试验数据为准,仿真故障注入仅作趋势参考。

注意:不同工具对“资源利用率”的统计口径可能不同,例如是否把分布式RAM计入LUT、是否把移位寄存器计入FF。跨版本对比时必须确认口径一致,否则百分比变化可能只是统计方式差异。
实用建议:为每个版本生成一份指标快照,至少包含WNS、TNS、吞吐率、最坏延迟、动态功耗、静态功耗、LUT/FF/BRAM/DSP占用率、截面估计值。快照随版本归档,作为回归分析和在轨异常排查的依据。

综上,七类指标分别回答“能不能跑稳”“跑得多快”“等多久”“耗多少电”“占多少资源”“抗多少辐射”六个问题。采集方法贯穿综合、实现、仿真、上板、地面试验五个环节。只有把定义、采集条件、判断依据固定下来,后续的优化手段才有可比较的基准,星载FPGA的性能与资源优化才能从经验驱动转向数据驱动。