跳转至

SOP — 31.30(centos7-01)补齐 Synopsys 全工具集运行依赖

  • 变更日期:2026-09-28
  • 执行主机:192.168.31.30(centos7-01,CentOS 7.2.1511 / 内核 3.10.0-327 / glibc 2.17 / gcc 4.8.5)
  • 触发来源:用户决策「以 31.30 打通全套工具,按安装顺序逐个补齐」
  • 性质:C 类变更(安装系统包 + 新增兼容层目录与全局库路径)
  • 结论:18 棵树中的 16 个工具已验证可启动/可运算;2 项遗留(xa 安装不完整、GUI 类需 DISPLAY)

1. 背景

31.30 此前只验证过 vcs-mx 与 hspice。其余 2018.06 批次工具(pt/icc2/dc/lc/fm…)在这台机上连启动都失败——缺的是一批 X/图形系统库与若干老版本共享库,与 license 无关。

同时这轮验证顺带回答了一个悬而未决的问题:未打 1patch 的原厂树,用 keygen license 能否正常工作。答案是能(见第 6 章)。

2. 目标

  1. 建立 31.30 的"通用运行依赖基线":一次装齐共性系统库 + 老版本兼容库。
  2. 按安装顺序逐个跑通工具,形成可复用的验证清单。
  3. 全程不修改任何工具树(NFS ro),不改 license 相关配置。

3. 前置条件

  • 本机到 31.30 root 免密 SSH 可用;31.30 已装 nfs-utils 并挂载 /tools(见 ../centos7_01_nfs_20260928/docs/SOP.md)。
  • yum 源:仅 c72-base(阿里云 vault,base/extras/updates 已 EOL,必须 --disablerepo="*" 屏蔽)。
  • 需访问 mirrors.aliyun.com 的 centos-vault/6.10 目录(取 el6 老库,CentOS 7 已无这些版本)。
  • license 指向:SNPSLMD_LICENSE_FILE=2700@192.168.31.29(不要用 Cadence 的 LM_LICENSE_FILE)。
  • 备份与留档:backup/README.md。

4. 影响范围

项 说明
主机 仅 192.168.31.30 一台
是否停服 否,该机无在跑业务;六台集群节点未做任何改动
变更面 ① 新增系统包(X/图形/图像类 + tcsh);② 新增 /opt/compat/lib64/ 三个 el6 老库;③ 新增 /etc/ld.so.conf.d/compat-layer.conf
持久性 全部持久(包已装、配置已落盘),重启后仍生效
窗口期 无需窗口;ldconfig 期间对新建进程的库解析有毫秒级影响

5. 分步操作

步骤 1:装 X / 图形 / 基础系统库

工具树自带 libX11/libxcb/libtbb/libicu/libstdc++(见各产品 amd64/*/shlib/),所以系统只需提供其余部分。用 --skip-broken 防止个别包缺失导致整批回滚。

坑:官方源 EOL,必须显式只启用 c72-base,否则 base/7/x86_64 的 mirrorlist 报 curl#52 并中断整个事务。

ssh root@192.168.31.30 'yum install -y --skip-broken --disablerepo="*" --enablerepo=c72-base \
  fontconfig libXft libXScrnSaver libXau libXext libXrender libXcomposite libXi \
  libXrandr libICE libSM libpng12 mesa-libGL pulseaudio-libs tcsh \
  libjpeg-turbo libXmu libXt libXpm libXtst libXinerama'

预期:yum_exit=0,无「No package」;rpm -q fontconfig libXft tcsh 均返回版本号。 失败判断:非 0 且日志含 Cannot find a valid baseurl → 源未屏蔽干净,补 --disablerepo 后重跑。

步骤 2:补三个 el6 老库(CentOS 7 已不提供)

libtiff.so.3(DC/wv 需要)、libmng.so.1、liblcms.so.1(DC/wv/siliconsmart 需要)在 CentOS 7 中分别只有 .so.5、无、只有 lcms2。

坑:lcms 主包含的是命令行工具,库在 lcms-libs 子包里——只装主包会白忙一场(实测踩过)。

ssh root@192.168.31.30 'mkdir -p /opt/compat/lib64 /tmp/el6rpms && cd /tmp/el6rpms
B=https://mirrors.aliyun.com/centos-vault/6.10/os/x86_64/Packages
for f in libtiff-3.9.4-21.el6_8.x86_64.rpm libmng-1.0.10-4.1.el6.x86_64.rpm lcms-libs-1.19-1.el6.x86_64.rpm; do
  [ -f "$f" ] || curl -sf -O "$B/$f"
done
for r in *.rpm; do rpm2cpio "$r" | cpio -idmu --no-absolute-filenames -d; done
cp -a usr/lib64/libtiff.so.3* usr/lib64/libmng.so.1* usr/lib64/liblcms.so.1* /opt/compat/lib64/'

预期:/opt/compat/lib64/ 下出现 libtiff.so.3、libmng.so.1、liblcms.so.1 及各自实体文件。 失败判断:cp 报「没有那个文件或目录」→ 该 rpm 未含库,检查是否取错子包(如把 lcms 当成了 lcms-libs)。

步骤 3:让兼容层生效

采用与 .18 既有做法一致的方式(新增独立 conf,不改动系统原有库配置)。

ssh root@192.168.31.30 'echo "/opt/compat/lib64" > /etc/ld.so.conf.d/compat-layer.conf && ldconfig
ldconfig -p | grep -E "libtiff.so.3|libmng.so.1|liblcms.so.1"'

预期:三条各返回 => /opt/compat/lib64/...。 失败判断:无输出 → ldconfig 未生效或文件路径不对,检查 conf 内容与目录权限。

步骤 4:按安装顺序逐工具验证

在可写目录(如 /tmp)内执行——fm_shell 等要求 cwd 可写,直接在 / 或只读目录会报权限错。GUI 类工具需要 DISPLAY。

ssh root@192.168.31.30 'cd /tmp && export SNPSLMD_LICENSE_FILE=2700@192.168.31.29 && unset LM_LICENSE_FILE
echo exit | /tools/synopsys/syn/O-2018.06-SP1/bin/dc_shell          # Design Compiler
echo exit | /tools/synopsys/pts/O-2018.06-SP1/bin/pt_shell          # PrimeTime
echo exit | /tools/synopsys/icc2/O-2018.06-SP1/bin/icc2_shell       # IC Compiler II
echo exit | /tools/synopsys/fm/O-2018.06-SP1/bin/fm_shell           # Formality
echo exit | /tools/synopsys/lc/O-2018.06-SP1/bin/lc_shell           # Library Compiler
echo exit | /tools/synopsys/pwr/O-2018.06-SP3/bin/pwr_shell         # PrimePower
/tools/synopsys/wv/N-2017.12-SP2/bin/wv -version                    # Custom WaveView
/tools/synopsys/siliconsmart/N-2017.12-SP2/bin/siliconsmart -version
/tools/synopsys/spyglass/SPYGLASS2017.12-SP2/SPYGLASS_HOME/bin/spyglass -version'

预期:各自打印产品 banner 与版本号(第 6 章表)。 失败判断:error while loading shared libraries: <库名> → 该库仍缺,回到步骤 1/2 按库名补;DISPLAY ... not set → GUI 类工具,非故障。

6. 验证

6.1 工具启动验证结果(2026-09-28,31.30 + keygen license)

# 工具 版本 打补丁 结果
1 vcs-mx N-2017.12-SP2 是(另测干净树) ✅ 编译+仿真出 Simulation Report
2 verdi N-2017.12-SP2 是 ✅ 此前已验证可用(本轮未复测入口)
3 spyglass 2017.12-SP2 否 ✅ 打印 SpyGlass Predictive Analyzer
4 fm (Formality) O-2018.06-SP1 否 ✅ 打印 banner
5 syn (Design Compiler) O-2018.06-SP1 否 ✅ 打印 Design Compiler Graphical 全家桶
6 icc2 O-2018.06-SP1 否 ✅ 打印 IC Compiler II
7 pt (PrimeTime) O-2018.06-SP1 否 ✅ 进入 pt_shell>
8 pwr (PrimePower) O-2018.06-SP3 否 ✅ 打印 PrimePower
9 lc (Library Compiler) O-2018.06-SP1 否 ✅ 打印 banner
10 starrc (StarXtract) O-2018.06-SP1 否 ✅ 库依赖 OK(提示缺工艺文件,属正常)
11 siliconsmart N-2017.12-SP2 否 ✅ 打印 SiliconSmart
12 tx (TMAX) O-2018.06-SP1 否 ⚠️ 需 DISPLAY
13 hspice N-2017.12-SP2 否 ✅ 真实仿真跑出 hspice job concluded
14 xa K-2015.06-SP5 否 ❌ 工具自身安装不完整:缺自带 GNU/linux64/gcc-4.8.3/bin/gcc
15 customcompiler N-2017.12-SP1-2 否 ⚠️ 需 DISPLAY
16 wv (Custom WaveView) N-2017.12-SP2 否 ✅ 打印版本
17 fpga (Synplify) N-2018.03-SP1 否 入口已定位(bin/synplify),未跑
18 identify N-2018.03-SP1 否 ✅ 打印版本
— scl 2018.06 — ✅ license 服务端,正常发放

6.2 由本验证得出的两条结论

  1. 未打补丁的原厂树可正常工作:上表 13 个工具均为原厂态(仅 vcs-mx/verdi 有 1patch),全部正常启动。
  2. license 侧无阻塞:hspice 完整跑完仿真、vcs 完成编译+仿真,均为"真实取到许可"的证据;反向对照(SNPSLMD_LICENSE_FILE 指向 127.0.0.1)下 VCS 报 Failed to obtain license(exit 255)、hspice 退出码 2 —— 说明校验真实存在且已被正常满足。

6.3 幂等复跑

动作 第二次执行结果
yum install(步骤 1 全量) 全部「已安装并且是最新版本」/「无须任何处理」
cp -a ... /opt/compat/lib64/ 覆盖同名文件,内容一致,无副作用(可重复执行)
ldconfig 幂等

7. 回滚

# 回滚 1:移除兼容层(不影响已安装的系统包)
rm -f /etc/ld.so.conf.d/compat-layer.conf
rm -rf /opt/compat/lib64            # 高危:确认该目录内仅本次放入的三个库
ldconfig

# 回滚 2:移除本次安装的系统包(高危:逐个确认无其他依赖后执行)
yum remove -y libXft libXScrnSaver libXau libXrender libXcomposite libXi libXrandr \
  libICE libSM libpng12 mesa-libGL pulseaudio-libs tcsh libjpeg-turbo libXmu libXt \
  libXpm libXtst libXinerama

回滚验证:ldconfig -p | grep libtiff.so.3 应无输出;rpm -q tcsh 应返回未安装。 回滚触发判据:出现系统级异常(如 yum/rpm 异常、图形栈故障)时执行回滚 1;包级冲突时执行回滚 2。

备份台账:backup/README.md。

8. 风险说明

风险 缓解
新增 /etc/ld.so.conf.d/compat-layer.conf 改变全局库搜索顺序 该目录仅放 3 个 el6 老库,不与系统库同名冲突(CentOS 7 无 .so.3/.so.1 版本),风险低;回滚 1 可秒级撤销
引入 el6(2010–2017 年)二进制库 仅被老 EDA 工具调用,不参与系统服务;来源为官方 CentOS vault,非第三方
xa 安装不完整 非本次变更引入;需从介质重装该产品或放弃该工具(见第 6 章表)
GUI 类工具需 DISPLAY 学习环境无 X 时可选装 Xvfb 提供虚拟显示,或使用各工具的 batch 模式(本次未做)
六台 Rocky 节点未同步 本 SOP 仅覆盖 31.30;Rocky 9 上另有 GLIBC_PRIVATE/libz 冲突,需单独的兼容层方案

附录 A:交付物清单

文件 说明
docs/SOP.md 本文件
backup/README.md 备份台账(本次无文件被覆盖,登记新增项与回滚动作)

附录 B:取证留痕

  • 取证主机:操作机 192.168.31.249 → 目标 192.168.31.30
  • 时间窗:2026-09-28 22:40 — 23:10
  • yum 日志:目标机 /tmp/yum-deps1.log、/tmp/yum-deps2.log
  • el6 RPM 与解包产物:目标机 /tmp/el6rpms/
  • 每工具执行均以 timeout 包裹,避免 GUI/交互式程序挂死

来源:/home/rain/Documents/eda_tools_ins/Synopsys/centos7_01_deps_20260928/docs/SOP.md | 最后更新:2026-09-28 23:01(由 build/sync.py 同步,请勿在站点侧修改)