第1章:Linux环境搭建与基础

做数字芯片设计,第一件事不是写代码,而是搭环境。我见过太多新手,一上来就急着跑仿真,结果被环境问题卡了三天。说实话,Linux环境就是你的工作台,台子没搭稳,后面全是坑。

1.1 虚拟机安装:你的第一个“服务器”

为什么非要虚拟机?因为EDA工具对系统要求很苛刻。我早期在Windows上折腾过,各种兼容性问题让人崩溃。后来老老实实用虚拟机,世界清净了。

我个人习惯用VMware Workstation,当然VirtualBox也行,免费嘛。安装步骤很简单:

  1. 下载VMware Workstation Pro(官网有30天试用)
  2. 一路Next安装,没什么特别的
  3. 准备CentOS 7或Ubuntu 20.04的ISO镜像

小技巧: 虚拟机硬盘建议给80GB以上,内存至少8GB。EDA工具吃资源,我当年给16GB还被Synopsys的VCS卡死过。

创建虚拟机时,网络模式选NAT。为什么?桥接模式容易和公司网络冲突,NAT省心。嗯,这里要注意:如果你要用License服务器,得改成桥接模式,否则连不上。

1.2 CentOS vs Ubuntu:选哪个?

这是个老生常谈的问题。我直接说结论:

特性 CentOS 7/8 Ubuntu 20.04/22.04
稳定性 极高,企业级 高,社区活跃
EDA兼容性 最好,官方首选 良好,需额外配置
软件包管理 yum/dnf apt
新手友好度 一般 较好

我个人推荐CentOS 7。为什么?因为Synopsys、Cadence这些大厂的EDA工具,官方认证列表里CentOS 7出现频率最高。我曾经用Ubuntu装Design Compiler,折腾了两天,换CentOS半小时搞定。

避坑指南: 我曾经遇到过CentOS 8的库依赖问题,很多EDA工具还没适配。建议用CentOS 7.9,稳如老狗。

1.3 常用Linux命令:够用就行

你不需要成为Linux高手,但下面这些命令必须烂熟于心。我面试新人时,第一关就是让他们在终端里操作:

文件操作

ls -la          # 查看文件,-a显示隐藏文件
cd /home/eda    # 切换目录
pwd             # 看当前路径,我经常用
cp -r src/ dst/ # 递归复制目录
mv file1 file2  # 移动或重命名
rm -rf tmp/     # 删除目录,慎用!

重点: rm -rf 是核弹级命令。我有个同事当年在服务器上误操作,把整个项目删了...从那以后,我每次用rm都先ls确认三遍。

文本处理

cat file.log        # 看小文件
less file.log       # 看大文件,按q退出
grep "ERROR" *.log  # 搜索关键词,调试必备
head -20 file       # 看前20行
tail -f file        # 实时监控日志,跑仿真时常用

你想想看,跑一个综合要几个小时,中间出错了怎么办?用tail -f盯着log文件,第一时间发现错误。这是我做项目时的标准操作。

进程管理

ps -ef | grep vcs   # 查看VCS进程
top                 # 看CPU和内存占用
kill -9 PID         # 强制杀进程,慎用

EDA工具经常跑着跑着就卡死了。别慌,先ps找到PID,然后kill。我一般先kill -15,不行再-9。

1.4 文件权限管理:别让权限卡住你

Linux的权限模型其实很简单,就三个角色:所有者、所属组、其他人。每个角色有三种权限:读(r)、写(w)、执行(x)。

为什么重要?因为EDA工具经常报“Permission denied”。我刚开始做项目时,被这个错误折磨了一周。后来发现是脚本没有执行权限。

chmod +x run.sh          # 给脚本加执行权限
chmod 755 script.sh      # rwxr-xr-x,常用
chmod -R 777 project/    # 别这么干!不安全
chown user:group file    # 改变所有者

警告: chmod 777是偷懒的做法,但会让你的文件对所有人开放。在服务器上这么做,等于请别人来删你的代码。我见过有人因此丢了整个项目。

实际项目中,我通常这样设置:

  • 个人脚本:755(自己可写,别人可读执行)
  • 项目文件:644(自己可写,别人只读)
  • 临时目录:700(只有自己能访问)

1.5 环境变量设置:EDA工具的命脉

环境变量说白了就是告诉系统“工具在哪”、“库在哪”。没有它,你敲vcs系统根本不知道你在说什么。

最重要的几个环境变量:

# 在 ~/.bashrc 或 ~/.bash_profile 中添加
export SYNOPSYS=/opt/synopsys/2023
export PATH=$SYNOPSYS/bin:$PATH
export LM_LICENSE_FILE=27000@license-server
export SNPSLMD_LICENSE_FILE=27000@license-server

为什么用.bashrc而不是.bash_profile?我个人习惯把环境变量写在.bashrc里,因为每次打开新终端都会加载。而.bash_profile只在登录时加载一次。

技巧: 设置完记得 source ~/.bashrc 让它生效。我经常忘记,然后纳闷为什么命令找不到。

实际项目中,我还会设置这些:

export TMAX_HOME=/opt/synopsys/tmax
export DC_HOME=/opt/synopsys/dc
export ICC2_HOME=/opt/synopsys/icc2
export VERDI_HOME=/opt/synopsys/verdi

你想想看,每次跑不同的工具都要设置路径,多麻烦。所以我把所有EDA工具的环境变量都集中在一个文件里,然后source它。这样既整洁又好管理。

1.6 避坑总结

最后,分享几个我踩过的坑:

  1. 路径不要有中文和空格 - EDA工具对中文支持很差,我见过有人把项目放在“桌面”目录下,结果工具死活找不到文件。
  2. 不要用root跑EDA工具 - 很多工具会检测用户权限,root反而会出问题。建一个普通用户,比如eda_user。
  3. 备份.bashrc - 我每次改环境变量前都先cp一份。改错了还能恢复,别问我怎么知道的。
  4. 注意32位库 - CentOS 7默认不装32位库,但有些老的EDA工具需要。用yum install glibc.i686解决。

好了,环境搭好了,下一章我们开始真正接触EDA工具。记住,基础打牢了,后面才能跑得快。