本文是一份针对 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)CPUIntel Core i5-13500HX内存 (RAM)32GB (建议 16GB+)宿主机系统Windows 版本Windows 11 家庭版 25H2WSL2 环境内核版本5.15.x 或更高WSL 发行版CentOS 7网络模式Mirrored (镜像模式)磁盘空间虚拟磁盘建议预留 200GB+ 空间安装 CentOS 7 WSL 镜像
下载镜像
由于微软官方商城不提供 CentOS,推荐使用开源项目 CentOS-WSL。
执行安装
- 将下载的压缩包解压到你打算存放虚拟磁盘的目录(例如 D:\WSL\CentOS7)。
- 双击运行目录下的 CentOS7.exe。
- 注意: 安装程序会在当前目录下生成虚拟磁盘(ext4.vhdx),请确保该磁盘分区有足够的空间(IC 工具包通常很大)。
基础用户配置
新建普通用户
WSL2 CentOS 默认以 root 用户登录。在 IC 开发中,建议新建普通用户:- useradd -m -s /bin/bash <your_username>
- passwd <your_username> # 设置密码
- usermod -aG wheel <your_username> # 赋予 sudo 权限
复制代码 设置默认登录用户
编辑 /etc/wsl.conf:输入内容:- [user]
- default=<your_username>
复制代码 在 Windows PowerShell 中执行 wsl --shutdown 重启后即可生效。
核心网络优化 (Windows 11 25H2 镜像模式)
在 Windows 用户目录下(%USERPROFILE%)修改 .wslconfig。
注意: 镜像模式(Mirrored)是 Windows 11 近期版本的黑科技,它让 WSL 与 Windows 共享 IP,极大优化了访问 Windows 代理及 License 端口冲突的问题。- [wsl2]
- networkingMode=mirrored
- autoProxy=true
- dnsTunneling=true
- [experimental]
- autoMemoryReclaim=gradual # 自动回收空闲内存
复制代码 修复 CentOS 7 软件源 (与 Ubuntu 的主要差异)
CentOS 7 特有步骤: 由于 CentOS 7 已于 2024 年 6 月 30 日停止维护(EOL),其官方源已失效。你需要切换到阿里云的归档镜像源(Vault)才能继续使用 yum:- # 1. 备份旧配置
- sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- # 2. 下载阿里云提供的基础配置文件
- sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- # 3. 删除内网专用域名(防止非阿里云环境报错)
- sudo sed -i '/aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
- # 4. 清理并生成缓存
- sudo yum clean all
- sudo yum makecache
复制代码 安装 EDA 工具必备依赖库
下表展示了 CentOS 7 与 Ubuntu 在依赖管理上的核心不同:
差异点UbuntuCentOS 7包管理器aptyumLSB 标准库lsb-coreredhat-lsb-core (启动 lmgrd 必备)32位支持dpkg --add-architecture i386直接安装 .i686 后缀的包即可遗留图形库24.04 已移除 libpng12依然完美支持 libpng12CentOS 7 补全命令:- # 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 内核检查的“神药”。- # .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 发行版生态的割裂更是放大了这种痛苦. 希望这篇文章对读者有帮助.
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |