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 的纹理定义可以继续按原样显示。