Virtuoso 工具中的关键文件说明

一、.cshrc 文件设置(环境变量配置)

.cshrc 是 C Shell 的环境配置文件,核心作用是指定 Cadence 软件安装路径、许可证(License)路径,并配置系统环境变量,让操作系统能找到 Cadence 执行文件和许可证服务。

  1. 配置示例(添加到~/.cshrc 末尾)

    ========== Cadence 环境变量配置 ==========

    1. 指定 Cadence 主安装路径(根据你的实际路径修改)

    setenv CDS_ROOT /usr/cadence/IC618

    2. 指定 License 文件/服务器路径(二选一)

    方式1:本地 License 文件

    setenv CDS_LIC_FILE /home/user/cadence_license.dat

    方式2:远程 License 服务器(格式:端口@服务器IP/主机名)

    setenv CDS_LIC_FILE 27000@licserver01

    3. 添加 Cadence 可执行文件到系统 PATH

    setenv PATH {CDS_ROOT}/tools/bin:{CDS_ROOT}/tools/dfII/bin:${PATH}

    4. 配置 Cadence 临时目录(避免权限问题)

    setenv CDS_TMPDIR /tmp/cadence_{USER} mkdir -p {CDS_TMPDIR}

    5. 其他辅助环境变量(可选)

    setenv CDS_Netlisting_Mode Analog
    setenv OA_HOME {CDS_ROOT}/tools/oa setenv LD_LIBRARY_PATH {OA_HOME}/lib/linux_rhel60_64/lib:${LD_LIBRARY_PATH}

2. 文件位置与优先级

Cadence 加载 .cds.lib 的顺序:→ 第一步:当前工作目录(./cds.lib)→ 第二步:用户主目录(~/cds.lib)→ 第三步:Cadence 默认配置($CDS_ROOT/share/cdssetup/cds.lib)。

  • 优先用 绝对路径 (如 /home/xxx/TSMC180),移动项目 / 切换目录时不会失效;

  • 相对路径仅适用于 "库目录在 .cds.lib 同目录下" 的场景;

  • 路径中禁止包含空格 / 特殊字符 (如 My Project → 改为 My_Project),否则 Cadence 无法识别。

  1. 关键说明
  • 路径修改CDS_ROOT 需替换为你实际的 Cadence 安装路径(如 ICADV123 路径为 /usr/cadence/ICADV123);

  • License 优先级CDS_LIC_FILE 若同时指定本地文件和服务器,优先使用本地文件;

  • 生效方法 :修改后执行 source ~/.cshrc 使配置立即生效,无需重启系统;

  • 权限问题CDS_TMPDIR 需确保当前用户有读写权限,否则 Cadence 启动会报错。

  1. 文件模板

二、.cdsenv 文件设置(Cadence 初始参数配置)

.cdsenv 是 Cadence 的环境参数配置文件,用 SKILL 语言编写,启动 Cadence 时自动加载,核心作用是定义软件的默认行为(界面、编辑器、验证工具参数等)。.cdsenv 文件包含了Cadence 软件的一些初始设置,该文件用SKILL 语言写,Cadence 可直接执行

  1. 配置示例(保存为~/.cdsenv)

    ========== Cadence 初始参数配置 ==========

    1. 版图编辑器(Virtuoso Layout)默认设置

    dfII.env.startupLayoutEditorOptions:
    list(
    "gridSpacing" 0.05 ; 默认网格间距(单位:um,根据工艺调整)
    "snapMode" "grid" ; 吸附到网格
    "displayMode" "color" ; 彩色显示
    "zoomSpeed" 1.5 ; 缩放速度
    )
    ; 2. 默认打开的设计库和单元格
    dfII.env.defaultLib: "TSMC180" ; 默认工艺库(需与 cds.lib 中定义一致)
    dfII.env.defaultCell: "INV" ; 默认单元格
    dfII.env.defaultView: "layout" ; 默认视图

    ; 3. DRC/LVS 验证工具参数
    drc.env.maxWorkers: 8 ; DRC 并行线程数(根据CPU核心数调整)
    lvs.env.ignoreUnconnected: nil ; 不忽略未连接的引脚
    lvs.env.abortOnFirstError: nil ; 不中断首次错误

    ; 4. 界面显示设置
    gui.env.fontSize: 12 ; 界面字体大小
    gui.env.backgroundColor: "white"; 背景色
    gui.env.showToolTips: t ; 显示工具提示

    ; 5. 文件保存参数
    file.env.autoSaveInterval: 5 ; 自动保存间隔(分钟)
    file.env.backupFiles: t ; 生成备份文件

  2. 关键说明

  • 语法规则 :SKILL 语言中,注释用 ;,键值对用 : 分隔,列表用 list() 包裹;

  • 生效方式:修改后重启 Cadence 生效;

  • 工艺适配gridSpacing 需匹配工艺节点(如 180nm 设 0.05um,7nm 设 0.005um);

  • 自定义扩展:可添加更多参数(如快捷键、默认输出路径)。

三、.cdsinit 文件设置(Cadence 启动脚本配置)

.cdsinit 是 Cadence 的启动脚本文件 ,同样用 SKILL 编写,优先级高于 .cdsenv,核心作用是执行自定义脚本(加载工艺文件、绑定快捷键、导入自定义函数等)。

  1. 配置示例(保存为~/.cdsinit)

    ========== Cadence 启动脚本配置 ==========

    ; 1. 自动加载工艺文件(Techfile)
    loadTechFile(
    "TSMC180" ; 工艺库名称(与 cds.lib 一致)
    "/home/user/techfiles/TSMC180.tf" ; Techfile 路径
    )

    ; 2. 绑定自定义快捷键(示例:F5 执行 DRC)
    hiSetBindKey("Layout" "F5" "drc()")
    hiSetBindKey("Layout" "F6" "lvs()")
    hiSetBindKey("Layout" "Ctrl+S" "dbSave()")

    ; 3. 加载自定义 SKILL 库(可选)
    load("/home/user/skill_lib/custom_drc.sk")

    ; 4. 关闭不必要的弹窗
    hiSetEnv("hiEnableStartupDialog" nil)
    hiSetEnv("hiEnableWelcomeDialog" nil)

    ; 5. 设置版图默认显示属性
    let( ()
    leSetDisplayOptions(
    list(
    "fillMode" "solid" ; 实心填充图层
    "highlightColor" "red" ; 高亮颜色
    "selectionColor" "blue" ; 选中颜色
    )
    )
    )

  2. 基本结构

    ;;; 加载公司标准配置
    load("/cadence/cdsinit/company_init.il")

    ;;; 设置默认工艺库
    ddGetObj("tsmcN65")~>defaultLib = "tsmcN65"

    ;;; 自定义快捷键
    hiSetBindKey("Layout" "Ctrl<Key>f" "geSelectAll()")
    hiSetBindKey("Schematic" "<Key>F2" "schHiSave()")

    ;;; 设置显示选项
    schHiSetDisplayOption('showPinNames t)
    schHiSetDisplayOption('showInstancePins nil)

    ;;; 自动加载常用库
    unless(getd('myLoadLibs)
    procedure(myLoadLibs()
    ddOpenLib("analogLib")
    ddOpenLib("basic")
    )
    )
    myLoadLibs()

2.1 快捷键设置

复制代码
;; Layout 编辑器快捷键
hiSetBindKey("Layout" "<Key>F3" "leHiCreateRuler()")
hiSetBindKey("Layout" "Ctrl<Key>c" "geDeleteRuler()")
hiSetBindKey("Layout" "<Key>q" "leHiPropertyForm()")

;; Schematic 编辑器快捷键
hiSetBindKey("Schematic" "<Key>i" "schHiInsertInstance()")
hiSetBindKey("Schematic" "<Key>w" "schHiWire()")
hiSetBindKey("Schematic" "<Key>p" "schHiCreatePin()")

2.2 自定义函数

复制代码
;; 快速保存所有打开的文件
procedure(mySaveAll()
  let((cv)
    foreach(cv geGetEditCellViewList()
      hiSave(cv)
    )
    printf("All files saved.\n")
  )
)
hiSetBindKey("Layout" "Ctrl<Key>s" "mySaveAll()")

2.3 环境设置

复制代码
;; 设置默认网格
schSetGrid("schematic" 0.01 0.01)
leSetGrid("layout" 0.005 0.005)

;; 设置鼠标滚轮缩放
hiSetMouseWheelZoomFactor(1.2)

;; 设置日志文件
setSkillLogFile(strcat(getShellEnvVar("HOME") "/skill.log"))

2.4 颜色设置

复制代码
;; 设置高亮颜色
hiSetHighlightColor("drawing1" "red")
hiSetHighlightColor("drawing2" "blue")

;; 设置默认层显示
leSetLayerVisible("M1" t)
leSetLayerVisible("M2" t)
  1. 关键说明
  • 与 .cdsenv 的区别.cdsenv 是 "参数配置",.cdsinit 是 "脚本执行",可实现更复杂的自定义逻辑;

  • 工艺文件加载loadTechFile() 需确保 Techfile 路径正确,否则启动后版图编辑器无法识别工艺图层;

  • 快捷键绑定hiSetBindKey() 的第一个参数是 "窗口类型"(Layout/Schematic),第二个是快捷键,第三个是执行的函数;

  • 报错处理:若脚本有语法错误,Cadence 启动时会弹出报错窗口,可根据提示定位问题。

四、cds.lib 文件设置(设计库定义配置)

cds.lib 是 Cadence 的设计库映射文件,核心作用是定义 "设计库名称" 与 "本地文件路径" 的关联,让 Virtuoso 能识别和访问工艺库、项目库、标准单元库等。

.cdsinit 是 Cadence 系列工具(如 Virtuoso、Spectre、IC617/IC618 等)的初始化脚本文件 ,类似 Linux 系统的 .bashrc 或 Windows 的批处理文件,使用 SKILL 语言 编写。Cadence 启动时会自动加载该文件,用于定制化软件环境、配置默认参数、加载自定义函数、设置快捷键等,是 Cadence 二次开发和环境定制的核心文件。

  1. 配置示例(保存到项目目录或~/cds.lib)

    ========== Cadence 设计库定义 ==========

    ; 1. 注释:用 # 或 ; 开头
    ; 2. DEFINE:定义库名与绝对路径(必选,工艺库/核心库)
    DEFINE TSMC180 /home/user/design_libs/TSMC180 ; 180nm 工艺库
    DEFINE MyProject /home/user/projects/ASIC/MyProject ; 自定义项目库
    DEFINE stdcells /home/user/design_libs/TSMC180_stdcells ; 标准单元库

    ; 3. INCLUDE:引入其他 cds.lib 文件(可选,复用配置)
    INCLUDE /usr/cadence/IC618/share/cdssetup/cds.lib

    ; 4. SOFTDEFINE:软定义(路径不存在时不报错,可选)
    SOFTDEFINE TestLib /home/user/test_lib

    ; 5. DELETE:删除已定义的库(可选)
    ; DELETE OldLib

    ; 6. CDSEnv:指定该库的专属 .cdsenv 文件(可选)
    CDSEnv MyProject /home/user/projects/ASIC/MyProject/.cdsenv

  2. 关键说明

  • 文件位置 :优先加载 "当前工作目录" 的 cds.lib,其次加载 ~/.cds.lib,建议每个项目单独配置;

    |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    | 项目目录 :当前工作目录下的 .cdsinit(仅对当前项目生效,优先级最高); 用户主目录~/.cdsinit(对当前用户全局生效,最常用); Cadence 安装目录$CDS_INST_DIR/tools/dfII/local/cdsinit(系统级默认配置,一般不修改)。 |

  • 路径规则

    • 绝对路径:DEFINE LibName /xxx/xxx(推荐,避免路径混乱);

    • 相对路径:DEFINE LibName ./libs(仅适用于项目内库);

  • 工艺库优先级:工艺库(如 TSMC180)需优先定义,否则后续设计无法调用工艺图层;

  • 生效方式:修改后在 Virtuoso 的 Library Manager 中执行 "Refresh" 即可生效,无需重启软件;

  • 常见错误:库路径不存在 / 权限不足时,Library Manager 中该库会显示为 "红色",需检查路径和权限。

总结

  1. 核心逻辑

    • .cshrc 是 "系统级" 环境配置(找软件、找 License);

    • .cdsenv/.cdsinit 是 "Cadence 级" 自定义(初始参数、脚本);

    • cds.lib 是 "设计库级" 映射(找工艺库、项目库)。

  2. 生效顺序source ~/.cshrc → 启动 Cadence → 加载 cds.lib → 执行 .cdsinit → 加载 .cdsenv

  3. 关键注意

    • 所有路径需确保当前用户有读写权限;

    • License 路径错误会导致 Cadence 无法启动;

    • Techfile 和 cds.lib 中的工艺库名称需一致,否则版图编辑器无法识别图层。

相关推荐
a程序小傲2 小时前
中国电网Java面试被问:Kafka Consumer的Rebalance机制和分区分配策略
java·服务器·开发语言·面试·职场和发展·kafka·github
Miracle&2 小时前
Github无法push
github
犹若故人归12 小时前
Github/Gitee和Git实践
git·gitee·github
无限进步_17 小时前
【C语言&数据结构】二叉树遍历:从前序构建到中序输出
c语言·开发语言·数据结构·c++·算法·github·visual studio
好想来前端21 小时前
私有化部署 LLM 时,别再用 Nginx 硬扛流式请求了 —— 推荐一个专为 vLLM/TGI 设计的高性能网关
后端·架构·github
charlie1145141911 天前
用 MkDocs + GitHub Actions 自动化部署项目文档
自动化·github
MemOS1 天前
MemOS 产品更新|支持全量获取用户记忆,记忆管理与对话体验提升
github
恋猫de小郭1 天前
Compose Multiplatform 1.10 Interop views 新特性:Overlay 和 Autosizing
android·flutter·macos·kotlin·github·objective-c·cocoa
极客小云1 天前
【增强版 X-AnyLabeling:支持多模态图像对比标注与 YOLO 标签自动导入】
yolo·目标检测·github·语义分割