SOP — IC617 + MMSIM15.10.284 + ASSURA04.15 + Calibre2015 集群安装¶
状态:实施中(2026-09-26 开工)。安装执行端 = slurm-work-01(192.168.31.18,Rocky 9.8)。 介质与文档端:dell-R620(Ubuntu 24.04.3)。第 5 章「预期输出」为预判,实施后按实测回填。
目录¶
1. 背景¶
集群(六台 Rocky Linux 9.8 计算节点)需要可用的模拟 IC 设计工具链。此前安装的 IC25.10 已卸载
(介质与旧 license 均无副本,不可回滚),现改用介质 Cadence安装软件包/ 中的旧版工具链。
License 侧已就绪(license_srv_20260926/docs/):
- Cadence:31.29 上的 floating license 服务运行中(5280,605 条 HOSTID=ANY / permanent uncounted FEATURE);
- Calibre:/opt/FlexLM/Cadence/calibre.license.dat(88 条 FEATURE、HOSTID=ANY、无 SERVER 行),
客户端直读文件即可。
触发条件是 license 已具备、介质已回传,可以开始工具侧安装。
已定的两个口径(2026-09-26 讨论结论):
1. 安装位置沿用 IC25 模式:装在 NFS 宿主 dell-R620 的 /data/nfs/tools 下,六台客户端只读挂载,客户端零安装;
2. MMSIM 只有 Hotfix 284,直接按 Hotfix 独立安装,不再找 Base 介质(依据见附录 C)。
2. 目标¶
变更完成后应达到的可验证状态:
| # | 目标状态 | 验证手段 |
|---|---|---|
| 1 | /data/nfs/tools 下四个工具就位且路径固定 |
test -d 四路径 + 版本目录无漂移 |
| 2 | 六台客户端可执行工具二进制且 32 位依赖零缺失 | 逐台 ldd 真缺计数 = 0 |
| 3 | 工具能拉到 license 并打印版本 | virtuoso -version / spectre -version / assura -version / calibre -version |
| 4 | Spectre 具备完整功能(证明 Hotfix 包自足) | 最小 Spectre 网表仿真出结果 |
| 5 | 权限收敛:root 属主、无 group/other 写位、客户端只读 | find -perm /022 为空 + 客户端 test -w 失败 |
| 6 | 环境变量由 modulefile 下发,不再手工 source bashrc |
module load cadence/IC617 后变量与命令可用 |
| 7 | 幂等:复跑零变更、全跳过 | 连续两次执行,第二次全 skipped(由实现体状态探测保证,非安装器原生行为,见 D.7) |
3. 前置条件¶
| 类别 | 检查项 | 判据 |
|---|---|---|
| 权限 | 本机 sudo 免密 | sudo -n true 返回 0(已实测通过) |
| 权限 | 六台客户端 root 免密 | ssh root@<node> whoami 六台全通(已实测通过) |
| 介质 | 12 个介质文件 sha256 落盘 | 记录到 config/media.sha256,逐一比对 |
| 介质 | IC617 两分卷拼接后 zip 完整 | unzip -t 无错 |
| 空间 | 镜像暂存盘 | / 或 /data 可用 ≥ 80G(镜像解压约 40G + ASSURA/Calibre 约 10G) |
| 空间 | 安装目标盘 | /data/nfs/tools 可用 ≥ 60G(当前 1.3T,充足) |
| 环境 | 六台客户端 OS | Rocky Linux 9.8 x86_64(已实测) |
| 环境 | 客户端包源可达 | dnf repolist 含 baseos/appstream/epel(已实测) |
| 环境 | 本机工具链 | python3 3.12、7z、unzip、tar(已实测);iscape 自带 JRE(IC25 已实证) |
| 业务 | 无在跑作业 | 三台 slurm 节点 squeue -h -w <node> 空;三台 lsf bhosts 无 RUN |
| 冲突 | 目标目录不残留半装 | 四目标路径不存在或为空(现仅剩 virtuoso/1patch 残留,见步骤 2) |
4. 影响范围¶
- 安装执行端:slurm-work-01(192.168.31.18,Rocky 9.8),经
ssh root@192.168.31.18直连。 选它而非宿主:安装链路含需执行 32 位二进制的 Configure 阶段,Rocky 9 的 i686 库与运行端同构; 宿主 dell-R620 是 Ubuntu 24.04,其 i386 为 allowlist 部分移植,缺libXp等老 X 库。 - 变更对象:安装端 slurm-work-01(系统依赖包 + 临时 rw 挂载 + 工具安装); 其余五台(31.19/.20/.25/.26/.27)仅装系统依赖包并下发 modulefile。
- 人工动作:31.18 上
/tools由ro临时改rw,装完恢复ro;该步骤手动执行,不纳入部署工具。 - 共享影响:
/data/nfs/tools下新增四条工具链目录(只增不删);六台经只读挂载被动可见; 介质暂存/data/nfs/tools/_ic617_media(9.3G + ASSURA 2.7G)安装完成后删除。 - 是否停服:否。不重启服务、不改 NFS 导出、不动 license 服务(
lmgrd/cdslmd保持运行)。 - 窗口期:装
*.i686包会触发系统库变更,装依赖的节点必须无在跑作业;安装端 31.18 整个安装窗口保持空闲。 - 不可逆点:步骤 6 的二进制 patch(
sfk原地替换)无法通过配置回滚,只能靠备份还原(见第 7 章)。
5. 分步操作¶
实现体规划(尚未编写):Python 工程,
main.py(precheck/deps/media/install/patch/verify/rollback/drift),deployer.py+utils/,配置config/ic617_install.yaml(样例.example)。 幂等、三态探测、备份、失败 2 次即停由实现体保证。下列 shell 为实现体在机器上真实执行的等价动作。
步骤 0:预检(只读)¶
一次性汇总全部 BLOCK 项,不因首项失败即退。介质 sha256 与六台依赖缺口是本步核心产物。
cd <project_root>
sha256sum Cadence安装软件包/*.zip Cadence安装软件包/*.zip.00* Cadence安装软件包/ASSURA/*.tar > config/media.sha256
df -B1G --output=avail /data /data/nfs/tools # 预期 /data ≥80G、/data/nfs/tools ≥60G
sudo -n true && echo sudo-ok
for h in 192.168.31.18 192.168.31.19 192.168.31.20; do # slurm 三台
ssh root@$h 'squeue -h -w $(hostname) | wc -l' # 预期 0
done
for h in 192.168.31.25 192.168.31.26 192.168.31.27; do # lsf 三台
ssh root@$h 'bhosts $(hostname) 2>/dev/null | tail -n +2' # 预期无 RUN 作业
done
for h in 192.168.31.18 192.168.31.19 192.168.31.20 192.168.31.25 192.168.31.26 192.168.31.27; do
ssh root@$h 'rpm -qa --qf "%{NAME}.%{ARCH}\n" | grep -c i686' # 预期 0(六台当前均为 0)
done
预期:全部检查落盘 reports/precheck-<时间戳>.yaml;无 BLOCK 时退出码 0。
失败判断:任一 BLOCK → 终止,不进入步骤 1。
步骤 1:32 位运行库与基础包(六台客户端)¶
IC617 主体是 32 位程序(2017 世代),Rocky 9 默认不装任何 i686 包。实测六台 i686 包数均为 0,
且 libXp/motif/mesa-libGLU 仅有 x86_64 版本。
坑:
① 清单里绝大多数 i686 包在 Rocky 9 官方源(baseos/appstream)可得,无需引第三方源;
② ncompress 只在 EPEL(六台已启用 epel);ksh/xterm 未装;
③ redhat-lsb-core 在 Rocky 9 源中不可得,需手工补 /lib64/ld-lsb-x86-64.so.3 符号链接
(IC25 时期已有同样先例);
④ csh 由 tcsh 提供(六台已装 tcsh,不要再装 csh 包);
⑤ 装 i686 库会触发系统包变更,该节点必须无在跑作业。
for h in 192.168.31.18 192.168.31.19 192.168.31.20 192.168.31.25 192.168.31.26 192.168.31.27; do
ssh root@$h 'dnf -y install ksh xterm ncompress \
glibc.i686 libgcc.i686 libstdc++.i686 glibc-devel.i686 \
libXext.i686 libXtst.i686 libXi.i686 libXrender.i686 libXp.i686 libXmu.i686 libXt.i686 \
libXpm.i686 libXrandr.i686 libXcursor.i686 libXinerama.i686 libXcomposite.i686 \
libXdamage.i686 libXfixes.i686 libXScrnSaver.i686 libICE.i686 libSM.i686 \
libuuid.i686 libselinux.i686 ncurses-libs.i686 zlib.i686 libpng.i686 \
elfutils-libelf.i686 glib2.i686 gtk2.i686 mesa-libGL.i686 mesa-libGLU.i686 motif.i686'
done
# LSB 解释器链接(redhat-lsb-core 在 el9 源不可得)
for h in 192.168.31.18 192.168.31.19 192.168.31.20 192.168.31.25 192.168.31.26 192.168.31.27; do
ssh root@$h 'test -e /lib64/ld-lsb-x86-64.so.3 || ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3'
done
预期:六台 dnf 返回 0,无 Error: Unable to find a match。
失败判断:出现无法解析的包名 → 记入 reports/deps-gap-*.md,按附录 B 的兜底途径处理后再重跑本步。
步骤 2:介质准备(本机)¶
IC617 是 split zip(.001 + .002,.002 无 zip 头),须先拼接;ASSURA 三卷是同一目录树的
不同分片(不是 split,顺序解压到同一目录即可);Calibre 是 Mentor 自解压包。
坑:
① 拼接后总大小应为 4.8G 左右,明显偏小即介质不全;
② 目标目录当前残留 virtuoso/1patch(IC25 卸载遗留),不要盲删,先移到 backup/ 留档;
③ 解压到本机 scratch(/data 盘),不要解到 NFS 共享目录再搬运,省一次 IO。
cd <project_root>
mkdir -p scratch
# ① IC617 分卷拼接 + 完整性校验
cat "Cadence安装软件包/04.IC06.17.700_Base.zip.001" "Cadence安装软件包/04.IC06.17.700_Base.zip.002" > scratch/IC617_Base.zip
unzip -t scratch/IC617_Base.zip | tail -n 2 # 预期 No errors detected
unzip -q scratch/IC617_Base.zip -d scratch/ # 产出 04.IC06.17.700_Base/CDROM1/...
# ③ ASSURA 三卷解到同一目录
mkdir -p scratch/assura
for i in 1 2 3; do tar -xf "Cadence安装软件包/ASSURA/Update_ASSURA04.15.001-617_lnx86_${i}of3.tar" -C scratch/assura; done
# ④ Calibre 自解压(默认释放到当前目录)
mkdir -p scratch/calibre && cd scratch/calibre
unzip -o "<project_root>/Cadence安装软件包/06.Calibre.2015.zip"
chmod +x aoi_cal_2015.2_36.27_mib.exe && ./aoi_cal_2015.2_36.27_mib.exe -x # 解包,不安装
# 迁移 IC25 残留
mv /data/nfs/tools/cadence/virtuoso/1patch <project_root>/backup/legacy-1patch-IC25
预期:scratch/ 下出现 IC617 的 CDROM1(含 IS*.t.Z 与 kits/)、ASSURA 的 CDROM1/kits/、Calibre 的 ixl_cal_* 目录。
失败判断:unzip -t 报错 → 介质不完整,停止并索取新介质。
步骤 3:镜像内二进制依赖预验证(只读,本步是"一次备齐依赖"的关键)¶
在安装之前,直接用待装镜像里的 32 位二进制做 ldd 缺件扫描,把依赖问题一次性暴露,
避免"装到一半发现缺库"。
# 以 IC617 镜像为例;MMSIM/ASSURA/Calibre 同理
find <project_root>/scratch/04.IC06.17.700_Base/CDROM1 -type f -name "cds_root" -o -name "cdsXvncd" | head
ssh root@192.168.31.18 'ldd /tools/cadence/virtuoso/IC617/tools/bin/cds_root 2>&1 | grep -c "not found"'
预期:真缺计数 = 0。失败判断:出现 not found → 按附录 B「候选兜底」补齐后重跑本步,未清零不进步骤 4。
步骤 4:InstallScape 就位与批处理安装¶
InstallScape 04.23 在介质内(03.InstallScape.zip;05 包内另有一份同版本)。本机已有 IC25 遗留的
/opt/iscape/iscape.05.01-p001,可复用为安装器(ic_index.sdx 要求 InstallScapeVersion=04.21.b01,高版本兼容)。
坑:
① 目标目录须 root 属主,先 sudo mkdir 预建;
② InstallScape 需无 DISPLAY 环境跑批处理;
③ MMSIM 安装时 OA 目录必须指向 IC617 的 OA(否则 spectre 找不到 OA);
④ 本步失败会留「半装」中间态,重跑前须先清理安装目录(见第 7 章)。
sudo mkdir -p /opt/iscape && cd /opt/iscape
unzip -p <project_root>/Cadence安装软件包/03.InstallScape.zip 03.InstallScape/IScape04.23-s010lnx86.t.Z > /tmp/IScape04.23.t.Z
zcat /tmp/IScape04.23.t.Z | sudo tar -xf - -C /opt/iscape
sudo mkdir -p /data/nfs/tools/cadence/virtuoso/IC617
sudo env -u DISPLAY /opt/iscape/iscape.05.01-p001/bin/iscape.sh -batch \
majorAction=InstallFromArchive \
archiveDirectory=<project_root>/scratch/04.IC06.17.700_Base/CDROM1 \
installDirectory=/data/nfs/tools/cadence/virtuoso/IC617
预期:rc=0,logs/iscape_*.log 无 ERROR,目标目录出现 tools.lnx86/dfII/bin/virtuoso。
失败判断:超时(默认 7200s)或探测到「半装」→ 第 7 章回滚后重跑。
四个工具的目标路径与顺序:
| 顺序 | 工具 | 安装目标 | 备注 |
|---|---|---|---|
| 1 | IC617 Base | /data/nfs/tools/cadence/virtuoso/IC617 |
先装,供 MMSIM 指 OA |
| 2 | MMSIM15.10.284(Hotfix 独立装) | /data/nfs/tools/cadence/mmsim/MMSIM151 |
OA 指向 IC617 的 OA |
| 3 | ASSURA04.15.001 | /data/nfs/tools/cadence/assura/ASSURA41 |
三卷解压后同法 |
| 4 | Calibre2015.2_36.27 | /data/nfs/tools/mentor/calibre/aoi_cal_2015.2_36.27 |
Mentor 单独厂商目录 |
步骤 5:权限收敛¶
for d in /data/nfs/tools/cadence/virtuoso/IC617 /data/nfs/tools/cadence/mmsim/MMSIM151 \
/data/nfs/tools/cadence/assura/ASSURA41 /data/nfs/tools/mentor/calibre/aoi_cal_2015.2_36.27; do
sudo chown -R root:root "$d" && sudo chmod -R u=rwX,go=rX "$d"
done
find /data/nfs/tools/cadence /data/nfs/tools/mentor \( -type f -o -type d \) -perm /022 | head # 预期空
步骤 6:patch(高危、不可逆)¶
sfk 对工具目录做二进制字节替换。先备份将被修改的文件并登记台账,再执行。
坑:① patch 不可逆,无反向补丁;② 只对已装工具目录执行,目录名必须与实际一致; ③ 备份是唯一回滚依据,务必在 patch 前完成。
# 备份(示例:备份 patch 会触及的关键二进制;具体清单由实现体按 pat 规则推导并登记 backup/README.md)
sudo cp -a /data/nfs/tools/cadence/virtuoso/IC617/tools.lnx86/dfII/bin/<binary> \
<project_root>/backup/data/nfs/tools/cadence/virtuoso/IC617/tools.lnx86/dfII/bin/<binary>.bak.<YYYYmmdd-HHmmss>
# 执行 patch
cd /data/nfs/tools/cadence/virtuoso && sudo /path/to/sfk rep -bylist /path/to/cadence.pat -nowarn -yes -dir IC617
cd /data/nfs/tools/cadence/mmsim && sudo /path/to/sfk rep -bylist /path/to/cadence.pat -nowarn -yes -dir MMSIM151
cd /data/nfs/tools/cadence/assura && sudo /path/to/sfk rep -bylist /path/to/cadence.pat -nowarn -yes -dir ASSURA41
cd /data/nfs/tools/mentor/calibre && sudo ./patch_calibre aoi_cal_2015.2_36.27
预期:sfk 报告替换命中数非 0;patch 后二进制 sha256 与备份不同。
失败判断:命中数为 0(版本不符)→ 停止,人工确认 pat 规则是否适用后再决定。
步骤 7:license 与环境变量接入¶
- Cadence:服务端 floating 已跑,客户端只需
CDS_LIC_FILE=5280@192.168.31.29、CDS_LIC_ONLY=1。 不再使用 09.bashrc 里的文件式路径($CDS/share/license/license.dat)。 - Calibre:
MGLS_LICENSE_FILE指向已核实的calibre.license.dat(建议放共享路径只读)。 - modulefile:以 09.bashrc 为内容源裁剪(剔除未安装的 EXT151/PVS151/GENUS/INNOVUS 等变量),
生成 Lmod modulefile,与
ic25_modulefile_lic_20260926/的约定保持一致。
# Calibre license 落共享只读
sudo install -m 0444 /opt/FlexLM/Cadence/calibre.license.dat /data/nfs/tools/mentor/calibre/license.dat
# modulefile 生效验证(客户端)
ssh root@192.168.31.18 'module avail cadence 2>&1 | head'
预期:module avail 列出 IC617/MMSIM151/ASSURA41/Calibre;module load 后 echo $CDS_LIC_FILE 为 5280@192.168.31.29。
步骤 8:六台验证与幂等收尾¶
见第 6 章命令;随后复跑一次全流程,第二次应零变更、全跳过。
6. 验证¶
六台逐台执行(以 192.168.31.18 示范):
ssh root@192.168.31.18 '
export CDS_LIC_FILE=5280@192.168.31.29 CDS_LIC_ONLY=1 CDS_AUTO_64BIT=ALL
/tools/cadence/virtuoso/IC617/tools.lnx86/dfII/bin/virtuoso -version # 预期打印 IC617 版本
/tools/cadence/mmsim/MMSIM151/tools/bin/spectre -version # 预期打印 15.10.284
/tools/cadence/assura/ASSURA41/tools/assura/bin/assura -version # 预期打印 04.15.001
/tools/mentor/calibre/aoi_cal_2015.2_36.27/bin/calibre -version # 预期打印 2015.2_36.27
test -w /tools/cadence/virtuoso/IC617 && echo "可写=异常" || echo "只读=正常"
'
| 验证项 | 判据 |
|---|---|
| 二进制存在 | 四个 -version 均无 command not found |
| 依赖零缺失 | 对四工具主二进制 ldd 真缺计数 = 0 |
| license 真实 checkout | virtuoso -nograph 能起、无 license 报错;spectre -version 不报 license |
| Spectre 功能完整 | 最小网表仿真出结果(证明 Hotfix 包自足) |
| 权限 | 六台 test -w 均失败;find -perm /022 为空 |
| 共享一致性 | 六台 /tools 视图同一 inode/大小;宿主本地一致 |
7. 回滚¶
备份位置:本工程 backup/(台账见 backup/README.md ),
结构为 backup/<相对项目根的原路径>/<原名>.bak.<YYYYmmdd-HHmmss>。
| 变更项 | 回滚方式 | 回滚后验证 |
|---|---|---|
| 安装目录(新增) | 删除目标目录(高危,需确认路径为四目标之一,不用通配) | test ! -d 通过 |
| patch(不可逆) | 用 backup/ 中备份的二进制覆盖回原位 |
二进制 sha256 与备份一致;工具可启动 |
| 客户端系统包 | dnf remove 本次新增包(清单落 reports/)或 dnf history undo <id> |
rpm -qa \| grep i686 回到变更前计数 |
| LSB 符号链接 | rm /lib64/ld-lsb-x86-64.so.3 |
test ! -e 通过 |
| modulefile | 删除本工程下发的 modulefile | module avail cadence 不再列出 |
| Calibre license 文件 | 删除共享只读文件 | test ! -f 通过 |
IC25 遗留 1patch |
从 backup/legacy-1patch-IC25 移回原路径 |
路径存在且可执行 |
回滚顺序与安装顺序相反。回滚后需重跑第 6 章验证确认系统回到变更前状态。
8. 风险说明¶
| # | 风险 | 影响 | 缓解 |
|---|---|---|---|
| 1 | IC617 在 Rocky 9 属非官方支持(Cadence 官方论坛明确 IC6.1.7/6.1.8 在 RHEL8/9 上需 off-piste) | 可能遇到无法规避的兼容问题 | 步骤 3 前置 ldd 扫描;备 compat-db47/compat-openssl10 兜底;仍不通则回退到容器化 CentOS7 方案(需另行评估) |
| 2 | 32 位 X 栈组合未经官方验证 | GUI 起不来 | 先以 -nograph 验证 license 与核心功能,GUI 单独排查 |
| 3 | patch 不可逆 | 误 patch 无反向补丁 | patch 前全量备份 + 台账;命中数异常即停 |
| 4 | 605 条 floating FEATURE 未做过真实 checkout | 可能报 version too new | 步骤 6 用 lmdiag -n <feature> 复核;失败则需索取匹配版本 license |
| 5 | Hotfix 包独立安装(无 Base) | 可能缺件 | 包结构实测含 spectre64b/ultrasim64b/relxpert64b 等主功能 kit(100 个 kit、3.5G),判为完整 release;仍以最小仿真实测为准 |
| 6 | 装 i686 包时节点有作业 | 影响在跑作业 | 步骤 0 逐台确认调度器空闲 |
| 7 | 本机是 NFS 宿主,解压产生重 IO | 影响共享盘性能 | 解压到 scratch 后再安装;避开业务高峰 |
| 8 | MMSIM OA 指向错误 | spectre 不可用 | 安装时显式指定 IC617 的 OA 目录 |
附录 A:介质清单¶
| 介质 | 内容 | 用途 |
|---|---|---|
03.InstallScape.zip |
IScape04.23-s010lnx86.t.Z |
安装器 |
04.IC06.17.700_Base.zip.001/.002 |
split zip,4.0G + 797M | IC617 Base |
05.MMSIM15.10.284_Hotfix.zip |
.sdp/.sdx + 100 个 kit(3.5G) |
MMSIM(Hotfix 独立安装) |
06.Calibre.2015.zip |
aoi_cal_2015.2_36.27_mib.exe(2.2G) |
Calibre 自解压安装包 |
07.cadence_patch.zip |
sfk + cadence.pat + cadence_patch.sh |
Cadence 系 patch |
07.calibre_patch.zip |
sfk + patch_calibre |
Calibre patch |
08.cadence_license.zip |
license.dat(605 FEATURE) |
不使用(已由 31.29 floating 服务取代) |
08.calibre_license.zip |
MentorKG.exe + license.dat |
不使用(已由 calibre.license.dat 取代) |
09.bashrc.zip |
bashrc 环境模板 |
modulefile 内容源(需裁剪) |
10.Calibre config.zip |
.cdsinit + calibre config |
Calibre↔Virtuoso 集成(范围待定) |
11.NCSU_pdk.zip |
7 个 PDK tar | 教学 PDK(范围待定) |
12.mesa-libGLU.zip |
el7 i686/x86_64 rpm | 系统不匹配,不用(改用 el9 源) |
ASSURA/*.tar |
3 卷(非 split,同一目录树分片) | ASSURA Update |
ASSURA/ASSURA_cadence_patch.rar |
ASSURA patch | ASSURA patch(本机用 7z 解) |
附录 B:依赖全量清单¶
基础包(x86_64):ksh、tcsh(已装)、ncompress(EPEL)、xterm、gzip/unzip/zip/bzip2/file(已装)、
firefox(可选,Cadence Help)。
i686 运行库(均在 Rocky 9 baseos/appstream,已逐个实测可得):
glibc、libgcc、libstdc++、glibc-devel、libXext、libXtst、libXi、libXrender、libXp、
libXmu、libXt、libXpm、libXrandr、libXcursor、libXinerama、libXcomposite、libXdamage、
libXfixes、libXScrnSaver(提供 libXss.so.1)、libICE、libSM、libuuid、libselinux、
ncurses-libs、zlib、libpng、elfutils-libelf、glib2、gtk2、mesa-libGL、mesa-libGLU、motif。
手工处理:
- /lib64/ld-lsb-x86-64.so.3 符号链接(redhat-lsb-core 在 el9 源不可得)。
候选兜底(仅在步骤 3 的 ldd 扫描报缺时引入,来源须可信并记录):
- compat-db47 / compat-db-headers(libdb-4.7.so);
- compat-openssl10(libcrypto.so.10);
- compat-libstdc++-33(libstdc++.so.5,el9 源不可得)。
附录 C:决策记录与待确认项¶
已定(2026-09-26):
1. 安装位置:/data/nfs/tools 共享,六台只读挂载,沿用 IC25 模式;
2. MMSIM:直接装 Hotfix 284,不再找 Base。依据:① 论坛说明"只有 hotfix 版时直接安装,
因为其中包含了以前的 base 版未经更改的内容";② 实测该包 100 个 kit、解压 3.5G,
含 spectre64b15.10-s284(297M)、ultrasim64b15.10-s284(502M)、relxpert64b15.10-s284(199M)
等主功能件,且 ic_index.sdx 声明为 Published_InstallComponent(可直接发布安装);
③ 以最小 Spectre 仿真作为最终验收判据。
3. 32 位依赖:直接 dnf 安装到系统(六台客户端)。
待确认:
1. Calibre 安装目录归属:/data/nfs/tools/mentor/...(已按此实施);
2. 本轮是否含 modulefile、NCSU PDK、Calibre↔Virtuoso 集成(10 号介质)三项附加范围 —— modulefile 已做,PDK 与集成未做;
3. 客户端 modulefile 下发路径与 /data/nfs/modulefiles 的映射关系(已核实:客户端 /opt/modulefiles = 宿主 /data/nfs/modulefiles,rw)。
附录 D:执行记录(2026-09-26 23:30 — 09-27 02:00 实测)¶
D.1 实际结果¶
| 步骤 | 结果 |
|---|---|
| 预检 | 六台依赖缺口一致(i686 = 0);slurm 三台 squeue 空、lsf 三台 bhosts 8 slots/0 作业;license 服务 lmgrd+cdslmd 正常(5280/5281 LISTEN) |
| 依赖(31.18) | 首次因 glib2 两架构版本不一致(i686 el9_8.10 vs 已装 x86_64 el9_8.1)事务回滚;改为先 dnf install glib2.i686 glib2.x86_64 同步升级,再装 278 包 → Complete!,i686 共 138 个(回滚锚点 dnf history id 11/12) |
| 依赖(其余五台) | 第二批因未启用 EPEL 缺 ncompress 失败 → dnf install epel-release 后重跑,五台各 139 个 i686(.19/.20/.25/.26 完成;.27 收尾中) |
| 介质 | IC617 为 sdp/sdx + kits 新格式(无 CDROM1)、382 kit / 5.9G;ASSURA 为 CDROM1 旧格式(三卷非同源 split,顺序解压);Calibre mib.exe 为 32 位 ELF 自解压器 |
| 安装 | IC617 9.3G、MMSIM151 4.7G、ASSURA41 4.6G,均 Install from CDROM(s) Successful;Calibre 5.2G Installation Completed |
| patch | IC617/MMSIM151/ASSURA41 执行 sfk(IC617 377 文件命中);Calibre 无需 patch(license 为 unserved 直读型) |
| 验证 | slurm 三台(.18/.19/.20)四工具版本全部通过;lsf 三台未通过(见 D.4) |
| 权限 | 四工具目录 root:root + u=rwX,go=rX,find -perm /022 为空 |
D.2 Rocky 9 适配(本安装的关键,四处缺一不可)¶
libnsl双架构:dnf install libnsl libnsl.i686。64 位给 virtuoso;32 位给 IScape 自带 JVM 与lmutil。- LSB 解释器链接:Cadence 的
lmutil等 32/64 位程序 interpreter 指向/lib/ld-lsb.so.3与/lib64/ld-lsb-x86-64.so.3,缺失时报 "No such file or directory"(文件明明存在)。 /usr/lib64/libdl.so链接:glibc 2.34 已把 libdl 并入 libc,Cadence 仍dlopen("libdl.so")。OA_UNSUPPORTED_PLAT=linux_rhel50_gcc48x:Rocky 9 不在 OAsysname识别列表;注意是 gcc48x (本安装的 OA 库只有linux_rhel50_gcc48x_32/64,写 gcc44x 会报 OA 库目录不存在)。LD_PRELOAD=/lib64/libstdc++.so.6:Cadence 自带 libstdc++(GCC 4.8)缺CXXABI_1.3.8/1.3.9, 与系统libGLU冲突。副作用:32 位子进程打印wrong ELF class ... ignored,无害。
D.3 license 现象(重要)¶
patch 之前:lmutil lmdiag -c 5280@192.168.31.29 -n 111 判定 license 正确(111 v2100.000、
hostid=ANY、无到期),服务端日志亦显示 OUT: "111",但 virtuoso 仍报
DB-320001 Unable to obtain the 'Cadence(R) Design Framework II' license(拿到却判为不合格)。
执行 sfk patch 后同一环境即成功:Virtuoso Framework License (111) was checked out successfully。
故本介质的设计用法是 patch + license 服务并存。
Calibre 侧相反:其 license.dat 无 SERVER 行(unserved),客户端直读即可,无需 patch;
lmutil lmstat -c <file> 报 No SERVER lines 属正常现象,不是故障。
D.4 未完成 / 遗留¶
| # | 事项 | 说明 |
|---|---|---|
| 1 | ~~lsf 三台 Lmod 未接入~~ | 已于 09-27 03:45 补做闭环,见 D.6 |
| 2 | ~~幂等复跑~~ | 已于 09-27 02:15 实测闭环(见 D.7):原假设「iscape 重跑会检测已装并跳过」表述不准确 |
| 3 | 介质与镜像暂存未清理 | /data/nfs/tools/_ic617_media(12G)、31.18 /var/tmp/{ic617,mmsim,calibre}(约 20G)保留作回滚兜底,待用户验收后清理 |
| 4 | batch_configure.sh 交互项 |
其中 IUS/AMS 的 slconfig.sh 为交互式菜单,在 batch 下会空转(已终止);不影响 Virtuoso/Spectre/Assura 使用,如需 AMS 数字流程再单独处理 |
| 5 | PDK 与 Calibre↔Virtuoso 集成 | 本轮范围外(NCSU PDK、.cdsinit/calibre config 未部署) |
D.5 备份与回滚依据¶
- patch 前备份:
/data/nfs/tools/_ic617_media/backup/pre_patch_libs_20260927-004833.tar.gz(356M,三工具tools.lnx86/lib); 台账见../backup/README.md。 - 回滚兜底:31.18
/var/tmp/下原始镜像完好(实测 kit 文件 mtime 仍为 2015 年,未被污染),重跑 iscape 即可回到未 patch 状态。 - 依赖回滚:
dnf history undo 12(31.18)/ 各台dnf history对应 id。
D.6 补充:lsf 三台 Lmod 接入(09-27 03:00–03:45,已闭环)¶
lsf 三台(lsf-work-01/02/03)原本没有 Lmod:无 module 命令、/opt/modulefiles 未挂载,
因此 module load 无法使用(工具本身经 /tools 可见)。按 slurm 三台的现成配置对齐:
| 动作 | 命令 / 内容 | 备注 |
|---|---|---|
| 装包 | dnf -y install Lmod lua-posix lua-json lua-filesystem lua-lpeg lua-term tcl |
与 slurm 三台同版本(Lmod-8.7.65) |
| 站点初始化 | 建 /etc/profile.d/zzz_site_lmod.sh |
从 .25 原样拷贝(非 login shell 里补 module 函数 + 把 /opt/modulefiles/Core 置入 MODULEPATH) |
| 挂载 | mount -t nfs4 -o rw,soft,_netdev,vers=4.2 192.168.31.249:/data/nfs/modulefiles /opt/modulefiles |
00-modulepath.{sh,csh} 由 Lmod 包自带,无需另建 |
| 持久化 | /etc/fstab 追加 192.168.31.249:/data/nfs/modulefiles /opt/modulefiles nfs rw,soft,_netdev 0 0 |
红线动作,经用户确认后执行;改前备份为各台 /etc/fstab.bak.<时间戳>,另取回本机 backup/lsf-work-0*/etc/fstab.pre-modulefiles.bak 并登记台账 |
踩坑:.27 的 dnf 下载最后几个包时网络劣化到 12 kB/s 且事务长时间停滞,同时排队的 Lmod 安装抢同一把 dnf 锁导致互相等待。
处置:清掉卡住的 dnf/deps2.sh/排队脚本进程,改用已下载完整的 dnf 缓存直接安装(/var/cache/dnf 已有 273 个 rpm / 344M),秒级完成,i686 达 139 个(与其余五台一致)。
验证:三台 module load cadence → module load virtuoso/IC06.17.700(Calibre 同理经 siemens)后,
四工具版本与 slurm 三台完全一致。至此六台客户端全部可用。
D.7 补充:幂等复跑实测(09-27 01:58–02:15,已闭环)¶
对本档案的目标 7(幂等)做首次实测。执行端 31.18,对象为 IC617 安装树(单工具试点), 方法:跑前/跑后元数据快照(类型/大小/mtime/路径,115881 条目)比对 + 功能验证。
实测结论
| # | 结论 | 证据 |
|---|---|---|
| 1 | iscape 对已装目标目录不重装任何产品 kit | rc=0,输出直接 Installing: Install from CDROM(s) Successful → Done.,无逐 kit 的 Installing: <kit> 行(首次安装日志有数十行);耗时约 2 分钟(首次约 8 分钟) |
| 2 | 但不是严格零变更 | diff 265 行/侧:目录 44 + 文件 220 + 链接 1;改写内容为安装器收尾动作(install/tmp/*、inca/.../ncrelocate.log、新增 cds.lib.ncreloc、iscape_logs 目录) |
| 3 | patch 未被覆盖、工具无退化 | 差异中涉及 tools.lnx86/lib 的 0 行;Virtuoso Framework License (111) was checked out successfully;六台 virtuoso -version 与变更前一致 |
| 4 | 稳态已恢复 | /tools 六台均 ro |
对本档案两处表述的修正
- 目标 7:安装器没有「检测已装即全跳过」的能力,「第二次全
skipped」只能由实现体的 三态状态探测承担——D.4 第 2 条的原始假设不成立,已就地更正。 - D.4 第 3 条(介质与镜像清理):复跑依赖
/var/tmp/ic617镜像,清理镜像会同时失去 「复跑验证」与「重装兜底」两条路径,须确认不再需要后再执行。
实现体与完整数据:ic617_replay_20260927/(docs/SOP.md 八章流程 + 附录实测数据、
docs/RUNBOOK.md 运维手册含五类故障场景)。本轮无新增备份文件(未改写产品文件)。
来源:
/home/rain/Documents/eda_tools_ins/Cadence/ic617_install_20260926/docs/SOP.md| 最后更新:2026-09-27 02:15(由build/sync.py同步,请勿在站点侧修改)