第二章: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的工具,流程大同小异。
安装步骤
- 解压安装包:一般是个tar.gz文件
- 运行安装脚本:
./installer -gui或./setup.sh - 选择安装路径:我习惯放
/opt/eda/synopsys/下 - 配置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 知识体系总览
说了这么多,咱们用一张图把关系理清楚:
这张图把咱们今天讲的内容串起来了。Linux是基础,Shell是工具,EDA配置是目标。三者缺一不可。
好了,这一章的内容就到这。环境搭好了,后面咱们才能安心做设计。记住我一句话:环境配不好,后面全是坑。花点时间把基础打牢,值得。