共计 2121 个字符,预计需要花费 6 分钟才能阅读完成。
为什么选择 Skill 脚本?
在集成电路设计领域,Virtuoso 平台自带的 Skill 脚本语言是自动化操作的核心工具。与 Python 或 TCL 相比,Skill 有三大不可替代的优势:

- 原生集成:直接调用 Virtuoso 内部 API(如geGetEditCellView),无需通过 IPC 通信
- 性能优势:对版图数据库的操作比外部语言快 10-100 倍
- PDK 开发必需:所有工艺厂提供的 PDK 都依赖 Skill 实现参数化单元(PCell)
但要注意,Skill 的弱类型特性可能导致运行时错误,这是新手常踩的坑。
基础语法速成
-
变量声明:
; 局部变量用 let 声明 let((a b) a = 1 b = "text" ) -
循环结构:
; 遍历版图所有实例 foreach(inst geGetEditCellView()~>instances printf("Found instance: %L" inst~>name) ) -
函数定义:
procedure(createRect(@optional (layer "M1")) leCreateRect( ?layer layer ?bBox list(0:0 1:1) ) )
三大实战场景
场景 1:自动 DRC 检查(CI615 工艺)
procedure(runCI615DRC()
let((cv drcSet)
cv = geGetEditCellView()
drcSet = drcCreateRuleSet("CI615_DRC")
; 添加间距规则
drcAddRule(
?ruleSet drcSet
?rule "METAL1.SPACE"
?value 0.14 ; CI615 工艺要求
)
drcRun(cv drcSet)
)
)
场景 2:利用闭包实现版图批处理
procedure(batchProcessShapes(func)
let((cv)
cv = geGetEditCellView()
foreach(shape cv~>shapes
func(shape) ; 回调处理每个图形
)
)
)
; 使用示例:标记所有宽度 <0.2um 的图形
batchProcessShapes(lambda((shape)
when(shape~>width < 0.2
shape~>lpp = "MARKER"
)
)
)
场景 3:PCell 开发实例
procedure(createMOS(@key (w 1) (l 0.18))
let((cv dev)
cv = pcDefinePCell(list(ddGetObj("analogLib") "nmos" "layout")
list(list("w" w "length")
list("l" l "length")
)
)
; 绘制多晶硅栅
pcCreateRect(
?layer "POLY"
?bBox list(0:0 l:w)
)
; 生成扩散区
pcCreateRect(
?layer "DIFF"
?bBox list(-0.1:-0.1 l+0.1:w+0.1)
)
)
)
高级调试技巧
内存泄漏检测
定期检查内存使用情况:
procedure(checkMemory()
let((usage)
usage = skillGetMemUsage()
printf("Allocated: %d KB\n" usage->allocated)
printf("Free: %d KB\n" usage->free)
)
)
多线程安全
避免竞争条件的推荐模式:
1. 使用 txLock 保护共享资源
2. 为每个线程创建独立版图视图
3. 通过消息队列传递结果
procedure(safeMultiThread()
let((lock)
lock = txCreateLock()
txLock(lock
; 临界区代码
leSaveAll())
)
)
生产环境集成方案
与 Calibre 联用
通过 Skill 调用 Calibre 的三种方式:
-
直接执行命令
system("calibre -drc -hier layout.gds") -
使用交互模式
calibre = startProcess("calibre -gui") processSend(calibre "load ruledeck.mr") -
通过 API 集成(需要 License)
calibreRunDRC( ?layout "layout.gds" ?ruledeck "drc.rules" )
未来发展方向
机器学习在版图自动化中的应用探索:
– 使用 Skill 封装 TensorFlow 模型预测热点
– 基于遗传算法的自动布局脚本
– DRC 违规模式自动分类器
procedure(mlHotspotDetect()
let((image result)
image = geSaveImage("temp.png") ; 导出版图图像
result = system("python hotspot_model.py temp.png")
parseString(result) ; 解析预测结果
)
)
学习资源推荐
- 官方文档:
cdsdoc skill命令调出本地帮助-
Cadence Support Portal 的 SKILL API 参考
-
实战练习:
- 修改现有 PDK 的 PCell 参数
- 实现版图器件自动对齐功能
- 开发 DRC 违规自动修复脚本
经过两周的刻意练习,你会发现 Skill 脚本能轻松完成原本需要数小时手动操作的任务。记住:每个优秀的设计工程师都应该有自己私藏的 Skill 工具箱。
正文完
