第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环境是验证工程师的战场,这些命令就是你的武器。别怕黑乎乎的终端,多用、多练、多踩坑,慢慢就熟了。
可可精品资料库