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)

说到这里,我画了一张图,把整个基础软件栈的关系理清楚:

PD 调试环境基础软件栈 Linux 操作系统 Ubuntu 20.04 / CentOS 7.9 Perl 文本处理 · 回归框架 Python 脚本 · 数据 · 分析 Tcl/TK 工具接口 · GUI Synopsys 工具链 DC · PT · ICC2 · VCS Cadence 工具链 Innovus · Tempus · Xcelium 开源工具 OpenROAD · Yosys · Iverilog PD 调试环境 回归 · 波形 · 时序 · GUI 先装 Linux → 再配脚本语言 最后装 EDA 工具

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 目录下,每次换新机器或者重装系统时,先跑一遍。我每次换工作、换电脑,第一件事就是搭这个环境,然后跑这个脚本确认一遍,心里才踏实。