WSL2(数字IC设计用)安装教程
2025-08-07
参考资料:
一、简介
1.1 操作系统
CentOS Linux release 7.9.2009 (Core) 使用
cat /etc/redhat-release
可查看操作系统的发行版信息Windows11 24H2
WSL2
1.2 安装的EDA软件
Synopsys
scl 2018.06
scl 2021.03
vcs R-2020.12.SP1
dve R-2020.12-SP1
verdi R-2020.12-SP1
formality R-2020.09-SP3
icc2 R-2020.09-SP3
lc R-2020.09-SP3
prime R-2020.09-SP3
spyglass Q-2020.03-SP2
dc R-2020.09-SP4
Cadence
iscape.04.23-s012
confrml222
ddi221(genue+innovous+joules)
modus221
ssv221
vmanager2203
xcelium2209
1.3 添加的Foundry Library
TSMC180
tcb018gbwp7t_270a
1.4 释放WSL2的虚拟内存
# 关闭wsl2
powershell> wsl -- shutdown
# 启动diskpart窗口
powershell> diskpart
# 选择虚拟磁盘
DISKPART> select vdisk file="your path"("D:\CentOS7\ext4.vhdx")
DiskPart 已成功选择虚拟磁盘文件
# 压缩虚拟磁盘
DISKPART> compact vdisk
100 百分比已完成
DiskPart 已成功压缩虚拟磁盘文件
# 分离虚拟磁盘
DISKPART> detach vdisk
虚拟磁盘服务错误:
虚拟磁盘已经分离。
1.5 迁移WSL2虚拟磁盘
# 关闭wsl2
wsl --shutdown
# 查看子系统名称
wsl -l -v
# 导出虚拟磁盘*.vhdx到指定路径下*.tar中
wsl --export CentOS7 I:\CentOS7\CentOS7.tar
# 注销子系统
wsl --unregister CentOS7
# 在想要的路径下导入子系统
wsl --import CentOS7 I:\CentOS7\ I:\CentOS7\CentOS7.tar
1.6 安装高版本gcc并管理
1.6.1 安装高版本gcc(例:gcc-8.5.0)
下载源码:清华源下载
gcc-8.5.0.tar.gz
,tar -zxvf gcc-8.5.0.tar.gz
解压得到gcc-8.5.0
源码文件夹下载依赖:进入
gcc-8.5.0
源码文件夹,找到contrib/download_prerequisites
,使用文本编辑器打开,可以看到依赖文件gmp='gmp-6.1.0.tar.bz2' mpfr='mpfr-3.1.4.tar.bz2' mpc='mpc-1.0.3.tar.gz' isl='isl-0.18.tar.bz2'
在清华源可以找到
gmp,mpfr,mpc
,在Index of /pub/gcc/infrastructure可以找到isl
,将压缩包下载好后移动到gcc-8.5.0
源码文件夹下。在gcc-8.5.0
源码文件夹下启动终端,输入contrib/download_prerequisites
,返回:gmp-6.1.0.tar.bz2: OK mpfr-3.1.4.tar.bz2: OK mpc-1.0.3.tar.gz: OK isl-0.18.tar.bz2: OK All prerequisites downloaded successfully.
这一步可能会有报错:
tar (child): lbzip2: Cannot exec: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now
原因是没有安装
bzip2
软件,在终端输入sudo yum install -y bzip2
即可编译安装:在
gcc-8.5.0
源码文件夹下打开终端# 将源码文件与临时文件隔离开 mkdir build & cd build # 配置编译方式 ../configure --prefix=/opt/gcc-8.5.0 --enable-languages=c,c++ --disable-multilib # 其中 --prefix 指定gcc安装位置,可以自定义,如上述命令将在/opt下创建gcc-8.5.0文件夹并安装于此处。 #–enable-languages 指定gcc支持的语言 #–disable-multilib 表示不生成交叉编译器(如果均在一种架构平台上编译并运行,如x86上,则无需交叉编译器) # 使用make编译 sudo make -j8 # 安装 sudo make install
1.6.2 使用update-alternatives
管理gcc
版本
备份原
gcc(gcc-4.8.5)
:切换到root
用户下,进入/usr/bin
文件夹,找到gcc gcc-ar gcc-nm gcc-ranlib g++ gcov
将其一一备份(加后缀
.bak
)注册不同版本的
gcc
:使用update-alternatives
创建软链接并连接到两个不同版本的gcc
# 注册gcc-8.5.0 sudo update-alternatives --install /usr/bin/gcc gcc /opt/gcc-8.5.0/bin/gcc 100 --slave /usr/bin/g++ g++ /opt/gcc-8.5.0/bin/g++ --slave /usr/bin/gcov gcov /opt/gcc-8.5.0/bin/gcov # 注册gcc-4.8.5 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc.bak 80 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar.bak --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm.bak --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib.bak --slave /usr/bin/g++ g++ /usr/bin/g++.bak --slave /usr/bin/gcov gcov /usr/bin/gcov.bak
查看并切换版本:
$sudo update-alternatives --config gcc There are 2 programs which provide 'gcc'. Selection Command ----------------------------------------------- *+ 1 /opt/gcc-8.5.0/bin/gcc 2 /usr/bin/gcc.bak Enter to keep the current selection[+], or type selection number:
输入
Selection
下方的编号可以自由选择版本
二、软件安装
2.1Synopsys系列的安装
使用
SynopsysInstaller
安装,软件依赖:
2.2Cadence系列的安装
使用
IScape
安装,安装过程需要依赖如下:
xterm.x86_64
tcsh.x86_64
ksh.x86_64
java-1.8.0-openjdk.x86_64
glibc.i686
glibc-devel.i686
Cadence软件依赖:
apr-util.x86_64
apr.x86_64
compat-db47.x86_64
elfutils-libelf.i686
elfutils-libelf.x86_64
expat.i686
expat.x86_64
gdb.x86_64
glibc-devel.i686
glibc-devel.x86_64
glibc.i686
glibc.x86_64
ksh.x86_64
libjpeg-turbo.i686
libjpeg-turbo.x86_64
libpng.i686
libpng.x86_64
libXp.i686
libXp.x86_64
libXScrnSaver.x86_64
mesa-dri-drivers.x86_64
mesa-libGL.i686
mesa-libGLU.i686
mesa-libGLU.x86_64
mesa-libGL.x86_64
motif.i686
motif.x86_64
openssl-devel.x86_64
redhat-lsb.i686
redhat-lsb.x86_64
xorg-x11-fonts-ISO8859-1-75dpi.noarch
xorg-x11-fonts-misc.noarch
xorg-x11-server-Xvfb.x86_64
xterm.x86_64
本人在启动iscape的时候遇到了问题:
Initializing InstallScape using JVM at /home/sxc/Packs/Cadence/iscape.04.23-s012/runtime/LNX86/bin/java. This might take some time...
Exception in thread "main" java.lang.NoClassDefFoundError: Files/PowerShell/7:/mnt/c/Program
Caused by: java.lang.ClassNotFoundException: Files.PowerShell.7:.mnt.c.Program
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Files/PowerShell/7:/mnt/c/Program. Program will exit.
Failed with InstallScape JVM.
Now loading System JVM...
Error: Could not find or load main class Files.PowerShell.7:.mnt.c.Program
Error:
/usr/bin/java
Could not use JVM packaged with Installcape. The Java in your path did not work or could not find Java in your path. Ensure that Java 1.6 or later is in your PATH environment variable and restart InstallScape.
网上搜到的一个答案:在root
身份下运行yum install -y java*
安装java
相关的包。本人试过之后并没有解决。
本人的解决方案:以sudo ./iscape.sh
启动,可以正常启动并且安装,不知道会不会有什么隐患。不论是以sxc
身份还是root
身份启动均失败,很奇怪,按道理root
应该是可以启动的。
三、软件环境配置
3.1 总环境配置
/home/sxc/.cshrc
# .cshrc
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# User specific aliases and functions
alias gv 'gvim'
alias g 'gvim'
alias la 'ls -a'
alias .. 'cd ..'
alias vc 'gvim ~/.cshrc'
alias sc 'source ~/.cshrc'
alias cd 'cd \!*; ls'
alias python 'python3'
alias pip 'pip3'
# alias code '/mnt/d/VSCode/Code.exe'
# cd() { builtin cd "$@" && ls; }
bindkey '\e[1~' beginning-of-line # Home
bindkey '\e[3~' delete-char # Delete
bindkey '\e[4~' end-of-line # End
bindkey "^W" backward-delete-word # Delete
bindkey -k up history-search-backward # PageUp
bindkey -k down history-search-forward # PageDown
set prompt="%n@%m:%~%#"
setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes
setenv GREP_OPTIONS --color=auto
set autolist
set correct = cmdset noclobber
source ~/.csh_synopsys
sudo ip link add vmnic0 type dummy
sudo ip link set vmnic0 addr 00:15:5d:f2:bc:d8
lmg_synopsys
sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
3.2 Synopsys软件环境配置
/home/sxc/.csh_synopsys
#!csh
# Synopsys EDA Tool Settings
setenv SNPS_TOOLS_HOME "/home/sxc/Tools/Synopsys"
setenv LIB_HOME "/home/sxc/Libs"
setenv DVE_HOME "${SNPS_TOOLS_HOME}/vcs/R-2020.12-SP1"
setenv VCS_HOME "${SNPS_TOOLS_HOME}/vcs/R-2020.12-SP1"
setenv VERDI_HOME "${SNPS_TOOLS_HOME}/verdi/R-2020.12-SP1"
setenv SCL_HOME "${SNPS_TOOLS_HOME}/scl/2021.03"
setenv FM_HOME "${SNPS_TOOLS_HOME}/fm/R-2020.09-SP3"
setenv ICC2_HOME "${SNPS_TOOLS_HOME}/icc2/R-2020.09-SP3"
setenv LC_HOME "${SNPS_TOOLS_HOME}/lc/R-2020.09-SP3"
setenv PT_HOME "${SNPS_TOOLS_HOME}/prime/R-2020.09-SP3"
setenv SG_HOME "${SNPS_TOOLS_HOME}/spyglass/Q-2020.03-SP2/SPYGLASS_HOME"
setenv DC_HOME "${SNPS_TOOLS_HOME}/syn/R-2020.09-SP4"
setenv LD_LIBRARY_PATH "${SNPS_TOOLS_HOME}/verdi/R-2020.12-SP1/share/PLI/VCS/LINUX64"
#dve
setenv PATH "${PATH}:${VCS_HOME}/gui/dve/bin"
alias dve 'dve -full64'
#VCS
setenv PATH "${PATH}:${VCS_HOME}/bin"
alias vcs 'vcs'
#VERDI
setenv PATH "${PATH}:${VERDI_HOME}/bin"
alias verdi 'verdi'
alias fsdb2vcd 'fsdb2vcd'
#scl
setenv PATH "${PATH}:${SCL_HOME}/linux64/bin"
setenv VCS_ARCH_OVERRIDE "linux"
#Formality
setenv PATH "${PATH}:${FM_HOME}/bin"
alias fm 'fm_shell'
#ICC2
setenv PATH "${PATH}:${ICC2_HOME}/bin"
alias icc2 'icc2_shell'
#Library Compiler
setenv PATH "${PATH}:${LC_HOME}/bin"
alias lc 'lc_shell'
#Prime Time
setenv PATH "${PATH}:${PT_HOME}/bin"
alias pt 'pt_shell'
#Spyglass
setenv PATH "${PATH}:${SG_HOME}/bin"
alias sg 'spyglass'
#Design Compiler
setenv PATH "${PATH}:${DC_HOME}/bin"
alias dc 'dc_shell'
#LICENCE
setenv LM_LICENSE_FILE "27000@DESKTOP-SIR22V0"
alias lmg_synopsys '/home/sxc/Tools/scl/2021.03/linux64/bin/lmgrd -c /home/sxc/Tools/scl/2021.03/admin/license/Synopsys.dat -l ~/lmg.log'
3.3 Cadence软件环境配置
/home/sxc/.csh_cadence
#!csh
# Cadence EDA Tool Settings
setenv CDS_TOOLS_HOME "/home/sxc/Tools/Cadence"
setenv XCELIUM_HOME "${CDS_TOOLS_HOME}/XCELIUM2209"
setenv DDI_HOME "${CDS_TOOLS_HOME}/DDI221"
setenv CONFRML_HOME "${CDS_TOOLS_HOME}/CONFRML222"
setenv MODUS_HOME "${CDS_TOOLS_HOME}/MODUS221"
setenv SSV_HOME "${CDS_TOOLS_HOME}/SSV221"
setenv VMANAGER_HOME "${CDS_TOOLS_HOME}/VMANAGER2203"
# license
setenv CDS_LIC_FILE "${CDS_TOOLS_HOME}/license/license.dat"
# Xcelium
setenv PATH "${PATH}:${XCELIUM_HOME}/tools.lnx86/bin"
setenv VRST_HOME "${XCELIUM_HOME}"
setenv IUSHOME "${XCELIUM_HOME}"
# DDI(GENUS/INNOVUS/JALOUS)
setenv GENUS_HOME "${DDI_HOME}/GENUS221"
setenv INNOVUS_HOME "${DDI_HOME}/INNOVUS221"
setenv PATH "${PATH}:${GENUS_HOME}/tools.lnx86/bin"
setenv PATH "${PATH}:${INNOVUS_HOME}/tools.lnx86/bin"
# CONFRML
setenv PATH "${PATH}:${CONFRML_HOME}/tools.lnx86/bin"
# MODUS
setenv PATH "${PATH}:${MODUS_HOME}/tools.lnx86/bin"
# SSV
setenv PATH "${PATH}:${SSV_HOME}/tools.lnx86/bin"
# VMANAGER
setenv PATH "${PATH}:${VMANAGER_HOME}/bin"
foreach t (xrun imc modus genus lec innovus tempus)
echo "Found $t at `which $t` "
end
四、软件Crack及License制作
五、Vscode远程访问WSL
5.1问题汇总
Vscode
图形化界面创建文件夹和文件,所有者为root
,使用sudo chown -R user filename(dirname)
可以递归的修改文件夹以及其中文件的所有者