2. 基础软件依赖:Linux、Perl、Python、Tcl/TK 安装配置
PD 调试环境,说白了就是个软件堆栈。底层跑 Linux,上面挂着 Perl、Python、Tcl/TK 这三个脚本语言。你想想看,EDA 工具的命令行接口、回归脚本、波形处理、GUI 界面,基本都绕着它们转。
我第一次搭环境时,在 CentOS 上折腾了整整两天。后来换到 Ubuntu,半小时搞定。嗯,选对发行版能省不少事。
2.1 Linux 系统环境准备
我建议选 Ubuntu 20.04 LTS 或 CentOS 7.9。为什么?因为主流 EDA 工具的认证版本基本落在这两个上面。Fedora 太新,Debian 太老,都不太合适。
| 发行版 | 内核要求 | 常用 EDA 兼容性 | 我的建议 |
|---|---|---|---|
| Ubuntu 20.04 LTS | 5.4+ | 好 | 新手首选,社区文档多 |
| CentOS 7.9 | 3.10+ | 很好 | 企业环境居多,兼容性最稳 |
| RHEL 8.x | 4.18+ | 好 | 得买授权,个人用不推荐 |
安装完后,第一件事就是装基础开发包。我曾经遇到过编译一个老版工具,缺了 libX11-devel,报错信息完全看不懂,后来查了半天才发现是图形库没装全。
必备包清单(Ubuntu 为例):
sudo apt update
sudo apt install build-essential
sudo apt install libx11-dev libxext-dev libxt-dev
sudo apt install libc6-dev libstdc++-6-dev
sudo apt install gcc g++ gdb make cmake
sudo apt install flex bison
sudo apt install xterm
小技巧: 装完后跑一下 ldconfig -p | wc -l,看看库数量。一般 800+ 才算正常。我见过有人只装了 300 多个库,后面编译工具链疯狂报错。
2.2 Perl 环境配置
Perl 是 EDA 世界里最古老的脚本语言,没有之一。Synopsys、Cadence 的很多老工具都依赖 Perl 5。虽然现在 Python 火,但 Perl 在文本处理和回归框架里的地位还是很难撼动。
我习惯装 Perl 5.30 以上的版本。太低了,有些新模块装不上;太高了,老工具又不认。
# 查看系统自带版本
perl --version
# 如果版本太老,用 perlbrew 装新版本
curl -L https://install.perlbrew.pl | bash
echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc
source ~/.bashrc
# 安装 Perl 5.34.0
perlbrew install perl-5.34.0
perlbrew switch perl-5.34.0
# 验证
perl --version
这里要提一下 cpanm 。它是 Perl 的包管理器,比原版 CPAN 好用一百倍。我曾经用手动 CPAN 装 DBI 模块,搞了一个下午,各种依赖冲突。后来换成 cpanm,一行命令全自动解决。
常用 EDA 相关的 Perl 模块:
DBI+DBD::Oracle— 连数据库,查工艺库XML::Simple— 解析 XML 配置File::Slurp— 快速读写文件Data::Dumper— 调试利器,打印数据结构Getopt::Long— 解析命令行参数
注意: 不要用系统自带 Perl 直接装模块。有些 Linux 发行版把 Perl 当作系统工具依赖,乱装模块可能导致 yum 或 apt 崩掉。用 perlbrew 隔离最安全。
2.3 Python 环境配置
Python 现在基本是所有 EDA 工具的首选脚本语言了。不管是写回归脚本、做数据分析,还是搭 GUI 原型,Python 都能干。但要注意版本问题 —— Python 2 已经在 2020 年退休了,别再碰它。
我推荐用 Python 3.8 到 3.10 之间。为什么不是 3.11 或 3.12?因为很多 EDA 工具的 Python 接口还没更新到那么新,装了反而用不了。
安装方式,我推荐 pyenv。它能让你同时装多个 Python 版本,随时切换。
# 安装 pyenv
curl https://pyenv.run | bash
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
# 安装 Python 3.9.18
pyenv install 3.9.18
pyenv global 3.9.18
# 验证
python --version
PD 调试中最常用的 Python 包:
| 包名 | 用途 | 安装方式 |
|---|---|---|
| numpy | 数值计算,波形数据处理 | pip install numpy |
| matplotlib | 绘图,时序图可视化 | pip install matplotlib |
| lxml | XML/HTML 解析,读工艺文件 | pip install lxml |
| pandas | 数据表格分析,回归结果整理 | pip install pandas |
| paramiko | SSH 远程连接,自动化部署 | pip install paramiko |
我个人习惯: 每个项目建一个独立的 virtualenv。这样不会把系统 Python 搞乱,换项目时直接删掉重建,干净利落。
python -m venv pd_env
source pd_env/bin/activate
pip install -r requirements.txt
2.4 Tcl/TK 安装配置
Tcl/TK 很多人觉得过时了,其实不然。EDA 工具里,Vivado、Quartus、ICC 的 Tcl 接口还是主流。写自动化脚本、调 GUI 参数,Tcl 是绕不过去的坎。
我建议装 Tcl 8.6 以上版本,TK 8.6 配套。老版本的 Tcl 不支持一些新的语言特性,比如 try...catch 异常处理。
# 查看系统是否自带
tclsh
# 如果没有,源码编译安装
wget https://prdownloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz
tar -xzf tcl8.6.13-src.tar.gz
cd tcl8.6.13/unix
./configure --prefix=/usr/local/tcl8.6
make
sudo make install
# 安装 TK
wget https://prdownloads.sourceforge.net/tcl/tk8.6.13-src.tar.gz
tar -xzf tk8.6.13-src.tar.gz
cd tk8.6.13/unix
./configure --prefix=/usr/local/tk8.6
make
sudo make install
我曾经遇到过一个坑: 系统自带的 Tcl 没开线程支持,结果跑多线程的仿真脚本时,工具直接崩了。所以编译时建议加上 --enable-threads。
装完之后,最好把路径加到 .bashrc 里,方便调用:
export PATH=/usr/local/tcl8.6/bin:$PATH
export PATH=/usr/local/tk8.6/bin:$PATH
export MANPATH=/usr/local/tcl8.6/man:$MANPATH
PD 调试中 Tcl 的典型用法:
- 读取设计网表,查层次结构
- 控制仿真器,跑自动化 regression
- 调波形工具,设置查看参数
- 写 GUI 工具原型(TK)
说到这里,我画了一张图,把整个基础软件栈的关系理清楚:
2.5 环境验证脚本
装完这些东西后,我习惯跑一个快速验证脚本,确保所有组件都能正常工作。省得到时候工具报错,还不知道是哪个环境出了问题。
#!/bin/bash
echo "=== PD 基础环境验证 ==="
echo -n "Linux 内核: "
uname -r
echo -n "Perl 版本: "
perl --version 2>&1 | grep "This is perl" | awk '{print $4}'
echo -n "Python 版本: "
python3 --version 2>&1 | awk '{print $2}'
echo -n "Tcl 版本: "
echo 'puts [info patchlevel]' | tclsh 2>&1
echo -n "gcc 版本: "
gcc --version 2>&1 | grep "gcc" | awk '{print $3}'
echo "=== 验证完成 ==="
建议: 把这个脚本放在 /opt/pd_scripts 目录下,每次换新机器或者重装系统时,先跑一遍。我每次换工作、换电脑,第一件事就是搭这个环境,然后跑这个脚本确认一遍,心里才踏实。