RUNBOOK — EDA 工具链(IC617 / MMSIM151 / ASSURA41 / Calibre2015)¶
交付对象:接手日常运维与值班的人。所有命令可直接粘贴执行(占位符用
<尖括号>标注取值来源)。 安装档案见同目录SOP.md;备份台账见../backup/README.md。
目录¶
1. 服务概览¶
一套装在 NFS 共享(宿主 dell-R620)上的模拟 IC 设计工具链,六台计算节点经只读挂载使用:
| 组件 | 版本 | 安装路径(客户端视角) | 用途 |
|---|---|---|---|
| Cadence Virtuoso | IC 6.1.7-64b(IC617,Base 06.17.700) | /tools/cadence/virtuoso/IC617 |
原理图/版图/ADE |
| MMSIM | 15.10.284(Hotfix 独立安装) | /tools/cadence/mmsim/MMSIM151 |
Spectre / UltraSim / RelXpert |
| ASSURA | 04.15.001-617 | /tools/cadence/assura/ASSURA41 |
DRC / LVS / QRC |
| Calibre | 2015.2_36.27 | /tools/mentor/calibre/aoi_cal_2015.2_36.27/aoi_cal_2015.2_36.27 |
DRC / LVS(业界标准) |
- 依赖的 license 服务:Cadence floating license 服务位于
192.168.31.29(lmgrd5280 +cdslmd5281)。 该服务中断会影响 Virtuoso/Spectre/Assura 启动(Calibre 不受影响,见下)。 - Calibre license:
/tools/mentor/calibre/license.dat,HOSTID=ANY、无SERVER行,客户端直读文件,不依赖任何服务。 - 重要性等级:中高。工具不可用时,六台计算节点上的设计作业无法启动;不影响调度系统与节点本身。
- 环境变量下发:Lmod modulefile,不在 shell rc 里散落 export。
2. 接入与凭据¶
| 项 | 值 / 位置 |
|---|---|
| NFS 宿主 | dell-R620(192.168.31.249 = br0、192.168.31.250 = eno2),Ubuntu 24.04 |
| 共享导出 | /data/nfs/tools → 客户端 /tools(ro,noatime);/data/nfs/modulefiles → 客户端 /opt/modulefiles(rw) |
| license 服务 | 192.168.31.29,端口 5280/5281 |
| 客户端 | slurm-work-01/02/03(.18/.19/.20)、lsf-work-01/02/03(.25/.26/.27),Rocky Linux 9.8 |
| 凭据 | 本方案不使用文件内凭据;管理通道为 root SSH 免密(密钥由运维保管,不入库、不入文档) |
客户端加载工具:
module avail cadence # 预期列出 virtuoso/IC06.17.700、IC25.10.000(历史)
module load cadence/virtuoso/IC06.17.700 # IC617 + MMSIM + ASSURA 一并生效
module load siemens/calibre/2015.2_36.27 # Calibre
3. 日常速查表¶
| 目的 | 命令 |
|---|---|
| 看工具是否加载 | module list |
| IC617 版本 | virtuoso -version |
| Spectre 版本 | spectre -W |
| Assura 版本 | assura -version |
| Calibre 版本 | calibre -version |
| license 服务状态 | ssh root@192.168.31.29 'pgrep -ax lmgrd; pgrep -ax cdslmd; ss -lnt \| grep -E ":5280\|:5281"' |
| 某 feature 可用性 | /tools/cadence/virtuoso/IC617/tools/bin/lmutil lmstat -c 5280@192.168.31.29 -f 111 |
| 工具挂载是否正常 | findmnt -no SOURCE,OPTIONS /tools(预期 ro,noatime) |
| 共享目录可见性 | ls /tools/cadence/virtuoso/ |
4. 日常操作¶
加载/切换工具(每个会话独立):
module load cadence/virtuoso/IC06.17.700
virtuoso & # 图形界面;无头环境用 virtuoso -nograph
在无显示器环境做 license 自检(不启动 GUI):
source /etc/profile.d/modules.sh 2>/dev/null || true
module load cadence/virtuoso/IC06.17.700
cd /tmp && echo "exit" | virtuoso -nograph 2>&1 | tail -5
# 预期末行含:Virtuoso Framework License (111) was checked out successfully
NFS 宿主侧维护(仅在 dell-R620):
# 查看共享状态
sudo exportfs -v | grep tools
df -h /data/nfs/tools
# 查看工具链占用
sudo du -sh /data/nfs/tools/cadence/* /data/nfs/tools/mentor 2>/dev/null
客户端挂载点异常时(先确认宿主导出正常):
findmnt -no SOURCE,OPTIONS /tools # 预期 192.168.31.249:/data/nfs/tools ro
sudo mount -o remount /tools 2>/dev/null || echo "需联系宿主侧确认 NFS 服务"
5. 配置管理¶
| 配置项 | 位置 | 生效方式 | 易错点 |
|---|---|---|---|
| 工具环境变量 | /data/nfs/modulefiles/cadence/virtuoso/IC06.17.700.lua(宿主视角) |
客户端 module load 后生效 |
改完无需重启;Lmod 有缓存,必要时 module --force purge && module load ... |
| Calibre 环境变量 | /data/nfs/modulefiles/siemens/calibre/2015.2_36.27.lua |
同上 | MGLS_LICENSE_FILE 必须指向文件(该 license 无 SERVER 行) |
| LogoutStub/旧环境 | /etc/profile.d/、用户 ~/.bashrc |
— | 不要把 EDA 变量写进 shell rc,避免与 module 冲突 |
| license 服务定义 | 192.168.31.29:/opt/FlexLM/Cadence/cds.license.dat |
重启 lmgrd 生效 |
改 license 前先归档 lmgrd.log(lmgrd -l 会截断重写) |
| client 解析(历史坑) | 旧版用主机名 Flexlm,现 license SERVER 行写 IP |
— | 不要再改回主机名,否则客户端解析失败 |
IC617 在 Rocky 9 上必须的环境变量(已在 modulefile 中固化,手工排障时注意核对):
| 变量 | 值 | 为什么 |
|---|---|---|
OA_UNSUPPORTED_PLAT |
linux_rhel50_gcc48x |
Rocky 9 不在 OA 的 sysname 识别列表,不设则报 “OA requires running the Configure phase” |
LD_PRELOAD |
/lib64/libstdc++.so.6 |
Cadence 自带 libstdc++(GCC 4.8)缺 CXXABI_1.3.8/1.3.9,与系统 libGLU 冲突 |
CDS_LIC_FILE |
5280@192.168.31.29 |
指向 floating license 服务 |
系统级适配(一次性,六台客户端 + 安装端均需):
# LSB 解释器链接:Cadence 的 lmutil 等 32 位程序依赖它,缺失时报 "No such file or directory"
ls -l /lib/ld-lsb.so.3 /lib64/ld-lsb-x86-64.so.3
# 缺失时(root):
ln -s /lib/ld-linux.so.2 /lib/ld-lsb.so.3
ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
# libdl:新版 glibc 已并入 libc,Cadence 仍 dlopen("libdl.so")
ls -l /usr/lib64/libdl.so || ln -s libdl.so.2 /usr/lib64/libdl.so
6. 备份与恢复¶
| 内容 | 位置 | 说明 |
|---|---|---|
| patch 前工具库备份 | /data/nfs/tools/_ic617_media/backup/pre_patch_libs_<时间戳>.tar.gz(356M) |
cadence 三工具的 tools.lnx86/lib 目录,patch 修改的核心库在此 |
| 备份台账 | ../backup/README.md |
逐条登记(含 IC25 遗留 1patch) |
| 原始安装镜像 | 客户端 31.18 的 /var/tmp/ic617/(IC617+ASSURA,14G)、/var/tmp/mmsim/(3.3G)、/var/tmp/calibre/(2.2G) |
回滚兜底:重跑 iscape 即可回到未 patch 状态。确认工具稳定前不要删 |
| 介质总包 | /data/nfs/tools/_ic617_media/(12G) |
与本地 Cadence安装软件包/ 同源,验收后可删 |
恢复示例(回滚 IC617 到未 patch 状态):
# 1) 确认镜像仍在
ls /var/tmp/ic617/04.IC06.17.700_Base/ic_index.sdx
# 2) 删除已 patch 的安装目录(高危:确认路径无误后再执行)
sudo rm -rf /tools/cadence/virtuoso/IC617 # 需在 31.18 上以 rw 挂载执行
# 3) 重新安装(详见 SOP 第 5 章步骤 4)
sudo env -u DISPLAY /opt/iscape/iscape.04.23-s010/bin/iscape.sh -batch \
majorAction=InstallFromArchive \
archiveDirectory=/var/tmp/ic617/04.IC06.17.700_Base \
installDirectory=/tools/cadence/virtuoso/IC617
7. 监控与告警¶
| 关注点 | 怎么看 | 阈值/判据 |
|---|---|---|
| license 服务存活 | pgrep -ax lmgrd; pgrep -ax cdslmd;ss -lnt \| grep :5280 |
两进程在、5280/5281 LISTEN |
| license 是否被大量占用 | lmutil lmstat -c 5280@192.168.31.29 -a \| head |
605 条 feature 中绝大多数为 uncounted(不限席位) |
| 共享盘容量 | 宿主 df -h /data/nfs/tools |
1.8T,当前约 480G 使用;低于 10% 余量时清理历史版本 |
| 客户端挂载 | 六台 findmnt -no OPTIONS /tools |
必须含 ro(写权限被意外打开意味着误操作风险) |
| 工具目录权限 | find /tools/cadence /tools/mentor -perm /022 \| head |
应为空(无 group/other 写位) |
| 日志 | 宿主 lmgrd.log(license);客户端 $HOME/.vnc-cds/*、cds.log |
出现 DENIED 或 Invalid host 需排查 |
8. 故障处置¶
场景 A:virtuoso 起不来,报 Unable to obtain the 'Cadence(R) Design Framework II' license¶
症状:启动即退,提示 DB-320001。
诊断
module list # 确认 IC06.17.700 已加载
echo $CDS_LIC_FILE $OA_UNSUPPORTED_PLAT $LD_PRELOAD # 三个变量都应非空
ssh root@192.168.31.29 'pgrep -ax cdslmd; ss -lnt | grep :5280'
/tools/cadence/virtuoso/IC617/tools/bin/lmutil lmstat -c 5280@192.168.31.29 -f 111
处置:① 变量未加载 → module load cadence/virtuoso/IC06.17.700;② 服务端进程不在 → 在 31.29 上重启
lmgrd(先归档日志);③ lmstat 报错而服务在 → 检查客户端到 5280 的连通性
timeout 5 bash -c "</dev/tcp/192.168.31.29/5280" && echo ok。
验证:cd /tmp && echo "exit" | virtuoso -nograph 2>&1 | tail -3,末行含 checked out successfully。
场景 B:报 libnsl.so.1: cannot open shared object file¶
症状:virtuoso/spectre 启动时报缺库。
诊断
ldd /tools/cadence/virtuoso/IC617/tools/dfII/bin/64bit/virtuoso | grep "not found"
rpm -q libnsl libnsl.x86_64 libnsl.i686
处置:dnf -y install libnsl libnsl.i686(64 位给 virtuoso,32 位给 lmutil/老工具)。
验证:ldd ... | grep -c "not found" 为 0。
场景 C:报 libstdc++.so.6: version 'CXXABI_1.3.8' not found¶
症状:/lib64/libGLU.so.1 需要新 CXXABI,而 Cadence 自带 libstdc++ 较老。
处置:确认 module load 已设 LD_PRELOAD=/lib64/libstdc++.so.6;手工排障时:
LD_PRELOAD=/lib64/libstdc++.so.6 virtuoso -version
(副作用:32 位子进程会打印 wrong ELF class ... ignored 警告,无害。)
验证:能打印 virtuoso version 6.1.7-64b。
场景 D:报 The OA2.2 library directory .../linux_rhel50_gcc44x_64/opt does not seem to exist¶
症状:OA_UNSUPPORTED_PLAT 值与该安装的 OA 库平台不匹配。
诊断:ls /tools/cadence/virtuoso/IC617/share/oa/lib/(本安装只有 linux_rhel50_gcc48x_32/64)。
处置:设 OA_UNSUPPORTED_PLAT=linux_rhel50_gcc48x(注意是 gcc48x)。
验证:$CDS_ROOT/share/oa/bin/sysname 输出 linux_rhel50_gcc48x。
场景 E:Calibre 启动或运行时 license 报错¶
症状:Calibre 提示无法获取 license。
诊断
echo $MGLS_LICENSE_FILE # 预期 /tools/mentor/calibre/license.dat
head -3 /tools/mentor/calibre/license.dat # 该文件不应有 SERVER 行
/tools/mentor/calibre/aoi_cal_2015.2_36.27/aoi_cal_2015.2_36.27/bin/lmutil lmstat -c $MGLS_LICENSE_FILE
# 报 "No SERVER lines" 属正常(unserved 型);报缺文件才是故障
处置:确认 module load siemens/calibre/2015.2_36.27 已执行;文件缺失时从
192.168.31.29:/opt/FlexLM/Cadence/calibre.license.dat 重新取一份放到共享路径。
验证:calibre -drc 2>&1 | head -12 正常打印版本头且无 license 错误。
场景 F:客户端 lmutil 报 No such file or directory(文件明明存在)¶
症状:执行 32 位工具时找不到"文件"。
诊断:file <该程序> 看 interpreter;若为 /lib/ld-lsb.so.3 或 /lib64/ld-lsb-x86-64.so.3:
处置:按第 5 章「系统级适配」补 LSB 链接。
验证:<该程序> -v 能输出(如 lmutil v11.13.0.3 ... i86_lsb)。
场景 G:virtuoso 报 Command not found.(bash 则报 No such file or directory)¶
症状:module load 成功、which virtuoso 也能打印出路径,但直接执行就是找不到命令。
根因:virtuoso 是指向 share/bin/cdnWrapperWithOA2015 的软链,该 wrapper 为 #!/bin/ksh 脚本;
本机未装 ksh 时 execve 返回 ENOENT,外壳上报为"命令找不到"(与"PATH 里没有"是两回事)。
诊断
1. 确认解释器
bash
head -1 /tools/cadence/virtuoso/IC617/share/bin/cdnWrapperWithOA2015 # 预期 #!/bin/ksh
2. 确认本机是否缺 ksh
bash
rpm -q ksh; ls -l /bin/ksh 2>&1
3. 顺带查 32 位运行库是否也缺(新纳管节点常见)
bash
rpm -qa --qf "%{NAME}.%{ARCH}\n" | grep -c "\.i686$" # 六台预期 ≥139,新节点常为 0
处置:按 hpc_submit_eda_deps_20260927/docs/SOP.md 执行——ksh → glib2 两架构同步 →
i686 清单 → libnsl.i686 + mesa-libGLU.x86_64 → 三条 LSB/libdl 链接。
验证:实际启动进程(不是 which)
su - <用户> -s /bin/bash -c 'module load cadence; module load virtuoso/IC06.17.700; \
printf "exit()\n" | timeout 150 virtuoso -nograph' 2>&1 | tail -6
# 预期:Virtuoso Framework License (111) was checked out successfully
判据提醒:①
which通过 ≠ 能执行;②ldd <Cadence 二进制>在裸环境下会列出一百多个 "not found"(都是靠模块环境LD_LIBRARY_PATH解析的自有库),不可作为缺口依据; ③ 排查时用"与已知可用的节点做对照"最快——环境变量与共享盘因素先排除,差异即为节点本地缺口。
场景 H:启动 Virtuoso 时的两类"看着像报错、其实无害"的提示¶
| 提示 | 含义 | 处理 |
|---|---|---|
ERROR: ld.so: object '/lib64/libstdc++.so.6' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored. |
32 位启动器继承了 64 位的 LD_PRELOAD,内核直接忽略;随后的 64 位主程序仍会正常预载 |
无需处理。实测 .18 与 .28 各出现 5–7 次,属集群一贯现象(modulefile 用 LD_PRELOAD 规避 Cadence 自带 libstdc++ 的 CXXABI 缺失) |
*WARNING* ... partition '<tool>.<partition>' - it has not been registered. |
Cadence 读 cdsSetup/cdsenv 时,某工具分区在当前会话未注册(对应工具没启用),这些默认值不生效 |
无需处理。NCSU CDK 的 cdsenv 用 tool.partition varName type value 语法声明默认值(如 asimenv.plotting width int 900),只有对应工具启用时才应用;缺失只影响那一项默认值 |
放行判据:只要同时看到 ① Virtuoso Framework License ... was checked out successfully、
② Done loading NCSU_CDK customizations.、③ Library Manager 能列出 NCSU 库,
上述提示即可放行,不影响设计与仿真流程。
9. 安全与权限¶
- 工具目录:
root:root,目录/文件u=rwX,go=rX,客户端经 NFS 只读 访问,无 group/other 写位。 - 六台客户端与宿主 root 通道为 SSH 免密;密钥不入库、不写文档。
- license 文件为文件式,含 feature 授权信息但不含账号/口令;共享目录权限 644。
- 变更
/tools挂载读写属性、修改 license 服务、动/data/nfs下目录均属高危,须走变更流程(SOP)并留备份。
10. 容量与性能¶
| 项 | 当前值 | 说明 |
|---|---|---|
| 共享盘 | 1.8T 总,约 480G 用(27%) | 工具链本体约 24G;镜像暂存 12G + 解压 20G(验收后可回收) |
| 工具链占用 | IC617 9.3G / MMSIM 4.7G / ASSURA 4.6G / Calibre 5.2G | — |
| 安装端本地盘 | 31.18 / 99G,用 7% |
/var/tmp 下的解压镜像占约 20G,确认稳定后可清理 |
| 扩容触发 | 共享盘余量低于 10%,或新增工具版本 | 新增版本按 cadence/<类别>/<版本> 三级目录追加,不覆盖旧版 |
| 已知瓶颈 | NFS 写入小文件慢 | 安装/升级尽量在安装端本地完成后再同步;大版本安装预留时间窗口 |
11. 附录¶
术语:DFII = Design Framework II(Cadence 平台 feature,license 编号 111);ISR/Hotfix = 增量发布包; uncounted = 不限并发席位的 license 计数方式。
相关文档
| 文件 | 内容 |
|---|---|
SOP.md(同目录) |
本次安装的完整变更档案(步骤、验证、回滚、风险) |
../backup/README.md |
备份台账 |
../../license_srv_20260926/docs/RUNBOOK.md |
Cadence license 服务运行手册 |
../../ic25_install_20260924/docs/HANDOFF.md |
IC25 工程状态与红线(历史,权威) |
修订记录
| 日期 | 修改人 | 内容 |
|---|---|---|
| 2026-09-27 | rain(配合 Trae) | 初版:IC617/MMSIM151/ASSURA41/Calibre2015 安装交付 |
来源:
/home/rain/Documents/eda_tools_ins/Cadence/ic617_install_20260926/docs/RUNBOOK.md| 最后更新:2026-09-27 23:08(由build/sync.py同步,请勿在站点侧修改)