初始化

编程
0 字 / 约 0 分钟
2025/8/17

一篇让你从“找不到配置”到“指哪打哪”的 .cdsinit 速通手册。


1. 它是什么?

.cdsinit 是一个 SKILL 脚本,在 Cadence Virtuoso / Innovus / Spectre 等工具启动时由解释器自动执行,用来:

  • 加载个人或团队的 SKILL 代码
  • 绑定快捷键
  • 设置默认颜色、窗口、网格、仿真器参数
  • 集成第三方工具(Calibre、HSPICE、StarRC 等)

一句话:它是 Cadence 的 “开机自启脚本”


2. 加载顺序与搜索路径

Cadence 启动时会按以下优先级寻找 .cdsinit

  1. 当前启动目录 ./.cdsinit
  2. 用户家目录 ~/.cdsinit
  3. 项目级 $CDS_PROJECT/.cdsinit(通过 setup.loc+csfLookupConfig,见第 8 节)

一旦在某个路径找到文件,后续路径不再加载。
因此把文件放在 当前工作目录 优先级最高,便于版本管理。


3. 快速起步:30 秒生成自己的 .cdsinit

bash
# 初始化
cp $CDS_ROOT/tools/dfII/samples/local/cdsinit  ./.cdsinit

# 2. 打开文件,把“LOAD USER CUSTOMIZATION”之后的递归加载段 **全部注释掉**
# 3. 保存,完成

⚠️ 不注释会导致递归加载,启动直接卡死 。


4. 常用配置片段

功能代码示例
启动即开 Library ManagerddsOpenLibManager()
载入 Calibre DRC/LVSload("/opt/mentor/calibre/aoi_calibre.skl")
载入自定义快捷键load("./myBindKeys.il")
ADE 默认仿真器设为 HSPICEenvSetVal("asimenv.startup" "simulator" 'string "hspice")
波形窗口背景改白色envSetVal("viva.rectGraph" "background" 'string "white")
版图网格 0.005 umenvSetVal("layout" "minorGridSpacing" 'float 0.005)
自动加载 display.drfdrLoadDrf("./display_new.drf")

上述 envSetVal 也可写在 .cdsenv,区别只是语法:.cdsinit 是 SKILL,.cdsenv 是键值对。


5. 进阶:团队级统一配置

5.1 统一目录结构

/Project/kx000/v0/
├── .cdsinit           # 团队通用脚本
├── csfLookupConfig    # 告诉 Cadence 用 CSF 搜索
├── setup.loc          # 告诉 Cadence 到哪里找文件

5.2 设置环境变量

bash
# ~/.bashrc 或 ~/.cshrc
export CDS_PROJECT=/Project/kx000/v0   # bash
# setenv CDS_PROJECT /Project/kx000/v0 # csh

5.3 文件内容示例

csfLookupConfig

INCLUDE .cdsinit

setup.loc

./
@LIBRARY
$CDS_WORKAREA
$HOME
$CDS_PROJECT
$CDS_SITE

这样,团队成员 无需手动复制 .cdsinit,任何目录启动 Virtuoso 都会自动加载同一份脚本,保证环境一致 。


6. 调试技巧

  • 立即重载(无需重启 Virtuoso)
    CIW 输入:load("./.cdsinit")

  • 查看生效路径
    CIW 输入:getShellEnvVar("CDS_INIT_PATH")

  • 语法检查
    在 SKILl IDE 中打开 .cdsinit,按 Tools ▸ SKILL Lint。


7. 常见坑

现象原因解决
启动卡死递归加载 .cdsinit注释掉模板中的 loadi("./.cdsinit")
配置不生效同名变量被 .cdsenv 覆盖envSetVal 改放 .cdsenv 或调序
找不到文件相对路径出错使用绝对路径或 getCurrentDir()

8. 一张图总结

┌──────────────┐      ┌──────────────┐
│  终端敲 virtuoso  &  │──┬──► ./.cdsinit  (最高优先)
└──────────────┘  │    └──────────────┘
                  │    ┌──────────────┐
                  ├────► ~/.cdsinit
                  │    └──────────────┘
                  │    ┌──────────────┐
                  └────► $CDS_PROJECT/.cdsinit (团队级)
                       └──────────────┘

9. 参考与延伸阅读


现在,打开终端,敲下 cp ... ./.cdsinit,你的 Cadence 就已经在按照 你的规则 启动了!