3. 提取工具入门:StarRC工具介绍、基本命令、启动与退出
做寄生参数提取,StarRC 是绕不开的工具。我入行那会儿,前辈丢给我一本几百页的文档,说「自己看」。说实话,光启动命令就试了七八次才跑通。今天我把这些基础操作掰开揉碎讲给你,争取让你少走我当年的弯路。
3.1 StarRC 到底是什么?
StarRC 是 Synopsys 家的寄生参数提取工具。它的核心任务就一个:把版图的几何信息,转成电路仿真能用的电阻、电容模型。
你想想看,芯片里一根金属线,在版图上就是一条矩形。但到了高频信号下,它有电阻、有对地电容、还有和旁边线的耦合电容。StarRC 就是干这个换算活的。
一句话总结:StarRC 把物理版图翻译成电学网表,让后续的时序仿真、信号完整性分析有据可依。
我个人习惯把 StarRC 的工作分成三步:
- 读入数据——版图文件(GDS/OASIS)、互连工艺文件(ITF/ICT)、网表(SPEF/DEF)
- 提取计算——根据工艺参数算每段互连线的 R、C、耦合 C
- 输出结果——生成标准寄生参数文件(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