在 Virtuoso Layout Editor 里画完一条 path 后,经常需要把它拉长一点、或者缩短一点。这件事看似简单,但用 Move 命令是没法只动一段的 —— 正确的命令是 Stretch。本文记录其用法、注意事项,以及一个常见”拉不动”的坑。
1. 核心命令:Edit → Stretch
默认快捷键 s。Stretch 可以作用在 path 的三种地方:
| 目标 | 选什么 | 效果 |
|---|---|---|
| 端点(path 末端) | 框选末端那段 centerline 的端点 | 整条 path 一端变长 / 变短 |
| 拐角 | 与 stretch 任意 object 拐角一致 | 拐角位置随之移动 |
| 某一段(segment) | path 中心线的中部 | 该段平移,相邻段被动伸缩 |
拉长还是缩短,取决于落点方向:朝外拖 = 拉长,朝内拖 = 缩短。命令本身是同一个。
2. 拉伸 segment 的步骤
- 在 layout 窗口选择 Edit → Stretch(或按
s)。命令会自动切到 partial selection mode,提示你选择要拉伸的对象。 - 选中要动的 segment:
- 单段:点 segment 中心线(centerline) 的中部,或者用框选包住该 centerline,框选必须包含 centerline 的两端。选中后会高亮。
- 多段:按住 Shift 再点 / 框选其它 segment 的中心线。
- 如果你用的是框选,工具会提示你 指定一个 reference point(参考点不必落在被选中形状上)。在画布上点一下作为起点。
- 把光标移动到目标位置再点一次 —— 该段被平移到新位置,path 整体被拉长 / 缩短。
- 按 Esc 结束 Stretch。
关键点:选 path 的某一段必须点 / 框 centerline,不能只框矩形外形。这是 path 与 rectangle 在 stretch 上行为不同的核心区别。
3. 几个边界条件
- 拉伸结果不能 malformed 或自相交(self-intersecting / 边重叠)。
- Coincident edges(紧贴重合的边)允许,是可制造的,工具不会拒绝。
- 端点拉伸的方式与 stretch 任意 object 端点完全一致。
4. 常见坑:path 端点死活粘在某个 shape 上
很多人遇到过这样的现象:要把 path 端点从一块矩形上拉走,结果一拉,path 跟着变形但端点仍然贴在矩形边缘上不离开。
原因是 Maintain Connections 选项打开了。位置:
1
Options → Editor → Maintain Connections
把它关掉(或在 Stretch 命令期间临时关闭),端点就能自由离开。
注意:Maintain Connections 在协同绘制(schematic-driven layout)流程里通常需要保持开启,临时关闭后记得改回来,否则后续 ECO 时连接关系可能掉。
5. SKILL 自动化(按指定方向 / 距离拉伸)
如果你需要把鼠标点击操作改成绑定到快捷键,按固定方向 / 距离 stretch(例如脚本化 ECO),可以用 SKILL 函数 leHiStretch 配合 hiSetCommandLineOption 设置位移,或参考 Cadence ASK 上的文章 “How can I Move, Copy or Stretch any shape to desired distance and direction in Virtuoso Layout Editor using SKILL bindkey instead of LMB mouse clicks manually”。
参考
- Cadence 官方文档(IC25.1):Virtuoso Layout Suite XL: Basic Editing User Guide — Stretching Paths
- FAQ:When I stretch a path that overlaps a shape, why does the path remain connected to the shape?(Maintain Connections 行为说明)