3. 提取工具入门:StarRC工具介绍、基本命令、启动与退出

做寄生参数提取,StarRC 是绕不开的工具。我入行那会儿,前辈丢给我一本几百页的文档,说「自己看」。说实话,光启动命令就试了七八次才跑通。今天我把这些基础操作掰开揉碎讲给你,争取让你少走我当年的弯路。

3.1 StarRC 到底是什么?

StarRC 是 Synopsys 家的寄生参数提取工具。它的核心任务就一个:把版图的几何信息,转成电路仿真能用的电阻、电容模型。

你想想看,芯片里一根金属线,在版图上就是一条矩形。但到了高频信号下,它有电阻、有对地电容、还有和旁边线的耦合电容。StarRC 就是干这个换算活的。

一句话总结:StarRC 把物理版图翻译成电学网表,让后续的时序仿真、信号完整性分析有据可依。

我个人习惯把 StarRC 的工作分成三步:

  1. 读入数据——版图文件(GDS/OASIS)、互连工艺文件(ITF/ICT)、网表(SPEF/DEF)
  2. 提取计算——根据工艺参数算每段互连线的 R、C、耦合 C
  3. 输出结果——生成标准寄生参数文件(SPEF、DSPF、SDF 等)

下面这张图能帮你快速建立整体认知:

StarRC 核心工作流程 版图数据 GDS / OASIS 工艺文件 ITF / ICT / nxtgrd 网表/约束 DEF / SPEF / TLU+ StarRC 提取引擎 RC 计算 · 耦合分析 · 寄生网表生成 标准寄生文件 SPEF / DSPF / SDF 调试/报告 日志 · 统计 · 错误诊断 输入准备 核心处理 输出交付

3.2 基本命令:你只需要记住这几个

StarRC 的命令体系很大,但日常用的就那几个。我建议你先掌握下面这张表里的内容,其他的用到再查。

命令 功能 常用场景
StarXtract 启动提取主流程 标准 RC 提取,最常用
StarXtract -clean 清理临时文件 跑完一次后重置工作目录
StarXtract -help 查看帮助信息 记不清参数时救急
check_star 检查环境配置 新项目首次运行前必做
star_report 生成提取报告 查看 RC 统计、耦合占比

我的小习惯:每次跑新工艺节点前,我都会先跑一次 check_star。它能把 ITF 文件里的层定义、单位、阈值全扫一遍。有一次我发现工艺文件里金属厚度单位写错了,就是靠它抓出来的。

3.3 启动 StarRC:两种方式,看场景选

启动 StarRC 有两种主流方式。我根据项目阶段不同,会切换着用。

方式一:命令行直接启动

适合快速验证、调试小模块。直接在终端敲:

StarXtract -tcl my_script.tcl

或者用传统模式(非 TCL):

StarXtract my_rule_file.star

嗯,这里要注意:TCL 模式是主流,新工艺库基本都支持。老项目可能还在用 .star 脚本,但建议你尽快迁移到 TCL 模式,灵活度完全不一样。

方式二:交互式启动

适合调试、查错。先进入交互环境:

StarXtract -tcl -interactive

进去之后,你可以一条一条敲命令:

% read_def ./output/top.def
% read_itf ./tech/rc_1p9m_typical.itf
% extract -coupling on
% write_spef ./output/top_parasitic.spef
% exit

我曾经在交互模式下,一条条排查 DEF 文件里某个模块的坐标偏移问题。比反复提交脚本快太多了。

3.4 退出 StarRC:别直接关终端

退出这事看着简单,但真有人吃过亏。我见过同事直接 Ctrl+C 中断进程,结果临时文件没清理,下次启动报错。

正确做法:

  • TCL 交互模式:输入 exit 或 quit
  • 脚本模式:脚本跑完自动退出,或在脚本末尾加 exit
  • 非 TCL 模式:脚本末尾加 QUIT

警告:不要用 kill -9 强杀 StarRC 进程。临时文件(.tmp、.lock)没清理干净,下次启动会报「License 冲突」或「文件锁占用」。如果真遇到了,手动删掉工作目录下的 *.tmp 和 *.lock 文件即可。

3.5 一个完整的启动示例

下面是我在一个 28nm 项目里实际用过的启动脚本骨架。你拿去改改就能用:

# 文件名: run_starrc.tcl
# 功能: 28nm 顶层模块寄生参数提取

# 1. 设置工作目录
set work_dir "./work_star"
file mkdir $work_dir
cd $work_dir

# 2. 读入数据
read_def    "../data/top.def"
read_itf    "../tech/rc_28nm_typical.itf"
read_spef   "../sta/top_pre.spef"   ;# 可选:读入预提取结果做增量提取

# 3. 设置提取选项
set_extract_options -coupling on \
                    -resolution 0.1 \
                    -max_net_length 5000

# 4. 执行提取
extract

# 5. 输出结果
write_spef  "../output/top_parasitic.spef" -format spef
write_dspf  "../output/top_parasitic.dspf" -format dspf

# 6. 生成报告
star_report -type summary -file "../report/rc_summary.rpt"

# 7. 退出
exit

跑的时候一行命令搞定:

StarXtract -tcl run_starrc.tcl | tee run.log

避坑指南:我曾经在 set_extract_options 里漏写了 -coupling on,结果跑出来的 SPEF 里完全没有耦合电容。后仿时序直接崩了。排查了一整天才发现是这里的问题。所以,每次跑完先看一眼报告里的 RC 统计,确认耦合电容不为零。

3.6 本章小结

StarRC 入门其实不复杂。你记住三件事:

  • 输入三件套:版图 + 工艺文件 + 网表
  • 核心命令:StarXtract -tcl 加脚本
  • 退出要优雅:用 exit,别用 Ctrl+C