06 · Profiling、单变量优化与性能验收

在功能通过的同一个工程中区分软件、通信与硬件成本,用可复核数据评估优化收益。

先修知识能读 Verilog 与基本 shell 命令;按本系列前序章节完成对应验收。

适用环境统一工程 course_fifo / tb_top;SA Run 基线;命令依据 WXE 24.05,工具配对及资源配置以站点验证为准。

验证状态原创 RTL 与脚本已软件测试;Cadence 编译、硬件执行与 trace 待目标设备验证。

本文目录本章输入:只接受正确且可比的运行三种测量不要混成一个指标配置示例:先做一次带 profiling 的诊断可执行优化实验:只取消逐笔终端打印预期输出:报告结构,不虚构平台性能根据瓶颈选择下一步,避免盲调模式统计拒绝条件与常见误判典型故障:把不同口径写成加速比

本章输入:只接受正确且可比的运行

性能实验使用前几章已经正确运行的工程,将事务数统一提高到 10000,降低短用例启动成本占比。不能拿 64 笔黄金运行与 10000 笔优化运行直接比较秒数。先用 profiling 判断时间花在哪里,再改变一个变量;候选方案仍必须完成同样的逐笔检查。小 FIFO 的硬件逻辑很少,结果可能被软件和启动开销主导,不应期待必然加速。

性能优化闭环正确基线同 N / 同源码profiling定位主要耗时单变量改动只关逐笔打印配对复测完整检查 + 统计先证明工作量相同,再报告收益或无明显收益
性能优化闭环(原创示意,非器件引脚图;窄屏可横向滑动)

三种测量不要混成一个指标

xrun -profile 对软件模拟器做 profiling,详细分析需要当前 Xcelium 文档;+xcprof 生成硬件运行时的详细 xcprof.out;xc profon/profoff 则用于较粗的交互窗口统计。本站 run_wall_s 由 Python 计时,覆盖进程启动、加载、运行与退出,不含编译和离线导出。工具内部的 emu 百分比也包含部分硬件通信与轮询,不能直接解释成纯逻辑计算时间。

性能口径对照
测量启用与输出用途
软件 profilingxrun -profile → ncprof.out定位 Testbench 软件热点
详细 SA runtime profilingxrun -R +xcprof → xcprof.out分析软硬件执行与通信成本
交互窗口 profilingxc profon / profflush / profoff选定阶段的粗粒度统计
本站墙钟计时run.json 的 run_wall_s比较同口径的端到端一次运行

配置示例:先做一次带 profiling 的诊断

profile 模式给 xrun -R 增加 +xcprof,仍使用先运行 40 ns、再切换 SA Run 的初始化顺序。profile01 的结果会执行完整检查,存在时将 xcprof.out 复制到该次运行目录。不要把 profiling 的样本与未启用 profiling 的样本直接混合比较;本站统计器会拒绝 profile 与 wave 模式。详细 profile 未生成时,应先核对版本支持和完整日志。

在解压后的 palladium-course 工程根目录执行。标为硬件步骤的命令需在已配置的授权 Linux 环境验证。

Bash
python3 flow.py run sa --id profile01 --mode profile --transactions 10000
# 查看 runs/profile01/xcprof.out 与 run.log

# 若另开交互会话做粗粒度窗口统计,可使用以下 Tcl:
# xc profon          (在 xc on -run 之前)
# xc profflush -reset(按需要输出并清零窗口统计)
# xc profoff         (结束统计)
# 不把该流程与 +xcprof 的完整运行报告混为一谈。

可执行优化实验:只取消逐笔终端打印

本课程提供一个容易审计的候选优化:--quiet 只关闭 COURSE_TX 的逐笔终端打印,CSV 写入、期望值比较、错误报告和最终检查全部保留。它可能减少主机日志开销,也可能因为本例较小而没有稳定收益。将 verbose 与 quiet 交错运行,可以降低某一时段机器负载变化造成的偏差;仍需记录站点资源、文件系统位置和冷启动情况。

  1. 使用 profile 找到候选瓶颈

    预期与判定:若日志开销不是主要部分,不预设 quiet 会显著提速。

  2. 同一 build 交错运行两种配置

    预期与判定:每种至少三次,统一为 10000 笔;普通模式不包含 wave/profile。

  3. 检查所有结果正确

    预期与判定:run.json validated=true,CSV 每一笔符合期望;失败样本不能偷偷删除后统计。

  4. 比较中位数与范围

    预期与判定:同时报告 min、median、max、样本数和计时口径;若分布重叠明显,记录未发现可靠收益。

在解压后的 palladium-course 工程根目录执行。标为硬件步骤的命令需在已配置的授权 Linux 环境验证。

Bash
for i in 1 2 3; do
  python3 flow.py run sa --id verbose-$i --transactions 10000
  python3 flow.py run sa --id quiet-$i --transactions 10000 --quiet
done
python3 flow.py summarize runs/verbose-*/run.json runs/quiet-*/run.json

预期输出:报告结构,不虚构平台性能

统计器要求每组至少三个有效样本,核对源码、事务数、目标、工具路径与站点记录一致,并重新读取事务 CSV 验证结果。它报告 transactions_per_s,即相同事务数除以墙钟中位数。这不是硬件 MHz,也不是实际芯片频率。下面的尖括号代表需要在目标站点测出的数值;本站未提供任何虚构的 Palladium 吞吐或加速比。

仅展示输出结构与计算公式;实际值由站点运行产生。

Text
verbose: n=3 min_s=<实测> median_s=<实测> max_s=<实测> transactions_per_s=<实测>
quiet:   n=3 min_s=<实测> median_s=<实测> max_s=<实测> transactions_per_s=<实测>
Scope: process launch + load + run + exit; compilation and offline export excluded. No hardware MHz claim.

# 若希望报告收益:
# speedup = verbose_median_s / quiet_median_s
# saved_percent = (verbose_median_s - quiet_median_s) / verbose_median_s * 100

根据瓶颈选择下一步,避免盲调模式

若 profile 显示主机模型或检查器占主导,应优化相应软件工作;若高频信号交互主导,可评估事务批量化,但这意味着重新设计接口和验证缓冲、顺序、背压,并非替换一个开关。TBrun/NBrun 需要相应时钟及行为模型,本课程的时钟位于软件 Testbench,不能直接切换。若 trace 导出耗时主导,则拆开运行与离线导出计时,先优化探针与窗口。

从 profiling 到下一项工程决策
观察到的瓶颈候选改动必须重新验证
Testbench / 终端日志减少不必要打印,优化热点算法保持独立检查与同一事务内容
高频软硬件同步评估事务接口、批量传输与 GFIFO顺序、背压、错误传播与最大缓冲量
trace / upload缩小必要信号与时间范围首个失败点仍可解释
编译 / 加载占主导增加每次有意义的测试工作量,批量调度不要混淆总时长与纯运行时间
DUT 硬件执行占主导分析映射与时钟配置先确认正确性和支持条件,禁止盲调 oversampling

统计拒绝条件与常见误判

性能数据必须能被复核。不同事务数、重复 run_id、少于三个样本、非正或非有限耗时,以及故障、波形或 profile 模式均会被拒绝。除了工具路径,仍需人工保存硬件型号、资源分配和系统负载,因为路径相同不保证安装内容从未升级。性能实验应在一个稳定的验证窗口内完成。

性能数据校验
现象 / 本包标识原因处理
COURSE_PERF: workload identity differs源码、N、工具或站点不同重新采集同一身份的样本
COURSE_PERF: duplicate run id重复传入同一运行去重输入清单,不能重复计样本
COURSE_PERF: need at least 3 samples样本数不足按原条件补采,不用复制 JSON 凑数
quiet 更快但事务减少工作量或完成条件改变先修复正确性;此样本不能算优化收益
结果波动大启动、共享资源、文件系统影响延长负载或增加样本,保留原始分布

典型故障:把不同口径写成加速比

一次没有波形的短运行和一次带完整 trace 导出的长运行,即使来自相同 RTL,也不能直接比较并宣称优化成功。先确定每个时间数值的开始与结束位置,将正确性、工作量和观测配置放在同一张记录表里,才能解释差异。本系列的最终交付应包含所有原始样本,而不是只有一个最好看的倍数。

完成检查

  • profiling 与普通性能样本分开,未混用口径
  • 至少两组各三次同工作量通过样本且原始证据完整
  • 优化保持检查能力,结论有范围与设备条件

延伸阅读与来源

本文为黄河电子原创教学说明。产品命令与支持范围请以实际安装版本的官方文档为准。

  • Design Profiling for SA Designs · WXE 24.05

    第 11、21–23 页:软件 profile、+xcprof 与 xc profon 的差别。 页码为本次查阅版本的印刷页码;公开链接通向厂商入口,受限原手册不在本站分发。

  • XE Command Reference Manual · WXE 24.05

    第 1454–1456 页:窗口统计与各类时间含义。 页码为本次查阅版本的印刷页码;公开链接通向厂商入口,受限原手册不在本站分发。

  • Getting Started with TBA on Palladium · WXE 24.05

    第 12–14、22 页:通信成本与信号级同步限制。 页码为本次查阅版本的印刷页码;公开链接通向厂商入口,受限原手册不在本站分发。

继续阅读

硬件仿真

首次使用前的工程检查清单

准备版本、输入和模型,减少第一次编译的无效往返。

10 分钟
硬件仿真

如何选择 SA/ICE 及交互方式

根据测试环境所在位置与目标接口要求选择运行流程。

11 分钟
硬件仿真

完成最小设计的编译运行

把第一次平台运行拆为有检查点的五个阶段。

10 分钟