OrCAD TCL 脚本运行环境配置:从零到能跑脚本
标签:
OrCADTCLCapture脚本自动化硬件设计
写在前面
做原理图设计的同学应该都有这种体验:画 DDR 地址线、RGB 信号线,几十根网络标号要一个一个手动放,不光费时,还容易漏放或者打错名字。
OrCAD Capture 内置了 TCL 脚本引擎,可以用脚本批量放导线、网络标号、off-page connector,本来是个很好用的功能,但很多人卡在第一步:脚本放哪、怎么加载、怎么让它每次打开 Orcad 都自动生效,折腾半天不知道从哪下手。
这篇文章就专门讲这一件事:把 TCL 脚本的运行环境配好,让你打开 Orcad 就能直接用脚本命令。
本文适用版本:Orcad 16.6 / 17.x(TCL 8.4 及以上)
一、搞清楚两个文件的关系
在配环境之前,先搞清楚你需要维护哪两个文件,以及它们各自的作用:
| 文件 | 作用 | 存放位置 |
|---|---|---|
load_tcl.tcl | 引导文件,放在 Orcad 的自动加载目录,每次启动 Orcad 时自动执行 | Orcad 安装目录下的capAutoLoad文件夹 |
orcad.tcl | 主脚本文件,你的所有自定义命令都写在这里 | 随便放,比如D:\WorkDir\ProTCL\ |
这两个文件分工明确:load_tcl.tcl只负责"找到orcad.tcl并加载它",你的业务逻辑全部写在orcad.tcl里。这样的好处是:改脚本的时候只需要改orcad.tcl,不需要动 Orcad 安装目录里的文件。
二、创建引导文件 load_tcl.tcl
新建一个文本文件,重命名为load_tcl.tcl,内容如下:
# 重新加载主脚本(修改完 orcad.tcl 后执行 ra 立即生效) proc ra {} { source "D:/WorkDir/ProTCL/orcad.tcl" } # 显示脚本路径(防止忘记) proc ds {} { puts "自动加载文件位置:" puts "D:/Cadence/SPB_16.6/tools/capture/tclscripts/capAutoLoad/load_tcl.tcl" puts "主脚本位置:" puts "D:/WorkDir/ProTCL/orcad.tcl" } # 用文本编辑器打开主脚本 proc ed {} { exec "C:/Program Files/Sublime Text/sublime_text.exe" "D:/WorkDir/ProTCL/orcad.tcl" & } # 启动时自动加载主脚本 source "D:/WorkDir/ProTCL/orcad.tcl"几个注意点:
- 路径分隔符用
/或\\,不能用单个\(TCL 里\是转义字符) - 路径中不要有空格和中文,否则
exec命令会出问题 ed里面的编辑器路径换成你自己的,Notepad++、VSCode 都行- 最后一行
source是让 Orcad 启动时就把orcad.tcl加载进来
三、把引导文件放到自动加载目录
这是关键步骤。Orcad 有一个固定的目录,启动时会自动执行该目录下所有.tcl文件:
D:\Cadence\SPB_16.6\tools\capture\tclscripts\capAutoLoad\把刚才创建的load_tcl.tcl复制到这个目录下。
说明:路径中的
SPB_16.6取决于你安装的 Orcad 版本,17.x 对应SPB_17.x,根据实际情况修改。
验证方法:关闭 Orcad 重新打开,菜单栏选View → Toolbar → Command Window,打开 TCL 控制台,直接输入:
ds如果控制台打印出了你设置的路径,说明环境配置成功。
四、打开 TCL 控制台
每次使用脚本之前,需要先打开控制台窗口:
菜单栏 → View → Toolbar → Command Window控制台出现在 Orcad 窗口底部,可以在里面直接输入 TCL 命令。
有些版本的 Orcad 菜单位置不一样,如果找不到,可以在菜单栏空白处右键,在工具栏列表里找
Command Window。
五、修改主脚本后如何立即生效
日常使用中,你会不断修改orcad.tcl。每次修改完,不需要重启 Orcad,在控制台里输入:
ra这个命令会重新source一次orcad.tcl,把最新的内容加载进来,立即生效。
推荐工作流:
- 控制台输入
ed→ 用编辑器打开orcad.tcl - 修改脚本并保存
- 控制台输入
ra→ 重新加载 - 输入你的自定义命令测试效果
六、关于页面单位设置(必须对,否则坐标全乱)
使用脚本放置元素(导线、标号等)时,坐标都是按inch计算的,脚本内部以0.1 inch为最小单位。
必须保证 Orcad 当前页面的单位设置与此一致,否则放出来的东西坐标全错:
- 菜单
Options → Schematic Page Properties - 确认
Units选择Inch - 捕捉栅格(Pin-to-Pin Spacing)设置为0.1 inch
七、一个最简单的 orcad.tcl 起步模板
环境配好后,在D:\WorkDir\ProTCL\下创建orcad.tcl,从这个模板开始写:
########## OrCAD TCL 主脚本 ########## package require capDesignUtil 1.0 # ---------------------------------------- # 工具命令:查找 / 替换 / 互换网络标号 # ---------------------------------------- # 查找网络标号 proc fn { netname } { FindNets $netname 1 } # 查找引脚名 proc fp { pinname } { FindPins $pinname 1 } # 替换所有 page 中的网络名(注意:全局替换,谨慎使用) proc rn { old_netname new_netname } { ::capDesignUtil::replaceAlias $old_netname $new_netname } # 互换两个网络名(全局) proc en { net1 net2 } { ::capDesignUtil::replaceAlias $net1 __TEMP_SWAP__ ::capDesignUtil::replaceAlias $net2 $net1 ::capDesignUtil::replaceAlias __TEMP_SWAP__ $net2 ZoomSelection } # ---------------------------------------- # 显示帮助 # ---------------------------------------- proc dh {} { puts "ra : 重新加载本脚本" puts "fn : 查找网络标号,用法: fn NET_NAME" puts "fp : 查找引脚名,用法: fp PIN_NAME" puts "rn : 替换网络名(全局),用法: rn OLD_NAME NEW_NAME" puts "en : 互换网络名(全局),用法: en NET1 NET2" puts "dh : 显示本帮助" } puts "=== orcad.tcl 加载完成,输入 dh 查看可用命令 ==="启动 Orcad 后控制台应该自动打印:
=== orcad.tcl 加载完成,输入 dh 查看可用命令 ===说明一切正常。
八、常见报错和解决办法
问题 1:控制台输入命令提示invalid command name "ra"
原因:load_tcl.tcl没有放对目录,或者文件名拼写有问题。
检查方法:
# 看看 capAutoLoad 目录下有哪些文件 glob D:/Cadence/SPB_16.6/tools/capture/tclscripts/capAutoLoad/*如果没有输出load_tcl.tcl,说明文件没放进去。
问题 2:source报no such file or directory
99% 的原因是路径用了单反斜杠\。
# 错误 source "D:\WorkDir\ProTCL\orcad.tcl" # 正确:用正斜杠 source "D:/WorkDir/ProTCL/orcad.tcl" # 或者用双反斜杠 source "D:\\WorkDir\\ProTCL\\orcad.tcl"问题 3:package require capDesignUtil 1.0报错
原因:在 Orcad 外部(比如独立的 Tclsh)运行了脚本,而capDesignUtil是 Orcad 的内置扩展包,只在 Orcad 进程内有效。
解决方法:必须在 Orcad 的 Command Window 里执行,不能在外部 TCL 解释器中运行。
问题 4:PlaceWire/PlaceNetAlias等命令提示找不到
原因:同上,这些都是 Orcad 专有命令,必须在 Orcad 环境内使用。另外,Capture 和 PCB Editor 的命令集不通用,不要混用。
问题 5:脚本执行了但页面上什么都没出现
检查两点:
- 当前 Orcad 页面是否已经打开(脚本需要有激活的 page 才能放置元素)
- 页面单位是否为 inch,栅格是否是 0.1 inch(见第六节)
九、进阶:如何查看 Orcad 有哪些内置命令
Orcad 的 TCL 命令主要分三类:
① 普通放置命令(直接在控制台用):
# 查看所有以 Place 开头的命令 info commands Place* # 查看所有以 Find 开头的命令 info commands Find*② 数据库命令(面向对象风格):
# 列出 capDesignUtil 命名空间下的命令 namespace eval ::capDesignUtil { info commands }③ 获取当前设计对象(需要掌握 Dbo 系列命令):
# 获取当前选中对象 set objs [GetSelectedObjects] puts $objs如果你想深入做数据库级别的自动化(批量修改元件属性、导出自定义报告),重点学习DboState、GetSelectedObjects、DboTclHelper_sMakeCString这几个入口。
十、小结
整个环境配置其实就三步:
- 写
load_tcl.tcl—— 定义ra(重载)、ed(打开编辑器)等辅助命令,最后一行 source 主脚本 - 放到
capAutoLoad目录—— Orcad 启动时自动执行 - 写
orcad.tcl—— 你的所有自定义命令都在这里
配好之后,改脚本只需要编辑orcad.tcl,然后在控制台里ra一下,整个工作流很顺畅。
如果后续想扩展更多功能(批量放网络标号阵列、自动生成 off-page connector、批量替换网络名),在orcad.tcl里继续添加 proc 就行,环境不需要重新配置。
有问题欢迎在评论区留言,如果文章对你有帮助,点个赞再走~
想要看什么具体功能,也可以在评论区留言。