在 Virtuoso Layout Editor 里画完一条 path 后,经常需要把它拉长一点、或者缩短一点。这件事看似简单,但用 Move 命令是没法只动一段的 —— 正确的命令是 Stretch。本文记录其用法、注意事项,以及一个常见”拉不动”的坑。


1. 核心命令:Edit → Stretch

默认快捷键 s。Stretch 可以作用在 path 的三种地方:

目标 选什么 效果
端点(path 末端) 框选末端那段 centerline 的端点 整条 path 一端变长 / 变短
拐角 与 stretch 任意 object 拐角一致 拐角位置随之移动
某一段(segment) path 中心线的中部 该段平移,相邻段被动伸缩

拉长还是缩短,取决于落点方向:朝外拖 = 拉长,朝内拖 = 缩短。命令本身是同一个。


2. 拉伸 segment 的步骤

  1. 在 layout 窗口选择 Edit → Stretch(或按 s)。命令会自动切到 partial selection mode,提示你选择要拉伸的对象。
  2. 选中要动的 segment:
    • 单段:点 segment 中心线(centerline) 的中部,或者用框选包住该 centerline,框选必须包含 centerline 的两端。选中后会高亮。
    • 多段:按住 Shift 再点 / 框选其它 segment 的中心线。
  3. 如果你用的是框选,工具会提示你 指定一个 reference point(参考点不必落在被选中形状上)。在画布上点一下作为起点。
  4. 把光标移动到目标位置再点一次 —— 该段被平移到新位置,path 整体被拉长 / 缩短。
  5. 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”


参考