第二章:Linux基础与EDA环境搭建

说实话,很多刚入行的朋友觉得EDA工具安装就是跑个脚本。其实不然。我见过太多人卡在环境配置这一步,一卡就是好几天。今天咱们就把这块硬骨头啃下来。

2.1 Linux常用命令——你得会这些

做EDA后端,Linux是躲不开的。我习惯把常用命令分成三类:文件操作、进程管理、文本处理。

文件操作三板斧

ls -ltr   # 按时间排序,看最新文件
cd /home/project/rtl  # 别用路径?我建议你多用tab补全
cp -r source_dir/ dest_dir/  # 递归拷贝,别漏了-r
mv old_name new_name  # 重命名,比rm安全多了
rm -rf ./temp/  # 小心!这个命令没有后悔药
⚠️ 我曾经犯过的错: 有一次在服务器上执行 rm -rf ./ temp/,多了一个空格,结果把当前目录全删了。从那以后,我每次用rm都会先ls确认。

进程管理——你得盯住仿真

ps -ef | grep innovus  # 找Innovus进程
top -u username  # 看谁在吃CPU
kill -9 PID  # 强制杀掉卡死的仿真
nohup run_script.sh &  # 后台跑,关终端也不停

嗯,这里要注意:kill -9 是最后的手段。我一般先用 kill -15,让进程自己清理一下。

文本处理——看log的利器

grep "ERROR" run.log  # 找错误
grep -v "WARNING" run.log  # 过滤掉警告
sed -n '100,200p' run.log  # 只看100到200行
awk '{print $1, $3}' timing.rpt  # 提取第一和第三列
💡 我的小技巧: 看log时,我习惯先 grep -c "ERROR" 数一下错误数量,心里有个底。

2.2 文件系统——你得知道东西放哪

Linux文件系统,说白了就是一棵倒挂的树。根目录是 /,下面挂着一堆目录。

目录 用途 我常用的场景
/home 用户家目录 放个人脚本和项目文件
/opt 第三方软件 EDA工具安装在这
/tmp 临时文件 跑仿真时的大文件放这,重启就没了
/usr/local 本地安装的程序 自己编译的小工具

你想想看,如果所有东西都堆在 /home 下,找起来多费劲。我习惯按项目建目录:

/home/username/
├── project_a/
│   ├── rtl/
│   ├── synthesis/
│   ├── pnr/
│   └── signoff/
├── project_b/
└── scripts/

2.3 Shell脚本基础——自动化你的工作

做后端,重复劳动特别多。写个脚本,一劳永逸。我个人习惯用bash,简单够用。

变量和参数

#!/bin/bash
# 设置变量
PROJECT_NAME="chip_v1"
DESIGN_TOP="top_module"
# 使用变量
echo "Running ${PROJECT_NAME}..."
# 位置参数
echo "第一个参数: $1"
echo "第二个参数: $2"

条件判断——你得学会做决定

if [ -f "run.log" ]; then
    echo "log文件存在"
else
    echo "log文件不存在,重新跑"
    ./run_simulation.sh
fi
🔑 关键点: [ -f ] 检查文件,[ -d ] 检查目录。我经常用这个来判断上一步有没有生成结果文件。

循环——批量处理的好帮手

# 遍历所有.v文件
for file in *.v; do
    echo "检查 $file"
    vlogan $file
done

2.4 EDA工具安装与License配置

这块是重头戏。我装过Synopsys、Cadence、Mentor的工具,流程大同小异。

安装步骤

  1. 解压安装包:一般是个tar.gz文件
  2. 运行安装脚本:./installer -gui 或 ./setup.sh
  3. 选择安装路径:我习惯放 /opt/eda/synopsys/ 下
  4. 配置License:这是最容易出问题的一步

License配置——避坑指南

我曾经花了一整天,就为了配一个License。后来发现是环境变量写错了。

# 设置License服务器
export SNPSLMD_LICENSE_FILE=27000@license_server
# 或者指向本地文件
export LM_LICENSE_FILE=/opt/eda/license/synopsys.dat
⚠️ 注意: License文件里的hostname要和服务器一致。我见过有人改了服务器名,忘了更新License文件,结果工具全用不了。

2.5 环境变量设置——让工具找到路

环境变量,说白了就是给工具指路。你装好了工具,但系统不知道它在哪,那等于白装。

核心环境变量

变量名 作用 示例
PATH 可执行文件搜索路径 /opt/eda/synopsys/bin
LD_LIBRARY_PATH 动态库搜索路径 /opt/eda/synopsys/lib
LM_LICENSE_FILE License文件路径 /opt/eda/license.dat

我的.bashrc配置模板

# EDA工具路径
export SYNOPSYS_HOME=/opt/eda/synopsys
export CADENCE_HOME=/opt/eda/cadence

# 添加到PATH
export PATH=$SYNOPSYS_HOME/bin:$CADENCE_HOME/bin:$PATH

# License配置
export SNPSLMD_LICENSE_FILE=27000@lic-srv-01
export CDS_LIC_FILE=5280@lic-srv-01

# 项目路径
export PROJECT_ROOT=/home/username/projects
💡 我的习惯: 每次改完.bashrc,我都会开一个新终端测试。别在同一个终端里source,有时候环境变量会乱掉。

2.6 知识体系总览

说了这么多,咱们用一张图把关系理清楚:

EDA后端环境 Linux基础 文件操作 进程管理 文本处理 文件系统 Shell脚本 变量参数 条件判断 循环处理 自动化 EDA工具 工具安装 License配置 环境变量 路径配置 三者结合:Linux操作 + Shell自动化 + EDA配置 = 高效后端工程师

这张图把咱们今天讲的内容串起来了。Linux是基础,Shell是工具,EDA配置是目标。三者缺一不可。

好了,这一章的内容就到这。环境搭好了,后面咱们才能安心做设计。记住我一句话:环境配不好,后面全是坑。花点时间把基础打牢,值得。

可可精品资料库