共计 1912 个字符,预计需要花费 5 分钟才能阅读完成。
背景与痛点
Allegro Skill 是 Cadence Allegro PCB 设计工具内置的脚本语言,用于自动化设计流程、扩展工具功能。对于 PCB 工程师而言,掌握 Skill 可以大幅提升效率,比如批量修改设计、自动生成报告等。但新手常面临以下挑战:

- 语法陌生:Skill 采用 Lisp 方言,与常见 C /Python 语法差异大
- 文档晦涩:官方 API 文档缺乏实例,函数命名风格独特(如
axlDBGetDesign) - 调试困难:错误提示不直观,缺乏现代 IDE 支持
环境搭建
- 基础准备:
- 已安装 Cadence Allegro(17.4 或更新版本)
-
确保菜单栏显示 ”Skill” 选项
-
开发工具配置:
- 推荐使用 Notepad++ 或 VS Code(需 Lisp 语法插件)
-
在 Allegro 初始化文件(allegro.ilinit)中添加:
(setq skillPath "D:/skill_scripts") (loadi "skillPath/your_script.il") -
快速测试:
- 在 Allegro 命令行输入:
println("Hello Skill!")
核心语法精要
与常见语言对比
| 特性 | Skill (Lisp 风格) | Python |
|---|---|---|
| 函数定义 | (defun fn (x) (+ x 1)) |
def fn(x): return x+1 |
| 列表操作 | (list 1 2 3) |
[1, 2, 3] |
| 条件判断 | (if (> x 0) "pos" "neg") |
"pos" if x>0 else "neg" |
关键概念
-
axl 函数族 :所有 PCB 操作以
axl开头,例如:(axlDBGetDesign) ; 获取当前设计对象 -
数据库操作:设计元素通过层次结构访问:
(axlDbidName (axlDBGetDesign)->nets) ; 获取所有网络名
实战示例:自动元件对齐工具
;; 将选定元件按 Y 坐标对齐
(defun alignComponentsY ()
(let ( (selected (axlGetSelSet)) ; 获取选择集
(yPos nil) )
(when selected
;; 计算平均 Y 坐标
(setq yPos (/ (apply '+ (mapcar'car (axlPolygonCenter (axlPolyFromObj selected))))
(length selected)))
;; 移动元件
(foreach comp selected
(axlMoveObject comp (list (cadr (axlPolygonCenter (axlPolyFromObj comp))) yPos))
)
(axlUIWPrint "Aligned %d components" (length selected))
)
)
)
调试技巧
-
日志输出:
(printf "变量值:%L" var) ; 比 println 更强大 -
错误捕获:
(catch 'errorTag (throw 'errorTag" 错误描述 ") ) -
交互式调试:
- 使用
(debug)进入调试模式 - 按
?查看调试命令
性能优化策略
-
减少数据库查询:
;; 错误做法(循环内重复查询)(foreach net (axlDBGetDesign)->nets (axlDbidName net)) ;; 正确做法(预先缓存)(setq allNets (axlDbidName (axlDBGetDesign)->nets)) (foreach net allNets ...) -
使用事务处理:
(axlDBTransactionBegin) ;; 批量操作... (axlDBTransactionCommit)
新手避坑指南
- 括号匹配错误:
- 使用编辑器括号高亮功能
-
推荐安装 ParEdit 插件
-
单位混淆:
- Allegro 内部使用数据库单位(通常 1 =0.01mil)
-
始终用
axlMKSToDbu/axlDbuToMKS转换 -
选择集泄漏:
(axlClearSelSet) ; 操作后及时清空选择集 -
路径格式问题:
-
始终使用正斜杠:
"C:/path/to/file" -
未处理空值:
(when (and obj (axlDbidName obj)) ...) ; 先判空再操作
进阶学习建议
- 官方资源:
- Cadence 帮助文档《Allegro SKILL Language Reference》
-
安装目录下的
skill/examples文件夹 -
社区支持:
- Cadence 官方论坛 Skill 开发板块
-
GitHub 搜索 ”allegro-skill” 开源项目
-
推荐书籍:
- 《PCB 设计自动化技能修炼——Allegro Skill 编程指南》
实践思考题
- 尝试修改对齐工具脚本,实现 X / Y 双向对齐功能
- 编写一个统计设计中过孔数量的脚本
- 思考如何批量修改元件属性的脚本结构
通过系统练习,你会发现 Skill 能实现:
– 设计规则自动检查
– 封装批量生成
– 交互式设计辅助工具
– 与其他 EDA 工具数据交互
建议从每天解决一个小实际问题开始积累经验。
正文完
发表至: 未分类
近三天内
