一直都在用的 Library Manager,其实还能这样配置

工具专项第一弹:Library Manager 实用配置技巧,包含右键菜单扩展、日志文件管理及常用环境变量设置。

兔二思
兔二思
技术博主

系列文章目录:

  1. 特定工具 - Library Manager(本篇)
    • 用 SKILL 脚本扩展 Library Manager 菜单功能
    • 配置 libManager.log 日志文件的路径和命名方式
    • 控制删除库时是否保留注释行
    • 其它常用的配置项
  2. 特定工具 - Layout L / XL / EAD
  3. 特定工具 - Schematic / ADE

在前面的系列中,我们已经系统介绍了 Virtuoso 环境变量配置的 11 个核心应用场景。本篇开始进入 “工具专项配置” 系列,介绍几个工具在实际使用中的环境设置与优化方法。这一篇,我们先从 Library Manager 讲起。

Library Manager 是一个独立的进程,不依赖 Virtuoso 主程序启动,所以它的环境配置方式也相对独立。Library Manager 不读取 .cdsinit 文件,想要自定义它的行为,需要借助两个入口:.cdsenv 和 cdsLibMgr.il

我个人的配置习惯是:将通用设置统一写进HOME目录下的 cdsLibMgr.il,这样所有项目都能共享;对于一些与具体项目相关的选项,则单独写在项目目录下的 .cdsenv 中,维护起来也比较方便。

理解了 Library Manager 的配置逻辑,下面分享几个我在实际项目中的应用示例。

用 SKILL 脚本拓展 Library Manager 菜单功能

在日常使用 Virtuoso 的过程中,我们经常要执行一些重复性操作,比如导出 GDS、生成 CDL 网表、或解除 Cellview 锁等。这些功能虽然都可以通过菜单或命令窗口实现,但路径分散、步骤繁琐。如果用户不熟悉命令方式,即便写好了对应的 SKILL 脚本,也未必用得方便。

相比之下,把这些常用操作集成进 Library Manager 的右键菜单,是一种更直观、更高效的方式。Virtuoso 提供了相关的 API 接口,比如 lmgrCreateMenuItemlmgrAddMenuItems 和 lmgrDeleteMenuItems,允许我们自定义 Library Manager 的菜单结构,可以将任意功能以回调的形式绑定到菜单项中。

基于这些接口,我们可以把常用的菜单项全部集成进右键菜单,让我们能直接在 Library、Cell 或 View 级别下完成常用操作。比如,当你在 Library Manager 中选中一个 View,只需点击右键,就可以直接导出 CDL 和 GDS ,无需再打开繁复的表单。再比如,遇到 Cellview 被锁的情况,右键一点,就能用 clsAdminTool 解锁,不用再跳出终端敲命令。

实现过程也不复杂,只需两个文件:

cdsLibMgr.il 定义一个菜单项(menu);

cdsLibMgrCallbacks.il 编写对应的回调逻辑。

接着,需要在 .cdsinit 中加载这个回调脚本,Virtuoso 启动时将自动识别并应用这些自定义菜单。

最终效果是:当我们在 Library Manager 中右键点击某个库、Cell 或 View,就能看到这些快捷操作项,直接点击即可执行。

wxv_3987847272619900933

(🎁如果你也想试试把这些功能集成进右键菜单,脚本文件已经准备好咯~ 后续我会分享在“交流群”里供大家参考~)

配置 libManager.log 日志文件的路径和命名方式

libManager.log 是由 Library Manager 生成的日志文件,默认情况下,用户从哪个路径启动 Virtuoso,该路径下就会留下 libManager.log 。项目多了之后,这类文件可能会散落在不同目录中,对于需要集中管理或保持目录整洁的用户来说,会带来一些不便。

针对这种情况,我们可以通过配置环境变量,控制日志文件的生成路径与命名方式,例如集中存放到指定目录,再根据用户 ID 来区分日志文件名称。

日志文件集中存放的配置方式

通过 cdsLibManager.log 下的 baseName 属性,可以设定日志文件的生成路径与文件名前缀。例如:

;; .cdsenv

cdsLibManager.log  baseName  string  "/libManLogs/libManager"

这条配置的含义是:将日志文件输出到 libManLogs 目录,并命名为 libManager.log

日志的最终路径由环境变量 CDS_LOG_PATH 决定(之前介绍过)。如果你设置成了 /home/users/logs

# .cshrc

setenv CDS_LOG_PATH /home/users/logs

最终的日志路径将变为 /home/users/logs/libManLogs/libManager.log

若未设置,则退回到当前目录的 ./libManLogs/libManager.log

按用户名区分文件

如果日志路径设置的是一个共享目录,不同用户生成的日志会重名并相互覆盖。通过启用 addUserID,可自动在文件名中添加用户名:

;; .cdsenv

cdsLibManager.log  addUserID  boolean  t

系统将为每位用户生成独立的 libManager.<userID>.log 文件:

libManager.zhangsan.log 
libManager.lisi.log

其中 zhangsan 和 lisi 是当前系统的用户名。

📌如果部署在多主机或并行使用场景下,还可以分别启用 addHostIDaddProcID 和 addSequence 扩展选项,来进一步区分日志来源。

控制删除库时是否保留注释行

在使用 Library Manager 删除库时,cds.lib 文件中会自动添加一行注释,记录被移除的库路径,例如:

#Removed by ddDeleteObj: DEFINE demolib /home/user/demolib

如果希望关闭该行为,可以在你的 shell 文件中添加如下环境变量:

# .cshrc

setenv DD_DELETE_DEFINE yes

设置后,Library Manager 删除库时将不再在 cds.lib 中保留相关注释。

📌如果你也遇到过 cds.lib 注释越来越长的情况,不妨试试这个小技巧吧。

其它常用的配置项

除了前面介绍的几个设置,Library Manager 还有一些日常使用中常见的配置项,我们可以根据实际需求来启用或调整。

配置项列表说明如下:

;; .cdsenv

; 是否在Library Manager窗口中默认显示“Category”一栏
cdsLibManager.main showCategoriesOn boolean t

; 设置打开Library Manager时,自动选中常用的库/分组/cell/view
cdsLibManager.main libraryText string "library_name"
cdsLibManager.main categoryText string "Everything"
cdsLibManager.main cellLevelText string "cell_name"
cdsLibManager.main viewLevelText string "layout"

; 在Library Manager窗口中双击CellView时,以只读方式打开
cdsLibManager.main dblClickEditCellView boolean nil

······

以上就是我常用的 Library Manager 配置方法。如果你也有自己的 Library Manager 使用技巧,欢迎 @兔二思 留言交流。

👏觉得有用,欢迎点赞、分享~

⋅ END ⋅