![]()
作者:level90
链接:https://bbs.eetop.cn/thread-1001426-1-1.html
写在前面
主要受四位大佬启发入坑Skill:okfunny、木棉(飞鸟入山林)、chinarml、着着着火了,平日里看得最多的也是各位在EETOP 上发的贴子。
令人唏嘘的是,okfunny 和 chinarml 已经几年未登录论坛了。所幸另两位大佬依然活跃且高产,持续为版图社区贡献干货。
分享声明
本贴为不定期更新(业余时间有限,优先保障本职工作量),但会坚持写下去。
只分享原创Skill。非原创的就不放了。
改写研究部分已积累了一些素材,但这些大多由同事分享而来,出处虽然多半来自EETOP 但原始作者已难以追溯,在此不一一感谢了。
前置说明
● 为了让 Skill 兼容不同 Fab(代工厂)的 PDK,已统一了变量结构,将一部分工艺相关变量声明在 foundrycase 内,方便跨工艺切换。
● 防止误改 Readonly 版图:每一个执行程序都补了 testEditMode(),该思路来源于原帖:https://bbs.eetop.cn/thread-878287-1-1.html。本版只改了 Warning 弹窗样式,核心思路不变。
Skill 脚本清单 & 用法说明
1. alignBusLine
选中并行线的某一段、两个点(支持不同层、不同宽度),自动调整总线间距。注意:目前仅支持Path,暂不支持 PathSeg(懒,没写)。
2. autoSwitchPathUPorDN
自动跳层工具。具体用法可参考原帖https://bbs.eetop.cn/thread-980254-1-1.html
⚠️ 2026-7-14 更新:原楼层旧版已替换为新版,请到 楼下载最新版本。
3. changeViaSpace
选中Via 后调整其 Pitch(中心距)和 Enclosure(包边)。目前仅支持矩形 Via,不规则形的 CutPattern 结构复杂,尚未研究透彻如何修改。
4. convertTDtoLabel
一键将选中的Text Display 替换为 Label,告别手动重打的繁琐。
5. CopyPinToCurrent
与chinarml 大佬完全不同思路的产物(有借鉴思路),在 XL 模式下使用:将下层 Pin 拷贝至本层,自动过滤只保留本层出 Pin 的部分。适合层次化设计的 Pin 管理。
6. InputCoordi
支持单点标记或加载坐标列表批量标记。查图定位、改Pad 时非常常用,相当于在版图上画路标。
附件下载(需要到论坛里下载)
testEditMode.zip(491 Bytes) — Readonly 保护脚本
alignBusline.zip(2.04 KB) — 总线间距调整
autoSwitchPathUPorDN.zip(1.75 KB) — 自动跳层(新版请移步 楼)
changeViaSpace.zip(2.43 KB) — Via 间距 & 包边调整
convertTDtoLabel.zip(655 Bytes) — Text Display 转 Label
CopyPinToCurrent.zip(1.57 KB) — 下层 Pin 拷贝至本层
InputCoordi.zip(1.08 KB) — 坐标标记工具
作者补充
● 每个 Skill 里都注释了绑定的快捷键写法,有需要可以自行参考修改。
● 有机会再分享更多内容,欢迎关注后续更新。
书接上回,关于前置条件0:为了让 Skill 兼容不同工艺,分享一下我的做法——写一个 foundry.il 来预加载一些固定的全局变量。
如果您有更好的建议,欢迎留言一起讨论!
整体思路:foundry.il + .cdsinit 预加载
单独写一个foundry.il 文件,在 .cdsinit 中初始化加载,这样在启动 Virtuoso 时就能自动设置好所有预加载项目。
例如设定当前工艺厂和制程:
ICfoundry = "SMIC"
ICprocess = "40n"
完整代码示例
以下是foundry.il 的完整结构,核心是用嵌套case 语句来处理不同Fab 和不同制程的变量组合:
);case foundry初始化全局变量
在foundry.il 末尾,根据 SiMetLayList 提取各层到独立变量,方便各个 Skill 直接调用:
;; add item yourself设计要点总结
Fab 和 Process 两层嵌套 case,新增工艺只需加一个分支,改动最小
SiMetLayList / CoViaLayList / LabelLayList 统一了所有 Skill 的层定义,避免每个脚本里硬编码层名
通过nth() 按索引取层,Metal1Layer = nth(2 SiMetLayList),简洁清晰
t 分支(default)放 warn() 提示,防止误用未配置的工艺——比静默出错强一万倍
只改.cdsinit 里两个变量(ICfoundry / ICprocess),就能一键切换全厂 Skill 配置
扩展建议
如果你需要加新的Fab(比如 TSMC、UMC),在 SMIC 分支后面再补一个 case 分支即可。如果你用到了制程相关的 DRC 参数(如最小间距、最小宽度),也可以放进 Process 分支里,这样所有 Skill 统一调同一个变量,不用到处改。
7. diffSchematicDifference — 电路差异对比
比较新旧两版Schematic 的变更点,快速定位改了什么。
前提:需要RD 配合保留旧版电路作为 Backup。
原始代码来自一个很远古的版本(受益良多,可惜已不知出处),已整理重写。
⌘ 快捷键用法:在原电路上按 Alt+1 记录原始信息,在新电路上按 Alt+2 进行对比,自动选中所有变更部分。
8. instMatchArray — 阵列匹配
选中MOS 后识别名称,自动完成差分阵列(Differential Array)或常规电流镜阵列(Current Mirror Array)的匹配摆放。
算是一个半成品(目前没时间继续优化),还有很大改良空间,希望能起到抛砖引玉的作用。
⚠️ instMatchArray 楼下有更新版,本楼层旧版请勿下载。
9. GetInstParameters — 参数提取
提取选中Instance(MOS、电阻均支持)的各种参数:MOS 优先提取 OD Size,Poly 电阻提取 Poly Size,MIM/MOM 则只拉 bBOX。
同时也支持辅助其他程序——比如改了木棉大佬的 AlignNetsToVias,使其能按 Metal 层 Align,不会出现十字形 Via 对齐出头的问题。
一句话:一个通用的参数提取器,复用性很强。
附件下载(需要到论坛里下载)
diffSchematicDifference.zip(1.6 KB) — 电路差异对比
instMatchArray.zip(2.46 KB) — 阵列匹配(旧版,新版见楼下)
GetInstParameters.zip(1.6 KB) — 参数提取工具
更新:instMatchArray — 阵列匹配 v2.4
进版说明
之前的置顶已取消,重发更新版。自己在使用过程中发现还有很多问题,会慢慢迭代。
选中MOS 后识别名称,完成差分阵列或常规电流镜阵列匹配。已加入大量 Function,具体用法参考注释(我写得非常详细),支持差分对命名识别、电流镜比例匹配等。
版本已进到v2.4,依然算半成品,还有改良空间。
10. getPinLabel & expandBusString — Pin 提取与总线展开
功能说明
getPinLabel:将当前窗口的所有 Label 提取到文件(当前目录保存为 *.pin)。支持从电路提取(主要是给抽 DEF 的人用)和版图提取。版图提取部分源于 EETOP,忘记是哪位大佬的了,谢过。
expandBusString:用来拆分 XX<1:3> 这类 Bus Text,将总线名展开为 XX<1>、XX<2>、XX<3>。
11. alternateInstsR0MY — 器件方向反转
功能说明
顺序反转选中Instance 的方向。初衷是给 S/D 共用的 MOS 用的(某些不带自动切 S/D 的工艺 Pcell),后来想到也可以用来翻转串联电阻,于是加上了 R0 MX 翻转功能。
简单但实用的脚本,处理S/D 共用和电阻串时效率提升明显。
12. AddLayerByBBox — 按 BBox 添加辅助层
功能说明
选中Instance 后,根据其 BBox 自动添加辅助层,可设定 Sizing 缩放量。需要配合楼上的 GetInstParameters 使用。
来由:社团内部查WPE 参数时临时起意加了个辅助层……发现意外好用。还可以用来加 SP/SN 层、自动包围选中的器件等。非常简单的脚本,但实用性很高。
更新:autoSwitchPathUPorDN — 自动跳层
进版说明
原帖有小伙伴想要PathSeg 版本,于是加上了。顺便还补了一些别的小巧思 ^ ^。
代码里有详细的使用说明和注意点注释,有问题可以留言(不定期上线)。
附件下载(需要到论坛里下载)
instMatchArray.zip(7.09 KB) — 阵列匹配 v2.4(新版)
getPinLabel.zip(3.11 KB) — Pin 提取 + Bus 展开
autoSwitchPathUPorDN.zip(2.8 KB) — 自动跳层(已支持 PathSeg)
AddLayerByBBox.zip(1.92 KB) — BBox 添加辅助层
alternateInstsR0MY.zip(2.25 KB) — 器件方向反转
欢迎大家访问作者帖子
觉得有帮助可以关注并点赞支持作者
https://bbs.eetop.cn/thread-1001426-1-1.html
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.