921电子技术网-个人搭建学习 - Bug排查
type: channel
link: https://992211.xyz/category/bug-fix/
description: 报错、异常、兼容性问题、复现和修复过程
items: Virtuoso IC25 金属层纹理变纯色：关闭 LPP Transparency 恢复 display.drf stipple
items: Cadence Virtuoso IC251 在 WSL 中按 F1 卡死：Doc Assistant 本地端口通信故障的根因与修复

Virtuoso IC25 金属层纹理变纯色：关闭 LPP Transparency 恢复 display.drf stipple
type: item
date: 2026-07-13T16:04:14+08:00
description: Virtuoso IC25 金属层纹理变纯色：关闭 LPP Transparency 恢复 display.drf stipple{{badge:已解决}}现象升级或切换到 Virtuoso IC25.x 后，Layout 中部分金属层不再显示原有的斜线、数字或其他 stipple 纹理，而是显示为单一纯色块。这一现象只影响屏幕显示，不会修改版图数据库，也不会影响 DRC、LVS、网表或导出的版图数据。根因工艺的 display.drf 仍然正确加载，相关 display packet 仍指向原本的 stipple，例如 backSlash、fDash 或自定义数字纹理。问题来自 IC25.x 的 LPP Transparency 显示功能。其默认 auto 模式会对指定的 metal/drawing LPP 做显示覆盖，使原本由 display.drf 定义的 outlineStipple 视觉上变成纯色填充。因此，检查 packet 定义时可能仍能看到正确的纹理名称，但 layout 窗口中看不到纹理。临时修复：当前会话立即生效在 Virtuoso 的 CIW 中执行：envSetVal("graphic" "lppTransparencyMode" 'cyclic "off")执行成功后会返回 t。通常不需要额外重绘；切回 layout 窗口即可看到原有纹理恢复。注意：不要把 hiRedraw() 单独在 CIW 中执行。部分版本要求它必须接收具体的 layout window，CIW 中没有当前版图窗口时会报参数类型错误；这不影响前一条设置生效。永久修复：写入工程启动目录的 .cdsenv先确认启动器是否设置了：export CDS_LOAD_ENV=CWD如果设置了该变量，Virtuoso 只读取启动工程当前目录中的 .cdsenv，不会自动读取用户主目录的 ~/.cdsenv。因此，应在实际启动 Virtuoso 的工程目录中创建或修改 .cdsenv，添加：graphic lppTransparencyMode cyclic "off"完整退出 Virtuoso 后，从同一工程目录重新启动，设置才会加载。若环境没有设置 CDS_LOAD_ENV=CWD，才可以将同一行写入用户主目录的 ~/.cdsenv 作为默认显示配置。注意：多个独立工程分别启动时，需要分别维护各自目录下的 .cdsenv。仅修改一份 ~/.cdsenv 在 CDS_LOAD_ENV=CWD 环境中不会生效。验证方法重启 Virtuoso 并打开任意 layout。检查原先变成纯色的金属层。若能重新看到斜线、数字、网格等 stipple，说明修复成功。常见误区export CDS_USE_OPENGL=0 不能真正关闭 OpenGL在部分 IC25.x 启动脚本中，CDS_USE_OPENGL 是“变量是否存在”的开关：即使赋值为 0，只要变量存在，启动器仍会启用 OpenGL 路径。若需要排除 OpenGL，应使用：unset CDS_USE_OPENGL unset CDS_AUTO_OPENGL unset CDS_AUTO_NATIVE_OPENGL但当关闭后纹理仍为纯色时，应转而检查 LPP Transparency；本例的最终修复就是关闭该显示覆盖功能。小结display.drf 负责颜色、线型和 stipple；LPP Transparency 是 IC25.x 额外叠加的显示层。关闭透明度覆盖后，旧版 PDK 的纹理定义可以继续按原样显示。

Cadence Virtuoso IC251 在 WSL 中按 F1 卡死：Doc Assistant 本地端口通信故障的根因与修复
type: item
date: 2026-07-13T15:30:26+08:00
description: Cadence Virtuoso IC251 在 WSL 中按 F1 卡死：Doc Assistant 本地端口通信故障的根因与修复{{badge:已解决}}注意：本文保留可复现的系统配置、环境变量和命令；已移除具体工艺名及私有工程路径。现象在 WSL2 / RHEL 8.10 中启动 Cadence Virtuoso Studio IC25.1-64b.ISR3.31，在 Layout XL 内按 F1 后界面长时间无响应。CIW 或启动日志中会反复出现：*WARNING* obShowTag for tool "layout" ... status 40 = obcSocketConnectionError WARNING (HELPAPI-041): Failed to launch Doc Assistant because port communication could not be established.F1 调用的是 Cadence 的 Doc Assistant，不是系统浏览器。因此“没有安装浏览器”不是根因。先确认 F1/F2 的实际绑定按键Layout 默认作用F1打开帮助，调用 Doc AssistantF2geSave()，保存当前编辑内容所以本问题的触发点是 F1。如果 F2 后出现无响应，应先区分是保存、已有未完成操作，还是先前 F1 调用遗留的阻塞。根因链路flowchart LR A[Layout 按 F1] --> B[Doc Assistant: cda -server] B --> C[Qt WebEngine] C --> D[生成 .CDA_port 本地端口文件] D --> E[Virtuoso 显示帮助]故障时，cda -server 在创建 .CDA_port 前退出；Virtuoso 一直等待本地端口，因此最后报 HELPAPI-041。本次修复确认涉及四项条件：IC251 的 cda25.12 版本解析入口；Qt WebEngine 所需的 Mesa DRI 与 libpng12 运行时依赖；WSL/root 下的 XDG_RUNTIME_DIR、sandbox 和 GPU 启动参数；IC251 所需的 resolver ABI 兼容库与独立临时目录。最终保留的修复1. 补齐 cda25.12 的安装根目录解析入口cd /eda/cadence/IC251/bin ln -s cda cda25.12 cds_root cda25.12 # 预期：/eda/cadence/IC251没有该入口时，Doc Assistant 会出现无法确定安装根目录的错误，并在本地端口建立前退出。2. 安装 Qt WebEngine 和 Virtuoso 的运行依赖dnf install -y mesa-dri-drivers libpng12mesa-dri-drivers 提供 Qt WebEngine 所需的 swrast_dri.so。libpng12 可通过下列检查确认是 IC251 的运行依赖：checkSysConf IC25.1 -P libpng123. 仅在 IC251 启动环境中配置 Doc Assistant将下面配置加入 ~/.bashrc。它只在 CDS_INST_DIR 指向 IC251 时生效，不会影响其他 Cadence 版本。if [ "$CDS_INST_DIR" = "/eda/cadence/IC251" ]; then # 兼容库为 IC251 提供所需的 resolver ABI alias。 export LD_PRELOAD="$HOME/.local/lib/libcadence_ic251_resolv_compat.so${LD_PRELOAD:+:$LD_PRELOAD}" export LD_LIBRARY_PATH="$HOME/.local/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" export CDA_ENABLE=true export PAR_GLOBAL_TEMP="$HOME/.cadence_tmp" # Qt WebEngine 以 root 身份运行时必须使用私有运行目录。 export XDG_RUNTIME_DIR=/tmp/cadence-xdg-runtime-root mkdir -p "$XDG_RUNTIME_DIR" chmod 700 "$XDG_RUNTIME_DIR" # WSL/root 下关闭 Chromium sandbox，并避免 GPU 初始化失败。 export QTWEBENGINE_DISABLE_SANDBOX=1 export…