第1章:Linux基础与开发环境准备

做验证这行,Linux是躲不开的。我见过不少新人,一进公司面对黑乎乎的终端就懵了。其实没那么可怕,说白了,Linux就是验证工程师的「工地」,你得知道工具放哪、怎么用。

这一章,我带你过一遍最常用的命令和工具。都是我在项目里天天用的东西,一个都跑不掉。

1.1 Linux常用命令

文件操作:你每天都在跟文件打交道

验证环境里,文件操作是基本功。你想想看,每天要翻日志、改脚本、查配置,不会这几个命令寸步难行。

ls -ltr   # 按时间排序,最新的在最后
cd /project/block_a/tb
pwd       # 看看自己在哪
cp -r old_dir new_dir   # 递归复制目录
mv file_a file_b        # 重命名或移动
rm -rf temp_dir         # 小心!删了就没了

⚠️ 我曾经手滑过:在服务器上执行 rm -rf ./* 时路径搞错了,差点把整个项目删了。从那以后,我每次删东西前都会先 ls 确认一遍。

文件查找也是高频操作。我习惯用 find 配合 grep:

find . -name "*.sv" -type f   # 找所有SystemVerilog文件
grep -rn "error" *.log        # 在日志里搜error关键字

进程管理:别让仿真跑死了还不知道

仿真一跑就是几小时,你得学会看进程。我个人习惯用 top 先瞄一眼整体情况:

top -u username   # 只看自己的进程
ps -ef | grep vcs  # 找VCS仿真进程
kill -9 PID        # 强制杀掉卡死的仿真

💡 小技巧:仿真跑太久没反应?先 top 看看CPU占用。如果CPU是0%,大概率是死锁了,直接 kill -9 吧。

我遇到过最坑的一次,是仿真进程卡在后台占着license,别人跑不了。后来我养成了习惯,每次跑完仿真都 ps 检查一下有没有残留进程。

权限管理:别乱动别人的文件

团队协作时,权限问题特别容易出幺蛾子。我记得有一次,同事改了个脚本,结果权限设成了 700,整个组都用不了。

chmod 755 script.sh    # 自己可读写执行,其他人可读可执行
chmod +x run_sim       # 给文件加执行权限
chown user:group file  # 修改文件所有者

嗯,这里要注意:chmod 777 别乱用。你想想看,所有人都能改你的文件,万一有人手滑了呢?

1.2 Vim编辑器使用

Vim这东西,刚接触时真想砸键盘。但用顺了以后,你会发现它比任何IDE都顺手。我到现在写脚本、改配置还是用Vim。

别想着一次学完所有命令,先记住这几个就够用了:

模式 操作 命令
普通模式 移动光标 h/j/k/l、w/b、0/$
插入模式 进入编辑 i(光标前)、a(光标后)
可视模式 选中文本 v(字符)、V(行)
命令模式 保存退出 :wq、:q!、:%s/old/new/g

🔑 核心技巧:Vim的哲学是「组合」。比如 d2w 就是删除两个单词,y3j 是复制往下3行。把基本命令组合起来,效率翻倍。

我个人的建议是:先练 i、ESC、:wq 这三个,能活下来再说别的。等用熟了,再慢慢学 dd、yy、p 这些。

1.3 SSH远程连接

验证工程师的服务器通常不在本地。你坐在工位上,连的是机房里几十台服务器。SSH就是你的「任意门」。

ssh username@server_ip -p 22
ssh -i ~/.ssh/id_rsa user@host   # 用密钥登录

我刚开始工作时,每天要输几十次密码,烦死了。后来配了SSH密钥,世界清静了:

ssh-keygen -t rsa -b 4096   # 生成密钥对
ssh-copy-id user@host       # 把公钥传到服务器

💡 省时技巧:在 ~/.ssh/config 里配好别名,以后直接 ssh server1 就行:

Host server1
    HostName 192.168.1.100
    User myname
    Port 22
    IdentityFile ~/.ssh/id_rsa

还有个小细节:长时间不操作,SSH会断掉。我习惯在 ~/.ssh/config 里加一行 ServerAliveInterval 60,每60秒发个心跳包,连接就不会断了。

1.4 环境变量配置

环境变量这东西,说白了就是给系统指路。你告诉它「工具在哪」、「库在哪」,它才能找到东西。

验证环境里最常用的几个变量:

export PATH=$PATH:/tools/synopsys/vcs/bin
export LM_LICENSE_FILE=27000@license_server
export PROJECT_HOME=/home/project/block_a
export UVM_HOME=/tools/uvm-1.2

我习惯把这些配置写在 ~/.bashrc 里,每次登录自动加载:

# 在 ~/.bashrc 末尾添加
alias ll='ls -ltr'
alias sim='cd $PROJECT_HOME/sim'
source /tools/scripts/setup.csh

⚠️ 我曾经踩过的坑:有次改完 .bashrc 忘了 source,折腾了半天才发现变量没生效。记住:改完配置一定要 source ~/.bashrc 或者重新登录。

还有个常见问题:不同工具可能依赖不同版本的库。我建议把环境变量配置写成独立的脚本,每个项目用不同的配置文件,互不干扰。

知识体系总览

这一章的内容,说白了就是验证工程师的「生存技能」。下面这张图帮你理清脉络:

Linux基础与开发环境准备 - 知识体系 验证环境搭建 文件操作 ls / cd / pwd cp / mv / rm find / grep 进程管理 top / ps / kill 后台运行 & nohup / jobs 权限管理 chmod / chown rwx权限模型 用户/组管理 环境变量配置 PATH / LICENSE .bashrc / alias 必备工具链 Vim编辑器 · SSH远程连接 · 脚本自动化 「工欲善其事,必先利其器」

这一章的内容,说白了就是验证工程师的「生存技能」。文件操作让你找得到东西,进程管理让你控得住仿真,权限管理让你不背锅,环境变量配置让你跑得起来。把这些练熟了,后面的路就好走了。

📌 一句话总结:Linux环境是验证工程师的战场,这些命令就是你的武器。别怕黑乎乎的终端,多用、多练、多踩坑,慢慢就熟了。

可可精品资料库