本文是一份针对 Windows 11 25H2 用户的 WSL2 IC 开发环境 搭建指南。通过选用兼容性更佳的 CentOS 7,详细演示了如何避开 glibc 陷阱,成功运行 Synopsys VCS、Verdi 等主流 EDA 工具。内容包含 CentOS 7 停服后的软件源修复技巧、32 位兼容库安装以及针对 WSL2 内核的环境变量优化。
致谢与前置阅读
本文在搭建过程中深度参考了以下文章,该文对 Synopsys 工具链的安装逻辑有极其详尽的描述,强烈推荐读者优先阅读:
推荐阅读: 【保姆级教程】在 Win11 WSL2 (Ubuntu 20.04) 上搭建 Synopsys 数字 IC 设计 EDA 工具链------踩坑全记录
在此亦对互联网上无数提供技术方案的开发者表示由衷感谢。
说明:
上述教程基于 Ubuntu 20.04。笔者曾尝试在 WSL2 Ubuntu 24.04 上进行复现,但由于该版本的系统库过于"激进"(如彻底弃用 libpng12、glibc 版本过高等),导致大量 2018 至 2021 版的 EDA 工具陷入依赖地狱。
因此,本文定位为 WSL2 CentOS 7 环境下的针对性补遗。
为什么选择从 Ubuntu 24.04 转向 CentOS 7?
- 工具原生适配性: 主流 IC EDA 工具(VCS、Verdi、DC、PT 等)大多基于 RHEL/CentOS 体系进行闭源开发。Ubuntu 24.04 的底层链接与版本号变动剧烈,强行打补丁极易引发仿真结果的不可预知偏差。
- 工业界基准对齐: 企业级服务器环境几乎是 RHEL/CentOS 的天下。采用 CentOS 7 能最大程度还原工业环境,确保脚本在本地与服务器间无缝迁移。
- 规避 GLIBC 兼容性陷阱: Ubuntu 24.04 的
glibc版本过高,常被 EDA 工具的内核检查机制拦截。相对而言, CentOS 7 具有长周期的稳定 ABI(Application Binary Interface).
个人开发环境参数 (重要提示)
重要提示: 通常要求Windows 11 22H2 及更高版本的计算机, 以确保能开启 WSL2 的 镜像模式网络 , 这是后续固定 WSL MAC 地址的关键 (用于 Synopsys EDA 工具 License). 若无法固定 MAC 地址, 每次都需要重新生成一个 license. 具体可以参考微软这篇文档.
| 类别 | 项目 | 详细参数 / 版本 |
|---|---|---|
| 宿主机硬件 | 设备型号 | HP Omen 9 (暗影精灵 9) |
| CPU | Intel Core i5-13500HX | |
| 内存 (RAM) | 32GB (建议 16GB+) | |
| 宿主机系统 | Windows 版本 | Windows 11 家庭版 25H2 |
| WSL2 环境 | 内核版本 | 5.15.x 或更高 |
| WSL 发行版 | CentOS 7 | |
| 网络模式 | Mirrored (镜像模式) | |
| 磁盘空间 | 虚拟磁盘 | 建议预留 200GB+ 空间 |
安装 CentOS 7 WSL 镜像
下载镜像
由于微软官方商城不提供 CentOS,推荐使用开源项目 CentOS-WSL。
- 下载地址: GitHub Releases
执行安装
- 将下载的压缩包解压到你打算存放虚拟磁盘的目录(例如
D:\WSL\CentOS7)。 - 双击运行目录下的
CentOS7.exe。
- 注意: 安装程序会在当前目录下生成虚拟磁盘(
ext4.vhdx),请确保该磁盘分区有足够的空间(IC 工具包通常很大)。
基础用户配置
新建普通用户
WSL2 CentOS 默认以 root 用户登录。在 IC 开发中,建议新建普通用户:
bash
useradd -m -s /bin/bash <your_username>
passwd <your_username> # 设置密码
usermod -aG wheel <your_username> # 赋予 sudo 权限
设置默认登录用户
编辑 /etc/wsl.conf:
bash
sudo vi /etc/wsl.conf
输入内容:
ini
[user]
default=<your_username>
在 Windows PowerShell 中执行 wsl --shutdown 重启后即可生效。
核心网络优化 (Windows 11 25H2 镜像模式)
在 Windows 用户目录下(%USERPROFILE%)修改 .wslconfig。
注意: 镜像模式(Mirrored)是 Windows 11 近期版本的黑科技,它让 WSL 与 Windows 共享 IP,极大优化了访问 Windows 代理及 License 端口冲突的问题。
ini
[wsl2]
networkingMode=mirrored
autoProxy=true
dnsTunneling=true
[experimental]
autoMemoryReclaim=gradual # 自动回收空闲内存
修复 CentOS 7 软件源 (与 Ubuntu 的主要差异)
CentOS 7 特有步骤: 由于 CentOS 7 已于 2024 年 6 月 30 日停止维护(EOL),其官方源已失效。你需要切换到阿里云的归档镜像源(Vault)才能继续使用 yum:
bash
# 备份旧配置
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 下载阿里云归档源并修正地址
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo [https://mirrors.aliyun.com/repo/Centos-7.repo](https://mirrors.aliyun.com/repo/Centos-7.repo)
sudo sed -i -e '/[mirrors.cloud.aliyuncs.com/d](https://mirrors.cloud.aliyuncs.com/d)' -e '/[nodes.pvt.cloud.aliyuncs.com/d](https://nodes.pvt.cloud.aliyuncs.com/d)' /etc/yum.repos.d/CentOS-Base.repo
sudo sed -i 's/mirror.centos.org/repolist.centos.org/g' /etc/yum.repos.d/CentOS-Base.repo
# 更新缓存
sudo yum clean all && sudo yum makecache
安装 EDA 工具必备依赖库
下表展示了 CentOS 7 与 Ubuntu 在依赖管理上的核心不同:
| 差异点 | Ubuntu | CentOS 7 |
|---|---|---|
| 包管理器 | apt |
yum |
| LSB 标准库 | lsb-core |
redhat-lsb-core (启动 lmgrd 必备) |
| 32位支持 | dpkg --add-architecture i386 |
直接安装 .i686 后缀的包即可 |
| 遗留图形库 | 24.04 已移除 libpng12 |
依然完美支持 libpng12 |
CentOS 7 补全命令:
bash
# 1. 基础开发组
sudo yum groupinstall -y "Development Tools"
sudo yum install -y wget git tcsh xterm screen net-tools python3
# 2. X11 图形支持 (解决 Verdi 无法弹出、缺失 libXt.so, libXmu.so 等问题)
sudo yum install -y libX11 libXext libXrender libXtst libXi libXp libXft \
libXmu libXt libICE libSM libuuid libXinerama libXcursor libXrandr \
libXcomposite libXdamage libXScrnSaver fontconfig freetype
# 3. 32 位兼容库 (License Manager lmgrd 启动必备)
sudo yum install -y glibc.i686 libstdc++.i686 zlib.i686 ncurses-libs.i686 \
redhat-lsb-core redhat-lsb-submod-security
Synopsys 工具链环境变量配置
将以下内容添加到新用户的 ~/.bashrc 中。请注意 VCS_ARCH_OVERRIDE 这个关键变量,它是绕过 WSL2 内核检查的"神药"。
bash
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# --- Synopsys Root ---
export SYNOPSYS_ROOT=/opt/synopsys
# --- Home Directories ---
export SCL_HOME=$SYNOPSYS_ROOT/scl/2018.06
export VCS_HOME=$SYNOPSYS_ROOT/vcs/O-2018.09-SP2
export VCS_ARCH_OVERRIDE=linux # 关键:强制 VCS 绕过现代内核检查
export VCS_MX_HOME=$SYNOPSYS_ROOT/vcs-mx/O-2018.09-SP2
export VERDI_HOME=$SYNOPSYS_ROOT/verdi/Verdi_O-2018.09-SP2
export SYN_HOME=$SYNOPSYS_ROOT/syn/O-2018.06-SP1 # DC
export PT_HOME=$SYNOPSYS_ROOT/pts/O-2018.06-SP1 # PrimeTime
# --- Path 变量 ---
export PATH=$VCS_HOME/bin:$VCS_MX_HOME/bin:$VERDI_HOME/bin:$SYN_HOME/bin:$PT_HOME/bin:$SCL_HOME/linux64/bin:$PATH
# --- Library 路径 ---
export VCS_RUNTIME_LIBDIR=$VCS_HOME/linux64/lib
export LD_LIBRARY_PATH=$PT_HOME/linux64/pt/shlib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$VERDI_HOME/share/PLI/VCS/LINUX64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$VCS_HOME/linux64/lib:$LD_LIBRARY_PATH
# --- License 设置 ---
export SNPSLMD_LICENSE_FILE=27000@localhost
export LM_LICENSE_FILE=27000@localhost
# --- 别名 Aliases ---
alias lmg='/opt/synopsys/scl/2018.06/linux64/bin/lmgrd -c /opt/synopsys/scl/2018.06/admin/license/Synopsys.dat -l ~/lmgrd.log > /dev/null 2>&1 &'
alias vcs='vcs -full64 -debug_access+all -LDFLAGS "-Wl,--no-as-needed"'
alias vcs_mx='vcs -full64 -debug_access+all -LDFLAGS "-Wl,--no-as-needed" -sysv'
alias python='python3'
# --- 自动启动 License Server (避免重复启动) ---
if ! pgrep -x "lmgrd" > /dev/null
then
/opt/synopsys/scl/2018.06/linux64/bin/lmgrd -c /opt/synopsys/scl/2018.06/admin/license/Synopsys.dat -l ~/lmgrd.log > /dev/null 2>&1 &
echo "Synopsys License Server: STARTED"
else
:
fi
结语
EDA 环境的搭建往往充满挫败感, Linux 发行版生态的割裂更是放大了这种痛苦. 希望这篇文章对读者有帮助.