共计 1725 个字符,预计需要花费 5 分钟才能阅读完成。
为什么需要 Skill 脚本自动化 Pad 设计
在 PCB 设计中,Pad(焊盘)是最基础也是最重要的元素之一。传统手动绘制 Pad 不仅效率低下,而且容易出错。使用 Skill 脚本可以带来以下优势:

- 批量处理:一次性生成大量相同规格的 Pad
- 参数化设计:通过修改几个变量就能快速调整 Pad 尺寸和形状
- 标准化:确保设计规范的一致性
- 复杂图形:轻松创建特殊形状的 Pad
Skill 脚本基础语法
变量定义
Skill 使用 let 或procedure定义变量:
; 定义全局变量
let((width height)
width = 1.0 ; Pad 宽度(mm)
height = 1.0 ; Pad 高度(mm)
...
)
流程控制
条件判断
if(width > 2.0 then
println("警告:Pad 宽度过大")
else
println("尺寸正常")
)
循环结构
; 创建 5 个圆形 Pad
for(i 1 5
axlPadCreate(?name sprintf(nil "PAD%d" i)
?type "CIRCLE"
?diameter 0.8
?x i*2.0
?y 0
)
)
函数调用
; 定义绘制矩形 Pad 的函数
procedure(createRectPad(name x y width height)
axlPadCreate(
?name name
?type "RECTANGLE"
?width width
?height height
?x x
?y y
)
)
完整 Pad 绘制示例
; 创建矩形 Pad 示例
let((padName padX padY padW padH)
padName = "R1" ; Pad 名称
padX = 0.0 ; X 坐标
padY = 0.0 ; Y 坐标
padW = 1.2 ; 宽度(mm)
padH = 0.8 ; 高度(mm)
; 调用 Allegro 内置函数创建 Pad
axlPadCreate(
?name padName
?type "RECTANGLE"
?width padW
?height padH
?x padX
?y padY
)
; 输出创建信息
printf("已创建 Pad %s (%.2fmm x %.2fmm)\n" padName padW padH)
)
常见错误及调试
1. 语法错误
- 表现:脚本无法加载,提示语法错误
- 解决:检查括号匹配、引号闭合、分号注释
2. 坐标计算错误
- 表现:Pad 位置偏移或重叠
- 解决 :使用
axlDBGetDesignUnits()确认单位,添加调试输出
; 调试坐标
printf("当前坐标: X=%.4f Y=%.4f\n" x y)
3. 函数参数错误
- 表现:函数返回 nil 或报错
- 解决 :查阅官方文档确认参数格式,使用
axlCmdRegister()注册自定义函数
性能优化建议
- 批量操作:减少单个 Pad 创建次数,使用数组或循环
; 批量创建 Pad
foreach(pad padsList
createRectPad(car(pad) ; 名称
cadr(pad) ; X 坐标
caddr(pad) ; Y 坐标
...
)
)
- 变量复用:避免重复计算相同值
- 内存管理 :使用
let限定变量作用域 - 预编译:复杂脚本可编译为.ilbin 文件加速加载
新手避坑指南
- 单位混淆
- 错误:未确认设计使用 mm 还是 mil
-
解决:开头添加
axlDBGetDesignUnits()检查 -
Pad 命名冲突
- 错误:重复使用相同 Pad 名称
-
解决:添加序号或时间戳保证唯一性
-
图层设置遗漏
- 错误:Pad 未分配到正确图层
-
解决:明确指定
?beginLayer和?endLayer参数 -
路径包含空格
- 错误:脚本路径有空格导致加载失败
-
解决:使用短路径或引号包裹路径
-
未处理异常
- 错误:脚本中途出错无提示
- 解决:添加
errset()捕获异常
; 安全执行示例
errset(axlPadCreate(...)
t ; 成功返回 t
println("Pad 创建成功")
)
进阶学习建议
- 官方文档:Cadence 提供的《Allegro SKILL Language User Guide》
- 函数参考:Allegro 安装目录下的
skillref.pdf - 社区资源:Cadence 支持论坛、GitHub 开源项目
- 实践项目:从简单封装开始,逐步实现复杂 PCB 元件自动化
- 调试工具 :掌握
axlShell()交互式调试方法
提示:Skill 脚本的学习曲线前期较陡峭,建议从修改现成脚本开始,逐步理解语法结构和设计逻辑。遇到问题时,善用
println输出中间变量值是快速定位问题的好方法。
正文完
