背景

在 Exceed TurboX(以下简称 ETX)的 X Window 会话中,本地剪贴板和远端 X selection 之间的内容是通过 ETX Proxy 中转的。出于安全和性能考虑,ETX 对一次性可以拷贝的内容大小做了内部限制:

  • 用户从远端 X 应用(比如 Virtuoso CIW、Verdi log、Innovus 命令窗口)选中一段长文本 → 复制到本地系统剪贴板,再往本地编辑器粘贴时;
  • 或者反过来,把本地浏览器/文档里的内容粘进 X 会话里的应用时;

只要内容超过内置阈值,被中转的字符串就会被截断,用户会感觉”复制过来的少了一截”或者”粘贴进去只有前半段”。

EDA 流程里典型触发场景:把 Innovus / PrimeTime 的 transcript、Calibre 的 LVS report、整段长 netlist 从 X session 拷出来归档时。

ETX 官方在 Dashboard / Server Manager Help 里并没有把这个阈值放在常规设置面板里——它属于 Optional settings(可选标志),按照官方原话:”These flags are provided by customer support, when needed.” 即 支持但未文档化的标志

依据:/etx/help/admin/general/index.html#optional-settings 以及 /etx/help/admin/shared/settings/configuring-general-settings-in-advanced-mode.html#optional-settings。后者明确说明 Profile General 标签页里的 Optional settings 框可以输入”string/value pairs for supported, but undocumented, flags”,并允许多行(最多 4000 KB 文本)。

本文记录用于调整剪贴板字符串长度上限的标志 proxy.AllowCopyFromX,以及它该填在哪里。


标志说明

1
proxy.AllowCopyFromX=500
  • 作用对象:ETX Proxy(也就是承载 X session 的连接节点上为该 session 启动的代理进程)。
  • 含义:允许从远端 X selection 一次性 Copy In(即”从 X 拷到本地”)的最大字符数。
  • 示例值500 表示限制为 500(单位见下方”注意事项”)。
  • 默认值:未在公开文档中给出,按经验默认值会偏保守;如果业务上确实需要拷贝大段日志/netlist,建议显式设置一个较大值(例如 1048576,即 1 MB)。
  • 作用范围:仅作用于配置了该标志的 Profile,对其他 Profile 不影响。修改后只对新启动的 session 生效,已经在跑的 session 需要重连。

重要:这是一个未文档化(undoc)标志。 它没有出现在 Dashboard / Server Manager 的官方设置面板里,也不出现在公开的标志清单中,仅在 Rocket Software 的 Release Notes 中以 bug fix / 行为变更的形式被间接证实存在。例如 Exceed TurboX 12.5.3 Release Notes 里就记录了一条:

ETX-26363Prevent multiple pop-ups when using AllowCopyFromX=n undoc flag. Changed ETX behavior to display only one pop-up message when using the AllowCopyFromX=n undoc flag.

这条 release note 同时证明了:

  1. 这就是个 undoc flag(Rocket 自己也是这么称呼的),所以不要去 Dashboard Help 里翻”为什么我找不到这个设置”——本来就没收录;
  2. 当被拷贝的内容超过 n 时,ETX 会弹窗提示用户(12.5.3 之前是多次弹窗,12.5.3 起合并为一次);如果你的环境用户经常被这个弹窗打扰,可以考虑直接升到 12.5.3+,或者把 n 调大一点减少触发频率。

参考:Rocket Software Documentation, Exceed TurboX 12.5.3 Release Noteshttps://docs.rocketsoftware.com/bundle/etx-rn-1253/page/index.html)。

关于反方向(Copy Out / Paste In):从本地往远端 X 粘贴的方向,对应的是 ETX Proxy 的 AllowCopyToX 系列内部参数,命名约定与 AllowCopyFromX 对称。由于这些都属于”未文档化的支持标志”,如果遇到反向也被截断的问题,建议把现象(被截断的字节数、Profile、ETX 版本)发给 OpenText / Rocket Software 客户支持,让他们给出当前版本上对应的精确 flag 名称和取值范围。不要凭猜测在生产 Profile 上硬塞 flag——Optional settings 写错不会报错,只会”看似生效但实际无效”。


配置位置

ETX 里有两个不同的 Optional settings 入口,层级和影响范围不同,不要搞混:

方式 A:单个 Profile 级别(推荐,影响最小)

只对使用该 Profile 启动的 session 生效,适合先小范围验证。

  1. Exceed TurboX Dashboard 里打开目标 Profile → Edit
  2. 切换到 Advanced 模式。
  3. 进入 General 标签页。
  4. 找到 Optional settings 文本框。
  5. 在框中新起一行,输入:

    1
    
    proxy.AllowCopyFromX=500
    

    如需同时配置其它标志,每个标志独占一行。

  6. 点击 Save 保存 Profile。
  7. 让用户重新启动使用该 Profile 的 session(已运行的 session 不会动态加载新标志)。

依据:/etx/help/admin/shared/settings/configuring-general-settings-in-advanced-mode.html#optional-settings

方式 B:全站级别(影响所有 Profile,谨慎)

如果希望整个站点上所有 Profile 默认都使用同一个阈值,可以走 Site Settings:

  1. 进入 Server ManagerSite SettingsGeneral 标签页。
  2. 找到 Optional settings 文本框。
  3. 输入:

    1
    
    proxy.AllowCopyFromX=500
    
  4. 保存。

注意:Site Settings 的 Optional settings 字段官方注释是 “These flags are provided by customer support, when needed.” —— 也就是说官方默认假设这里只放支持工程师给的标志。改之前先备份当前内容,方便回滚。

依据:/etx/help/admin/general/index.html#optional-settings


验证生效

  1. 用对应 Profile 启动一个新 session。
  2. 在 X session 里打开一个能产生很长输出的窗口(比如 cat 一个大 log 文件),用鼠标拖选超过 proxy.AllowCopyFromX 值的连续文本。
  3. 切回本地编辑器(Notepad / VSCode / vim 任一)执行粘贴。
  4. 比对粘贴出的字符数 vs. 设置值。
  5. 调整到满足业务需求即可。

怎么确认 flag 真的被 Proxy 读到了

按官方 Optional settings 说明:”All of the flags you enter are listed in the proxy log if one is generated for troubleshooting purposes.” 所以可以临时再加一行:

1
proxy.LogLevel=3

启动一次 session 后从 ETX Client 菜单里调出 proxy log(etxproxy.log),搜索 AllowCopyFromX 应该能看到 Proxy 启动时记录下来的值。验证完记得把 LogLevel 调回默认,避免 log 体积膨胀。

依据:/etx/help/admin/admin/appendix-c/collecting-proxy-logs.html#to-collect-the-proxy-logs


关于值的单位与上限

官方未公开 proxy.AllowCopyFromX 的单位(字符数 / 字节数)以及理论上限。常见做法是:

  • 先用一个明显偏大的值(如 1048576)试一遍,确认 Proxy 不报错且业务能复制完整内容。
  • 如果有合规要求需要限制最长单次拷贝长度,可以反过来调小到业务可接受的边界。
  • 不要设成 0:未在公开文档中确认 0 是”无限制”还是”完全禁止”,行为可能版本相关。安全做法是设一个明确的正数。

常见坑

  1. 改完没生效:确认目标用户启动的是那个改过的 Profile,并且是新会话而非 resume 旧 session。
  2. 多 etxsvr 集群:Profile 改动会通过 etxdb 复制同步到集群内所有 etxsvr,无需逐台修改;但新值只对新 session 生效这条规则不变。
  3. 客户端类型:ETX 的复制粘贴行为依赖客户端类型(Windows / Mac / Linux)和访问的远端(X Window vs Windows host)。Linux 客户端只支持自动复制粘贴,相关 X selection 设置见 Copy and paste 标签页(/etx/help/admin/shared/config/configuring-copy-and-paste-settings-in-advanced-mode.html)。如果你发现某些客户端组合下连基本的复制都没生效,要先检查 Copy and paste 设置,而不是反复调 AllowCopyFromX
  4. Optional settings 是 free-form 文本框:拼错 key 或者多打空格、用了全角等号都不会报错,只会”静默失效”。改完一定要按上文方法在 proxy log 里确认。

总结

  • 调整 ETX 剪贴板从 X 拷出方向的最大字符串长度,使用 未文档化的 Optional settings 标志 proxy.AllowCopyFromX=<n>
  • 推荐配置位置:Profile → Edit → Advanced → General → Optional settings,影响范围最小,便于回滚。
  • 全站默认值可以在 Site Settings → General → Optional settings 配置,但官方建议这里只放支持工程师给的标志。
  • 新值只对新启动的 session 生效;改完务必通过 proxy.LogLevel=3etxproxy.log 中确认 Proxy 真的吃到了这条 flag。
  • 反向(Copy Out / Paste In)若也被截断,命名约定上对称的内部参数 proxy.AllowCopyToX 一般同样需要由 customer support 在你的版本上确认精确名称后再投放到生产。

参考

  • ETX Dashboard Help:Configuring General settings in Advanced mode → Optional settings /etx/help/admin/shared/settings/configuring-general-settings-in-advanced-mode.html#optional-settings
  • ETX Server Manager Help:Site Settings → General → Optional settings /etx/help/admin/general/index.html#optional-settings
  • ETX Help:Configuring Copy and paste settings in Advanced mode /etx/help/admin/shared/config/configuring-copy-and-paste-settings-in-advanced-mode.html
  • ETX Help:Collecting proxy logs /etx/help/admin/admin/appendix-c/collecting-proxy-logs.html
  • Rocket Software Documentation:Exceed TurboX 12.5.3 Release Notes(含 ETX-26363:Prevent multiple pop-ups when using AllowCopyFromX=n undoc flaghttps://docs.rocketsoftware.com/bundle/etx-rn-1253/page/index.html