环境搭建与启动:安装配置、许可证设置、环境变量、常用启动命令及基本工程目录结构

Cadence Xcelium 是业界领先的数字仿真器,支持 Verilog、SystemVerilog、VHDL 及混合语言仿真。在实际工程中,环境搭建的规范性直接决定了仿真效率与团队协作的顺畅度。本章围绕 Xcelium 的安装配置、许可证(License)管理、环境变量设置、启动命令(xrun 与 xcelium)以及标准工程目录结构展开,帮助读者建立一套可复用、可维护的仿真环境基线。

Xcelium 仿真环境搭建与启动链路 1. 安装与许可 安装路径 /tools/cadence License 服务 / 环境变量 CDS_LIC_FILE / LM_LICENSE_FILE 2. 环境变量配置 PATH / XCELIUM_HOME LD_LIBRARY_PATH CDS_AUTO_64BIT / 其他 3. 启动命令 xrun / xcelium -f 文件列表 / -access -timescale / -q / -gui 4. 工程目录结构 rtl/ tb/ scripts/ work/ logs/ reports/ Makefile / filelist.f 典型启动流程 1. 检查 license(lmstat / license.dat) 2. source 环境脚本(.cshrc / .bashrc) 3. 进入工程目录,执行 xrun -f filelist.f 仿真输出与日志 xrun.log / waves.shm / coverage / 退出码 0 或 1

上图展示了从安装许可到最终仿真输出的完整链路。下面我们将按照“安装配置 → 许可证设置 → 环境变量 → 启动命令 → 工程目录”的顺序逐一深入,并在每个环节给出可直接落地的操作方法和常见问题规避策略。

2.1 安装配置:从介质到可用的仿真器

Xcelium 的安装并非简单的解压复制,而是需要结合操作系统版本、文件系统权限、依赖库以及后续工具链(如 Verdi、Genus)的协同。安装前应确认 Linux 发行版(RHEL/CentOS 7/8、Ubuntu 20.04+)与 Xcelium 版本的兼容性矩阵。Cadence 官方通常提供 InstallScape 图形化安装工具,也支持命令行静默安装。

核心安装步骤:

  1. 创建专用用户与目录:建议使用非 root 用户(如 eda),安装目录统一放在 /tools/cadence 或 /opt/cadence 下,避免权限混乱。
  2. 挂载安装介质:将 ISO 或 tar 包挂载/解压到临时目录,运行 ./SETUP.SH 或 InstallScape。
  3. 选择安装组件:至少包含 Xcelium 主程序、Simulation Library(如 xcelium_lib)、文档与示例。若需要混合仿真,还需勾选 VHDL 库。
  4. 配置安装路径:例如 /tools/cadence/xcelium/20.09,注意版本号目录便于多版本共存。
  5. 验证安装:进入安装目录的 bin 子目录,执行 ./xrun -version,应输出类似 xrun 20.09-p001 的版本信息。
风险提示:安装路径中不要包含中文、空格或特殊符号,否则会导致仿真器无法解析库文件路径。另外,/tmp 空间不足也会导致安装失败,建议预留至少 20GB 临时空间。

2.2 许可证设置:让仿真器“拿到钥匙”

Xcelium 运行前必须获取有效的 License。Cadence 使用 FlexNet 许可证管理机制,常见方式有两种:指向许可证服务器(浮动 License)或使用本地 License 文件。对于企业级团队,推荐使用服务器模式,便于集中管理和监控。

关键环境变量:

变量名作用示例值
CDS_LIC_FILECadence 专用 License 指向,优先于 LM_LICENSE_FILE5280@license_server
LM_LICENSE_FILE通用 FlexNet 变量,可包含多个 vendor 的 License5280@license_server
CDS_ROOTCadence 安装根目录(部分版本需要)/tools/cadence

配置流程:

  1. 在服务器上启动 lmgrd 守护进程,加载 license.dat 文件。
  2. 在客户端(仿真机)上设置 CDS_LIC_FILE 指向 port@host。
  3. 使用 lmstat -a -c 5280@license_server 检查 License 是否可用。
经验提醒:如果同时使用 Synopsys 和 Cadence 工具,建议将 LM_LICENSE_FILE 设置为 5280@server1;27000@server2,用分号分隔多个服务器。但 CDS_LIC_FILE 只写 Cadence 的 License,避免冲突。

2.3 环境变量配置:让 Shell 找到工具

环境变量是连接操作系统与仿真器的桥梁。配置不当会导致“command not found”或动态库加载失败。推荐在 .bashrc 或 .cshrc 中集中管理,并采用模块化脚本(如 env_setup.sh)便于团队复用。

最小必要变量集:

# Xcelium 安装路径
export XCELIUM_HOME=/tools/cadence/xcelium/20.09
# 可执行文件路径
export PATH=$XCELIUM_HOME/bin:$PATH
# 动态库路径(64位)
export LD_LIBRARY_PATH=$XCELIUM_HOME/lib:$LD_LIBRARY_PATH
# License 指向
export CDS_LIC_FILE=5280@license_server
# 强制使用 64 位模式(可选)
export CDS_AUTO_64BIT=64
# 仿真器工作目录(可选)
export XRUN_WORK_DIR=./work

验证方法:执行 which xrun 应返回 /tools/cadence/xcelium/20.09/bin/xrun;执行 echo $LD_LIBRARY_PATH 确认包含 lib 路径。若使用 C Shell,将 export 替换为 setenv,语法略有不同。

实战场景:某项目组在迁移服务器后,所有仿真任务报错 libxrun.so: cannot open shared object file。排查发现新服务器未设置 LD_LIBRARY_PATH,且 XCELIUM_HOME 指向了旧路径。修正环境变量后,仿真恢复正常。建议在 CI 脚本中每次构建前显式 source 环境文件,避免依赖用户默认 Shell 配置。

2.4 常用启动命令:xrun 与 xcelium

Xcelium 提供两种启动方式:xrun(推荐,统一编译仿真入口)和 xcelium(底层命令,通常由 xrun 内部调用)。对于绝大多数场景,直接使用 xrun 即可,它自动处理编译、elaboration 和仿真三个阶段。

xrun 常用选项分类:

类别选项说明
文件输入-f filelist.f从文件列表读取源文件
编译选项-timescale 1ns/1ps指定默认时间单位和精度
访问权限-access +rwc允许波形记录和内部信号访问
仿真控制-q安静模式,减少日志输出
GUI 模式-gui启动 SimVision 图形界面
覆盖率-coverage all使能代码/功能覆盖率收集

典型启动示例:

# 编译并仿真,输出波形
xrun -f filelist.f -timescale 1ns/1ps -access +rwc -gui

# 命令行批量回归
xrun -f filelist.f -q -coverage all -log xrun.log

# 仅编译不仿真
xrun -f filelist.f -elaborate -exit
常见误区:不要直接使用 xcelium 命令替代 xrun,因为 xrun 会处理多语言编译顺序和库映射。另外,-access +rwc 中的 r(读)、w(写)、c(调用)权限应根据调试需求开启,过度开放会降低仿真性能。

2.5 基本工程目录结构:从混乱到有序

一个规范的工程目录不仅便于个人管理,更是团队协作和自动化回归的基础。推荐采用以下分层结构,兼顾可读性与扩展性:

project_root/
├── rtl/                # 设计源文件(.v/.sv/.vhd)
│   ├── module_a/
│   └── module_b/
├── tb/                 # 测试平台文件
│   ├── testcases/      # 各测试用例
│   └── sequences/      # 激励序列
├── scripts/            # 仿真脚本、Makefile、filelist
│   ├── filelist.f
│   └── run_sim.sh
├── work/               # 仿真中间文件(自动生成)
├── logs/               # 仿真日志
├── reports/            # 覆盖率报告、断言报告
└── waves/              # 波形文件(.shm/.fsdb)

目录设计原则:

  • 源文件与生成文件分离:rtl/ 和 tb/ 只存放源码,work/、logs/ 等由工具自动生成,避免版本管理混乱。
  • filelist 集中管理:在 scripts/filelist.f 中按编译顺序列出所有源文件,支持 +incdir+ 指定包含目录。
  • Makefile 封装常用命令:提供 make sim、make clean、make regress 等目标,降低使用门槛。
案例拆解:某 IP 验证团队初期将 RTL 和 TB 混放在同一目录,导致回归脚本频繁报错“文件重复定义”。重构后采用上述目录结构,并在 filelist.f 中按模块分组,配合 make regress 批量跑 200 个用例,脚本稳定性显著提升。关键改动包括:将 work 目录加入 .gitignore,每次仿真前自动清空 work 和 logs,避免旧文件干扰。

2.6 环境验证与排障清单

环境搭建完成后,建议执行一套快速自检流程,确保后续仿真不会因环境问题中断。

检查项命令/方法预期结果
License 可用lmstat -a -c 5280@server显示 Xcelium 功能已 checkout
版本正确xrun -version输出 20.09 或更高版本
库文件加载ldd $XCELIUM_HOME/bin/xrun无 “not found” 条目
最小仿真运行 hello_world 示例仿真结束,退出码 0

常见问题速查:

  • “License request failed”:检查 CDS_LIC_FILE 拼写、服务器端口是否开放、License 是否过期。
  • “Cannot open file”:确认 filelist 中的相对路径基于工程根目录,而非当前执行目录。
  • “Segmentation fault”:多为 32/64 位库混用,设置 CDS_AUTO_64BIT=64 并确保 LD_LIBRARY_PATH 指向 64 位库。
总结复盘:环境搭建的核心是“标准化”与“可重复”。建议将环境配置脚本纳入版本管理,并在新员工入职或服务器迁移时直接复用。对于大型项目,可进一步编写 env_check.sh 自动检测所有依赖项,将排障时间从小时级压缩到分钟级。