本文始于2025年5月,在配置cadence软件设计环境时,往往需要对不同的配置文件进行自动加载,而常见的自动加载配置文件的方法是从各个Users自己home路径或当前项目工作路径进行自动加载,这样由于每个Users对每个文件都有编辑的权限,所以会在管理方面造成一定的困扰。然本文介绍的Cadence CSF功能就可以帮你统一指定自动加载的路径和配置文件,并且可以很好的对配置文件的权限进行统一管理。太棒了,特别方便。👏👏👏
1. 什么是Cadence CSF 机制?
📝 CSF,全称:Cadence Setup Search File,是一种特殊的搜索机制,是通过读取setup.loc文件和csfLookupConfig文件来定义应用程序在启动时如何搜索和配置相关文件(如:.cdsinit/.cdsenv/.simrc/display.drf等等)
setup.loc 和 csfLookupConfig 是两个不同层次的配置文件,各自负责不同任务,它们互相配合完成CSF(Cadence Setup Search File)机制的灵活查找。
配置文件 | 主要功能 | 工作关系 |
---|---|---|
setup.loc | 定义有哪些路径,都按什么顺序被搜索。 | 控制路径和搜索路径顺序。 |
csfLookupConfig | 定义有哪些文件需要使用CSF机制来搜索。 | 控制哪些具体文件需要套用setup.loc路径搜索。 |
🌟 大白话港:setup.loc 控制 “去哪找”,csfLookupConfig 决定 “找哪些文件要走CSF机制”。
2. Setup.loc文件
setup.loc 是一个文本文件,它列出了一系列路径,指定搜索顺序。文本中每一行就是一个搜索路径。
Cadence系统默认提供了一个标准的setup.loc
文件,通常放在:
your_install_dir/share/cdssetup/setup.loc
🔔 注意:setup.loc文件本身也通过 CSF 机制搜索。
🔔 请copy系统默认的setup.loc
文件到其他自己定义的路径进行修改,而不要在原文件上进行修改。
📁 setup.loc文件中默认的搜索目录
. #当前启动目录,默认是第一个被查找的路径;
@LIBRARY #定义在cds.lib中的库路径,按照定义的顺序依次查找;
$CDS_WORKAREA #个人项目目录,如果未定义,CSF会跳过这个位置;
$CDS_SEARCHDIR #已废弃,不推荐使用;
$HOME #用户家目录
$CDS_PROJECT #项目所在的目录,如果未定义,CSF会跳过这个位置;
$CDS_SITE #站点级的目录,一般用于安装默认时的配置或全公司或全项目的配置;
如果未定义,默认路径是:your_install_dir/share/local
$(compute:THIS_TOOL_INST_ROOT)/share #应用程序自己安装的share目录。
⚠️ 注意:这里要特别说明下,在实际的CSF搜索机制中,会对上述每个路径(@LIBRARY
除外)额外在查找其2个子路径(location/.cadence 与 location/cdssetup),与本身的路径(location)构成3个查找路径,而且这3个路径同样有搜索顺序要求。
以【$CDS_PROJECT】为例,构成的3个查找路径和搜索顺序如下;
$CDS_PROJECT/.cadence
$CDS_PROJECT
$CDS_PROJECT/cdssetup
而对于@LIBRARY
项,只会搜库定义的路径,且不会额外去.cadence
或cdssetup
子目录。
📚 对每个路径进行详细解释:
搜索位置 | 说明 | 是否需要手动设置 | 特别注意事项 |
---|---|---|---|
. | 程序启动时所在的当前工作目录。 | 否 | 默认第一个查找 |
@LIBRARY | 指通过 cds.lib 定义的各个库目录路径。 | 依赖 cds.lib 配置 | 搜索库所在目录路径,但不额外查找库中.cadence/ 、cdssetup/ 路径。 |
$CDS_WORKAREA | 当前工作区路径,通常是项目开发目录。 | 是,需要export或setenv设置环境变量路径 | 如果没定义,则跳过。用于项目局部设置。 |
$CDS_SEARCHDIR | 已废弃 | 不建议使用 | Cadence官方已标明废弃。 |
$HOME | 当前用户的home目录,比如 /home/username/ 。 | 否 | 默认存在,每个用户独立。 |
$CDS_PROJECT | 项目共享目录,比如整个项目工程目录。 | 是,需要export或setenv设置环境变量路径 | 如果没定义,则跳过。用于项目级通用配置。 |
$CDS_SITE | 站点级共享配置目录。 | 可设置可不设置 | 如果没设置,默认使用 your_install_dir/share/local 。 |
$(compute:THIS_TOOL_INST_ROOT)/share | 自动查找应用程序安装目录的 share 子目录。 | 无需设置,自动查找 | 保证无论安装在哪,都能找到正确的默认配置。 |
以【
为例,设置此环境变量的路径,如下;$CDS_PROJECT
】
setenv CDS_PROJECT /xxx/xxx/xxx/xxx #在.cshrc文件中设置;
export CDS_PROJECT=/xxx/xxx/xxx/xxx #在.bashrc文件中设置;
/xxx/xxx/xxx/xxx 代表设置的绝对路径。
🔔 如果在上述指定的路径下第一次找到了相关文件,搜索就会停止;如果没找到,会继续按照setup.loc文件中的顺序往下搜索。
🔔 这些路径也是查找setup.loc文件、csfLookupConfig文件、还有一些配置文件的路径。
3. csfLookupConfig文件
csfLookupConfig
是一个文本文件,用于指定哪些配置文件(如 .cdsinit
、.cdsenv
等)应通过 CSF 机制进行搜索。
默认情况下,只有 cds.lib
和 cdsinfo.tag
是通过 CSF 搜索的。若想让 .cdsenv
、.cdsinit
等文件也通过 CSF 搜索,就需使用 csfLookupConfig
文件。
📌 使用方法:
1️⃣ 创建文件
在 setup.loc
所指定的任意目录下(如 $HOME
, $CDS_SITE
),创建一个名为 csfLookupConfig
的文本文件。
例如:
$HOME/csfLookupConfig
或
$CDS_SITE/csfLookupConfig
🔔 注意:csfLookupConfig
文件本身也通过 CSF 机制搜索。
2️⃣ 写入配置内容
支持的关键字语法如下:
关键字 | 含义 |
---|---|
ALL | 所有配置文件都使用 CSF 搜索。 |
NONE | 不对任何文件使用 CSF 搜索。 |
INCLUDE file | 指定 file 要使用 CSF 搜索。 |
EXCLUDE file | 指定 file 不使用 CSF 搜索。 |
fileName | 与 INCLUDE fileName 等效。 |
LOAD fileName | 加载另一个 csfLookupConfig 文件,找不到时报错。 |
SOFTLOAD fileName | 同上,但找不到不会报错。 |
示例:
# 使用 CSF 搜索 .cdsinit 和 .cdsenv
INCLUDE .cdsinit
INCLUDE .cdsenv
💡 关键规则说明
- 每行只能指定一个文件;
- 支持注释:以
#
开头;
- 关键字不区分大小写;
- 后面出现的语句会覆盖前面;
ALL
NONE # NONE 会覆盖 ALL,最终不启用任何 CSF 搜索
- 不要用它来配置本就使用 CSF 的文件(如
cds.lib
,cdsinfo.tag
)。
4. 检查相关配置文件是否通过 CSF 搜索
🌟 使用命令
以配置文件.cdsenv文件和display.drf文件为例:
cdswhich -lookupconfig .cdsenv
cdswhich -lookupconfig display.drf
如果该文件通过 csfLookupConfig
配置了 CSF 搜索,会返回实际路径。否则会显示未配置消息,如下图;

5. 具体的CSF搜索机制流程
📘 Cadence 配置文件加载流程
1️⃣【阶段一】🔍 搜寻 setup.loc
文件 —— 确定搜索路径顺序
Cadence 启动时,首先会按照以下路径顺序查找 setup.loc
文件,一旦找到就停止:
. #当前启动目录,默认是第一个被查找的路径;
@LIBRARY #定义在cds.lib中的库路径,按照定义的顺序依次查找;
$CDS_WORKAREA #个人项目目录,如果未定义,CSF会跳过这个位置;
$CDS_SEARCHDIR #已废弃,不推荐使用;
$HOME #用户家目录
$CDS_PROJECT #项目所在的目录,如果未定义,CSF会跳过这个位置;
$CDS_SITE #站点级的目录,一般用于安装默认时的配置或全公司或全项目的配置;
如果未定义,默认路径是:your_install_dir/share/local
$(compute:THIS_TOOL_INST_ROOT)/share #应用程序自己安装的share目录。
对以上每个路径location,查找的顺序为:
location/.cadence/setup.loc
location/setup.loc
location/cdssetup/setup.loc
✅ 找到第一个合法的 setup.loc
文件后,Cadence会读取其中列出的路径,用来作为接下来的CSF搜索路径序列。
2️⃣【阶段二】🔍 搜寻 csfLookupConfig
文件 —— 决定哪些配置文件要使用 CSF 查找
使用【阶段一】读取到setup.loc
文章中的路径顺序,Cadence 接着依次查找 csfLookupConfig
文件。
对于每个路径 location,查找的顺序为:
location/.cadence/csfLookupConfig
location/csfLookupConfig
location/cdssetup/csfLookupConfig
🔎 如果找到第一个 csfLookupConfig
文件,即刻读取,后续路径不再查找。
然后对读取到的csfLookupConfig
文件进行解析;
以.cdsenv文件为例;
INCLUDE .cdsenv
:表示.cdsenv
文件应该使用 CSF 路径查找;ALL
:表示所有支持的配置文件(包括.cdsenv
)都使用 CSF;EXCLUDE .cdsenv
:排除.cdsenv
,不走CSF;NONE
:所有文件都不使用 CSF 机制;LOAD
,SOFTLOAD
:加载其他 csfLookupConfig 文件片段。
✅ 最终由这个被读取的csfLookupConfig
文件内容决定哪些配置文件是否启用CSF查找机制。
3️⃣【阶段三】🔍 搜寻配置文件 —— 执行路径查找
以 .cdsenv
文件为例,如果 .cdsenv
被 csfLookupConfig
标记为需要使用 CSF 机制:
Cadence 会对 setup.loc
中定义的每一个路径 location,按照如下顺序查找 .cdsenv
:
location/.cadence/.cdsenv
location/.cdsenv
location/cdssetup/.cdsenv
一旦在某个路径下找到 .cdsenv
,即停止继续查找,直接加载使用。
✔️ 至此结束一个配置文件按CSF机制查找的流程。
📚 简化的流程
【1】查找 setup.loc
└→ 按固定路径顺序查找,找到后读取路径序列
【2】查找 csfLookupConfig
└→ 按 setup.loc 中路径顺序查找第一个 csfLookupConfig
【3】解析 csfLookupConfig
└→ 判断 .cdsenv 是否需要走 CSF 搜索机制
【4】查找 .cdsenv
启用 CSF:
│ 每个路径按以下顺序查找:
│ a. location/.cadence/.cdsenv
│ b. location/.cdsenv
│ c. location/cdssetup/.cdsenv
6. 实际案例演示
以.cdsinit文件为例说明;
原因:目前大多数用户都是从当前工作路径或home路径作为自动加载路径,在实际项目中需要每个项目成员手动复制.cdsinit文件到对应路径下,作为版图leader可以通过setup.loc中的$CDS_PROJECT
环境变量,来统一指定.cdsinit文件,而无需每个人手动复制。
🧩 场景设定
- 使用
$CDS_PROJECT
指向项目路径:Project/kx000/v0
- 该目录下包含统一的
setup.loc
文件、.cdsinit
文件 和csfLookupConfig
文件 - 启动 Cadence 时自动加载此
.cdsinit
文件,无需用户拷贝
✅ 实际操作步骤
1️⃣ 第一步:设置环境变量
在启动 Cadence 前,设置对应shell 环境中设置环境变量:
setenv CDS_PROJECT /Project/kx000/v0 #cshrc文件
或
export CDS_PROJECT=/Project/kx000/v0 #bashrc文件
2️⃣ 第二步:准备目录结构和文件
📁 在目录 /Project/kx000/v0
中创建如下结构:
/Project/kx000/v0/
├── .cdsinit
├── csfLookupConfig
└── setup.loc
🧾 setup.loc
内容如下:
./
@LIBRARY
$CDS_WORKAREA
$HOME
$CDS_PROJECT
$CDS_SITE
$(compute:THIS_TOOL_INST_ROOT)/share
🧾 csfLookupConfig
内容如下:
INCLUDE .cdsinit
3️⃣ 执行流程说明(从启动到加载 .cdsinit)
【1】Cadence 启动
用户进入某工作目录,例如 /MyDesign
,执行 virtuoso &
启动程序。
【2】查找 setup.loc文件
Cadence 内部使用固定路径顺序查找 setup.loc
,其中包括 $CDS_PROJECT
:
./
@LIBRARY
$CDS_WORKAREA
$HOME
$CDS_PROJECT ← ✅ 命中 /Project/kx000/v0/setup.loc
$CDS_SITE
$(compute:THIS_TOOL_INST_ROOT)/share
【3】查找 csfLookupConfig
依照 setup.loc
读取的路径顺序,Cadence 会在每个路径尝试查找:
$CDS_PROJECT/.cadence/csfLookupConfig ❌
$CDS_PROJECT/csfLookupConfig ✅ ← 找到!
$CDS_PROJECT/cdssetup/csfLookupConfig ❌
Cadence 读取此文件,并解析内容:
INCLUDE .cdsinit #.cdsinit 文件需要用CSF路径搜索机制查找
【4】查找 .cdsinit(启用 CSF 路径机制)
Cadence 会根据 setup.loc
中的路径(此时至少包含 $CDS_PROJECT
)逐路径查找 .cdsinit
:
在 $CDS_PROJECT
下依次查找:
/Project/kx000/v0/.cadence/.cdsinit ❌
/Project/kx000/v0/.cdsinit ✅ ← 找到!
/Project/kx000/v0/cdssetup/.cdsinit ❌
✅ Cadence 成功加载该 .cdsinit
,停止搜索后续路径。
📦 最终效果
- 用户无需在当前目录复制
.cdsinit
- 系统通过环境变量
$CDS_PROJECT
成功定位到统一配置目录 csfLookupConfig
控制了.cdsinit
并启用;CSF搜索.cdsinit
自动从$CDS_PROJECT
目录加载,确保工程一致性
7. 参考
【1】caiuser.pdf
8. 获取参考文档
关注【藍色天空】博客的公众号,并在公众号里发送对应的下载关键字【KX003】获取下载链接。

