skill简介
编程
0 字 / 约 0 分钟
2025/8/17
SKILL 是 Cadence 模拟设计环境(ADE/Virtuoso)内置的一门 高级交互式语言,语法同时兼容 Lisp 的列表处理 与 类 C 的流程控制。
换句话说:凡是你能在 GUI 里点的、拖的、填的,SKILL 都能一句话完成;GUI 里做不到的,它也能做。
1. SKILL 能做什么?
| 场景 | GUI 内 | GUI 外 |
|---|---|---|
| 原理图 | 新建、移动、旋转器件,连线,修改属性 | 批量替换 M=8→M=16,自动生成差分对 |
| 版图 | 画矩形、打孔、DRC | 一键生成 Pcell、自动布 guard ring、批量 rename cell |
| 仿真 | ADE 里点选 tran 1n 100n | 创建 DOE 扫描、批量跑 corner、自动提取结果到 CSV |
| 数据 | 查看波形、测上升时间 | 解析 SPICE 网表、统计功耗、与 MATLAB 交互 |
| 流程 | 手动保存 OA 库 | 每晚定时 check-in、生成 diff report |
一句话:只要你能描述规则,SKILL 就能自动化。
2. SKILL 解释器:CIW(Command Interpreter Window)
- 启动即见:打开 Virtuoso 后,最上方的小窗口就是 CIW。
- 即时交互:在 CIW 的
>提示符后输入任何 SKILL 表达式,立即执行。cadence; 打印当前设计库 println( getCurrentLib() ) ; 在光标处放一个 PMOS dbCreateInst( deGetCellView() "pmos" "techLib" "pmos4" 0:0 "R0" 1 ) - 历史与补全:上下键回溯命令;Tab 补全函数名。
- 脚本入口:CIW 的
load("~/myScript.il")可把外部 SKILL 文件一次性载入。
3. 语言特色一瞥
cadence
;; Lisp 风格:列表 + 递归
(defun factorial (n)
(cond ((zerop n) 1)
(t (* n (factorial (sub1 n))))))
;; C 风格:for/while + 数组
procedure( printArray(a)
for(i 0 sub1(length(a))
printf("%d\n" a[i])
)
)- 变量:动态类型,无需声明。
- 对象:面向 OA 数据库(db、tech、inst、net …)。
- 扩展:与 C 语言接口(
ipcBeginProcess)或 Python(skillBridge)。
4. 30 秒上手范例
需求:把当前 cell 中所有电阻值从 1k 改为 2k。
- 在 CIW 输入或保存为
fixR.il并load:cadenceforeach(inst dbGetTrueOverlaps(deGetCellView() bBox list("res"))~>inst when(inst~>objType == "inst" && inst~>master~>name == "res") inst~>r = 2e3 ) println("Done!") - 回车 → 版图里所有
res立即翻倍。
5. 下一步
- 系统教程:Cadence Online Support ▸ Training ▸ SKILL Language Programming
- 速查表:在 CIW 输入
help("strcat")查看任何函数原型。 - 社区资源:GitHub 搜索
cds-skill-lib,或直接load同事祖传脚本继续魔改。
把重复劳动交给 SKILL,把时间留给真正的模拟设计!