共计 1206 个字符,预计需要花费 4 分钟才能阅读完成。
Skill 语言基础入门
Skill 是 Allegro 平台专用的 Lisp 方言脚本语言,其核心语法包含以下要点:

- 数据类型 :
- 整数(fixnum)和浮点数(flonum)
- 字符串(string)用双引号包裹
- 列表(list)使用单引号构造,例如
'(1 2 3) -
符号(symbol)作为变量或函数名
-
控制结构 :
; 条件判断 (if (> x 10) (println "大于 10") (println "小于等于 10")) ; 循环结构 (for i 1 10 (println i)) -
函数定义 :
(defun add_two (x) "返回输入值加 2 的结果" (+ x 2))
Allegro API 深度解析
PCB 设计数据通过以下核心对象模型访问:
- 设计对象 :
axlDBGetDesign()获取当前设计文档-
axlGetActiveLayer()获取当前工作层 -
元件操作 :
; 获取所有元件 (setq comps (axlDBGetDesign)->components) ; 移动元件到新位置 (axlTransformObject comp (list 'move (list x y))) -
网络检查 :
; 获取未布线网络 (setq unrouted (axlAirGapNets nil))
实战案例:设计检查脚本
完整实现 DRC 检查的脚本示例:
(defun check_min_spacing ()
"检查最小间距违规"
(let ((violations nil)
(rules (axlGetDesignConstraint "SPACING")))
; 遍历所有间距规则
(foreach rule rules
(setq actual (axlMeasureMinSpacing))
(when (< actual rule->value)
(push (list rule->name actual) violations)))
; 生成报告
(when violations
(axlUIWPrint "发现间距违规:\n")
(foreach v violations
(printf "规则 %s 实际 %.2fmm\n" (car v) (cadr v))))))
调试与优化技巧
- 调试方法 :
- 使用
axlDebug函数启动调试器 - 设置断点:
(break @函数名) -
查看变量值:
(print var_name) -
性能优化 :
- 使用
axlDBTransaction批量操作数据库 - 避免在循环内创建临时对象
- 使用
setq替代重复计算
安全规范
-
脚本开始前检查设计版本:
(unless (axlVersionMatch "17.4") (error "需要 Allegro 17.4 版本")) -
重要操作前创建备份:
(axlShell "save_backup design.brd")
思考与进阶
- 并发执行方案 :
- 通过任务队列实现
-
利用
axlCmdRegister注册独立命令 -
模块化开发 :
- 按功能划分
.il文件 - 使用
load动态加载模块 - 建立公共函数库
通过系统化的学习和实践,Skill 脚本能帮助工程师将重复工作自动化,建议从简单任务开始逐步构建自己的工具库。
正文完
发表至: 未分类
近三天内
