ucs_collect_sta_qor

递归收集 STA QoR,按 corner 与 setup/hold 汇总 Path Group WNS/TNS/NVP,并生成 Excel 工作簿

Release
UCS-1.0.0 · 2026-07-24
Input
一个或多个 run/report root
Discovery
递归查找文件名以 qor.rpt.gz 结尾的报告
Output
.xlsx 工作簿
License
启动时检查 UCS license;debug level 受 license 限制

1. Quick Start

# 一个 run root
./ucs_collect_sta_qor \
  --input_dir /proj/chip/sta/run_001 \
  --output_file run_001_sta_qor.xlsx

# 多个 root 用逗号分隔,合并到一个 workbook
./ucs_collect_sta_qor \
  --input_dir /proj/chip/sta/run_A,/proj/chip/sta/run_B \
  --slack_less_than -0.10 \
  --output_file compare_sta_qor.xlsx
推荐范围:input root 应覆盖所需 corner,但不要直接使用过大的公共目录。程序递归扫描全部子目录,范围越精确,发现报告越快、结果归属越清晰。

2. Input 与报告发现

规则行为
Root--input_dir 必填;多个 root 在一个字符串中用逗号分隔。
Filename递归选择 basename 以 qor.rpt.gz 结尾的文件。
Compression直接读取 gzip,不调用客户环境中的 gzip 命令。
Corner identity从报告路径/文件名中的 Stp/Hld 命名识别 setup/hold 与 corner。
Ordering收集后按 corner 与 check type 稳定排序。

如果扫描范围内没有匹配报告,程序以错误退出而不是生成空 workbook。这样自动流程可以把“没有输入”与“QoR 全部 clean”区分开。

3. QoR 解析与 Slack Threshold

工具识别报告中的 Timing Path Group 'NAME' (max_delay/setup) 和 (min_delay/hold) block,并读取对应 WNS、TNS、NVP。group 名以报告原文为准,不依赖固定列宽,因此报告显示时被截断的其他字段不会造成 group 之间错误合并。

Metric定义
WNS满足 threshold 条件的最差 group slack。
TNS满足 violation 条件的负 slack 总和。
NVP满足 violation 条件的 path/group violation 数。

--slack_less_than N 使用严格小于:只有 wns < N 才进入 threshold 结果。默认 0,因此默认收集负 slack violation;WNS 等于 0 不计入。

# 默认:只看负 slack
--slack_less_than 0

# 只关注小于 -0.1 的严重项
--slack_less_than -0.1

# 包含一部分正 margin group
--slack_less_than 0.05

4. Excel Workbook

Worksheet内容
Overall Summary按 corner/setup/hold 汇总总体 WNS、TNS、NVP,便于快速 review。
Histograms展示收集值的分布,便于发现主体与离群项。
Corner sheets每个 corner 的 Path Group 明细、check type 与 WNS/TNS/NVP。

CLI collector 不接收交互 comment,因此 workbook 中 comment 字段保持空。需要添加 Overall/Group comment、生成 subgroup 或浏览 timing path 时使用 ucs_sta_viewer。

5. Command-Line Reference

Usage: ucs_collect_sta_qor [OPTIONS] --input_dir <DIRS>

      --input_dir <DIRS>          Comma-separated roots [required]
      --slack_less_than <NUMBER>  Strict WNS threshold [default: 0]
      --output_file <XLSX>        [default: ucs_collect_sta_qor.xlsx]
      --debug <0-4>               [default: 0]
  -h, --help
  -V, --version

兼容 -debug N。实际 debug level 不会超过 license 中允许的 max_debug_level。

6. 使用案例

6.1 Nightly STA 汇总

./ucs_collect_sta_qor \
  --input_dir "$STA_RUN_ROOT" \
  --output_file "sta_qor_$(date +%Y%m%d).xlsx"

6.2 两套 run 对比

./ucs_collect_sta_qor \
  --input_dir /proj/run_before/sta,/proj/run_after/sta \
  --slack_less_than 0 \
  --output_file before_after.xlsx

6.3 CI 中检查是否成功生成

if ./ucs_collect_sta_qor --input_dir "$RUN" --output_file qor.xlsx; then
  test -s qor.xlsx
else
  echo "STA QoR collection failed" >&2
  exit 1
fi

7. Troubleshooting

现象原因与处理
No matching QoR reports确认 root、读权限及文件名是否以 qor.rpt.gz 结尾。
Corner 没有识别确认使用当前流程约定的 Stp/Hld 报告命名;不要在 handoff 时随意重命名关键文件。
某 group 不在结果中检查 --slack_less_than;比较是严格小于。
输出文件无法写入检查父目录存在且可写、目标文件没有被 Excel 锁定。
需要 comment/subgroupCLI collector 只做批量收集;使用 ucs_sta_viewer 的 Comment 与 Create Subgroup。
License error确认 UCS license 有效;Linux 环境需要 OpenSSL。
验证:单/多 root、gzip discovery、setup/hold、严格 threshold、Overall/Histogram/corner worksheets 和 license/debug 均按 UCS-1.0.0 当前实现核对。