在 Cadence Virtuoso 中,当我们尝试使用 SKILL 脚本全自动、非交互式地创建 Library(库)时,有时会遇到被以下确认弹窗打断流程的情况:

1
2
3
4
Confirm
The path to new library ‘newlib’ added to cds.lib is absolute and points to your workarea.
Do you want to convert this to a relative path?
(Click Yes to bring up the Library Path Editor to edit the cds.lib file.)

image-20260302104927395

在自动化流程中,这类需要人工干预的 UI 弹窗是极其致命的,不仅中断了连贯的操作,还会导致后台批处理脚本一直挂起等待(Hang)直到人工点击。

问题分析

起初,我们会习惯性地认为这是 Cadence 原生工具环境的默认安全行为。但是,在 Cadence Support 调研后得知,这类关于新建库路径的拦截和转换管理,是由接手了当前底层环境的 Design Management (DM) 工具负责的。

如果你的 Virtuoso 环境集成(继承)了 Keysight SOS 作为设计数据管理的底层服务,那么实际上正是 SOS 的配置脚本接管了建库操作,并弹出了这层确认窗口。

解决方法

通过进一步追踪 Keysight SOS 的初始化逻辑,发现建库操作结束后的行为是由专门的 Trigger 变量 sosCreateLibPostTrigger 控制的。想要在自动化脚本中完全禁用这个由 SOS 引发的弹窗,只需要在环境初始化阶段将该触发器置空即可。

请找到并打开 Keysight SOS 针对 Virtuoso 的变量初始化文件 cds_sosviadfII_vars.il,搜索 Post Trigger 关键字修改相关代码。7.04版本的样例如下:

unless( boundp('sosCreateLibPostTrigger)
    sosCreateLibPostTrigger = nil
)

代码原理解析

  • boundp('sosCreateLibPostTrigger):判断建库的 Post-Trigger 回调变量是否已经被系统或其他脚本绑定。
  • unless(...):如果发现该变量处于未绑定状态,我们则主动防卫性地将其赋予 nil(空值)。

这样操作之后,非交互式建库脚本创建完 Library 时,SOS 的 Post-Trigger 环节将会直接读取到安全的 nil,从而静默跳过绝对路径向相对路径转换的询问流程,实现真正的“一键到底”全自动化建库。

保存文件后,在新的 Virtuoso 进程中重新执行自动化脚本,即可享受无弹窗的顺畅体验。