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. 目标¶
- 建立 31.30 的"通用运行依赖基线":一次装齐共性系统库 + 老版本兼容库。
- 按安装顺序逐个跑通工具,形成可复用的验证清单。
- 全程不修改任何工具树(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 由本验证得出的两条结论¶
- 未打补丁的原厂树可正常工作:上表 13 个工具均为原厂态(仅 vcs-mx/verdi 有 1patch),全部正常启动。
- 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同步,请勿在站点侧修改)