skill简介
约 582 字大约 2 分钟
2025-08-09
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 表达式,立即执行。; 打印当前设计库 println( getCurrentLib() ) ; 在光标处放一个 PMOS dbCreateInst( deGetCellView() "pmos" "techLib" "pmos4" 0:0 "R0" 1 )
- 历史与补全:上下键回溯命令;Tab 补全函数名。
- 脚本入口:CIW 的
load("~/myScript.il")
可把外部 SKILL 文件一次性载入。
3. 语言特色一瞥
;; 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
:foreach(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,把时间留给真正的模拟设计!