2. Linux基础操作:为什么选择Linux、常用Linux发行版推荐(Ubuntu/CentOS)、终端与Shell基础、文件系统导航命令(cd/ls/pwd)、文件操作命令(cp/mv/rm/touch)

2.1 为什么选择Linux?

做数字IC验证,你迟早要跟Linux打交道。这不是选择题,是必答题。

我刚开始入行时也纳闷:Windows用得好好的,干嘛非得折腾Linux?后来在项目里跑一次仿真就明白了——Windows下开一个VCS或者QuestaSim,内存占用直接飙红,编译速度慢得让人抓狂。而同样的工具链,在Linux上跑得飞快,资源调度也干净利落。

说白了,EDA工具(比如Synopsys、Cadence、Mentor家的那些)原生就是为Linux设计的。你在Windows上装个虚拟机跑Linux,性能打七折;直接在Linux物理机上跑,效率拉满。我见过不少团队,服务器清一色CentOS,工作站用Ubuntu,没人用Windows做主力验证环境。

另外,Linux的脚本能力太强了。你想想看,验证流程里动不动就要批量跑几百个testcase,还要自动收集覆盖率、比对log。这些活儿,用Shell脚本或者Python一组合,几行代码搞定。Windows的批处理?嗯,不是不能用,但体验差太远。

核心结论: 做IC验证,Linux是标配。早一天熟悉,早一天省心。

2.2 常用Linux发行版推荐

Linux版本很多,但做验证常用的就两个:Ubuntu 和 CentOS(现在更多用Rocky Linux或AlmaLinux替代)。

发行版 特点 适用场景
Ubuntu(LTS版本) 社区活跃、软件包新、apt安装方便 个人开发机、学习环境
CentOS / Rocky Linux 稳定、企业级支持、与RHEL兼容 服务器、公司统一环境

我个人习惯:笔记本上装Ubuntu 20.04 LTS,因为驱动支持好,装EDA工具时踩坑少。服务器上则用Rocky Linux,图它稳定,跑几个月不用重启。

曾经有个同事,非要在Ubuntu上装最新内核,结果某个版本的VCS死活编译不过,折腾了两天。后来换成LTS版本,一次搞定。所以我的建议是:别追新,用LTS。

2.3 终端与Shell基础

终端(Terminal)就是你的战场。在Linux下干活,90%的时间都在敲命令。别怕,习惯就好。

Shell有很多种,bash、zsh、sh……最常用的是bash。你打开终端,默认就是bash。怎么确认?敲这个命令:

echo $SHELL

输出一般是 /bin/bash。如果是zsh,也别慌,基本命令都一样。

我建议你把终端固定在任务栏,或者学会用快捷键(Ctrl+Alt+T)。验证工程师一天要开十几个终端窗口,每个窗口跑不同的仿真任务。你想想看,要是每次都得去菜单里找终端,多耽误事。

小技巧: 按 Tab 键可以自动补全命令和文件名。按一次补全,按两次列出所有匹配项。这个习惯越早养成越好。

2.4 文件系统导航命令

在Linux里,没有C盘D盘,只有一个根目录 /。所有文件和设备都挂在这个树形结构下。刚开始可能不习惯,但用熟了你会发现,这种设计其实更清晰。

pwd —— 我在哪?

刚打开终端,你面对的是一个黑框框。想知道当前在哪个目录?敲:

pwd

输出类似 /home/yourname。这就是你的家目录。每个用户都有自己的家目录,放个人文件。

ls —— 看看有啥

想知道当前目录下有哪些文件?用 ls:

ls
ls -l    # 显示详细信息(权限、大小、修改时间)
ls -a    # 显示隐藏文件(以.开头的文件)
ls -lh   # 人性化显示文件大小

我经常用 ls -l,因为能看到文件权限。有一次仿真报错说“权限不够”,我一看,原来是脚本没加执行权限。用 ls -l 一眼就能发现问题。

cd —— 去别处

切换目录用 cd:

cd /home/project    # 路径
cd project          # 相对路径(从当前位置往下)
cd ..               # 返回上一级目录
cd ~                # 回到家目录
cd -                # 回到上一个目录

这里有个坑:路径别打错。Linux是大小写敏感的,Project 和 project 是两个不同的目录。我曾经因为大小写问题,找了一个文件找了十分钟……

注意: 路径中不要有中文或空格。如果有空格,要用引号包起来或者用反斜杠转义。但最好的办法是——永远不要用空格命名文件或目录。

2.5 文件操作命令

验证工作中,天天要跟文件打交道。复制、移动、删除、创建,这些命令必须烂熟于心。

touch —— 创建空文件

touch testbench.sv
touch run.log

如果文件不存在,touch 会创建一个空文件。如果文件已存在,它只更新文件的修改时间。我经常用它来快速生成一个占位文件,或者刷新log文件的时间戳。

cp —— 复制

cp source.sv dest.sv          # 复制文件
cp -r src_dir/ dest_dir/      # 递归复制目录
cp -i file1.sv file2.sv       # 覆盖前提示(安全)

复制目录时一定要加 -r,否则会报错。我刚开始学Linux时就忘了加,结果目录没复制成,还一脸懵。

mv —— 移动或重命名

mv old_name.sv new_name.sv    # 重命名
mv file.sv /home/project/     # 移动文件到其他目录

mv 既可以移动文件,也可以重命名。说白了,移动和重命名在Linux里是同一个操作——把文件从一个路径挪到另一个路径。

rm —— 删除

rm test.log                   # 删除文件
rm -r temp_dir/               # 递归删除目录
rm -f core_dump               # 强制删除(不提示)
rm -rf *                      # 慎用!删除当前目录所有内容

这里我要特别强调:Linux没有回收站。文件被 rm 删了,就真的没了。我曾经有一次在服务器上跑 rm -rf,手一抖多打了个空格,差点把整个项目删了。从那以后,我养成了两个习惯:

  • 删除前先用 ls 确认路径
  • 重要文件用 cp 备份一份再删
避坑指南: 不要轻易用 rm -rf,尤其是带通配符的时候。先 ls 看看要删的是啥,再动手。

2.6 本章知识体系

下面这张图帮你理清本章的核心逻辑:

Linux基础操作 为什么选Linux EDA工具原生支持 性能 & 脚本能力 发行版推荐 Ubuntu(个人) CentOS/Rocky(服务器) 终端与Shell bash / zsh Tab补全 / 快捷键 导航命令 pwd / ls / cd 路径 vs 相对路径 文件操作命令 touch / cp / mv / rm 慎用 rm -rf 避坑指南 大小写敏感 无回收站 掌握这些,验证环境搭建就稳了

嗯,这一章的内容就这些。Linux命令不难,难的是养成习惯。多敲几次,肌肉记忆就形成了。下次打开终端,试试不用鼠标,纯键盘操作——你会发现效率提升一大截。

我的建议: 每天花10分钟在终端里瞎逛,cd到各个目录,ls看看文件,touch创建几个空文件练手。一周后,这些命令就像呼吸一样自然。

可可精品资料库