IC工程师常用linux命令(持续更新ing)
常用 Linux Debug 命令总结
在 RTL / 验证开发中最常用的命令如下:
less
tail
tail -f
grep
grep -n
grep -r
find
wc
du
df
数字 IC 设计与验证环境中,在 Linux 服务器上进行仿真日志(simulation log)、编译日志(compile log)、以及 RTL 调试信息分析时常用的命令和操作方法。
目标包括:
- 快速定位 ERROR / WARNING
- 分析 仿真失败原因
- 搜索 RTL 信号或模块
- 提高 log 调试效率
适用于以下工具环境:
- VCS
- QuestaSim / ModelSim
- Verilator
- Xcelium
- FPGA 仿真环境
1 less —— 交互式日志浏览工具
功能
less 用于 分页浏览大型文本文件,适用于 GB 级仿真日志。
相比 cat:
| 命令 | 特点 |
|---|---|
| cat | 一次性输出全部内容 |
| less | 分页浏览、支持搜索 |
基本用法
less sim.log
常用操作
| 按键 | 功能 |
|---|---|
| Space | 向下翻页 |
| b | 向上翻页 |
| g | 跳到文件开头 |
| G | 跳到文件末尾 |
| q | 退出 |
| /pattern | 搜索字符串 |
| n | 下一个匹配 |
| N | 上一个匹配 |
常见调试操作
搜索 ERROR
/ERROR
搜索 WARNING
/WARNING
查找 assertion
/ASSERT
高级用法
打开文件并定位 ERROR
less +/ERROR sim.log
打开文件并跳到末尾
less +G sim.log
常用于查看 刚生成的仿真 log。
2 tail —— 查看日志末尾
基本用法
tail sim.log
默认输出 最后 10 行。
指定输出行数
查看最后 100 行:
tail -n 100 sim.log
从指定行开始
tail -n +200 sim.log
含义:
从第200行开始输出
3 tail -f —— 实时日志监控
功能
实时监控日志文件变化。
典型场景:
- 仿真运行时监控 log
- regression 测试观察错误
- CI pipeline 调试
示例
tail -f sim.log
当 log 更新时终端会持续输出新内容。
退出:
Ctrl + C
实时过滤 ERROR
tail -f sim.log | grep ERROR
仅显示包含 ERROR 的日志。
4 grep —— 文本搜索工具
grep 是 Linux 中最重要的 log 分析工具。
基本用法
grep ERROR sim.log
显示行号
grep -n ERROR sim.log
输出示例:
345: ERROR packet mismatch
忽略大小写
grep -i error sim.log
显示上下文
查看 ERROR 前后 5 行:
grep -n -A 5 -B 5 ERROR sim.log
参数说明:
| 参数 | 含义 |
|---|---|
| -A | After(后几行) |
| -B | Before(前几行) |
查找多个关键字
grep -E "ERROR|FATAL|ASSERT" sim.log
5 递归搜索 RTL
查找某信号:
grep -r "data_valid" ./rtl
查找模块定义:
grep -r "module fifo" ./rtl
查找 parameter:
grep -r "DATA_WIDTH" .
搜索 SystemVerilog class
grep -r "class axi_driver" ./tb
6 find文件查找工具
用于查找工程文件。
查找 Verilog 文件
find . -name "*.v"
查找 SystemVerilog
find . -name "*.sv"
查找模块文件
find . -name "*fifo*"
查找 log 文件
find . -name "*.log"
7 wc 日志统计与分析
统计 ERROR 数量
grep ERROR sim.log | wc -l
统计 WARNING
grep WARNING sim.log | wc -l
统计错误类型
grep ERROR sim.log | sort | uniq -c
示例输出:
10 packet mismatch
3 timeout error
8 du 文件大小与磁盘管理
查看文件大小
du -sh sim.log
查看目录大小
du -sh *
查看磁盘空间
df -h
RTL Debug 工作流程
以下为常见 仿真失败排查流程。
Step 1 查看日志末尾
tail -n 50 sim.log
判断:
- 是否存在 ERROR
- 是否存在 assertion failure
Step 2 搜索 ERROR
grep -n ERROR sim.log
Step 3 查看上下文
grep -n -A 10 -B 10 ERROR sim.log
Step 4 搜索 RTL 信号
grep -r "packet_valid" ./rtl
Step 5 搜索 testbench
grep -r "packet_valid" ./tb
一般调试命令组合
实时查看仿真
tail -f sim.log
实时查看 ERROR
tail -f sim.log | grep ERROR
查找 ERROR
grep -n ERROR sim.log
查找 ERROR 上下文
grep -n -A 5 -B 5 ERROR sim.log
搜索 RTL 信号
grep -r "valid_ready" ./rtl
verilog编程中VIM命令
插件使用手册
https://automatic-verilog.honk.wang/#/handbook
https://github.com/tyxiumud/gvim_for_verilog
① 块选择
Ctrl + v
② 列插入
I
③ 递增
g Ctrl-a
④ 宏录制
qa
⑤ vimgrep(跨文件查找)
:vimgrep
数组批量赋值实现

宏录制
1.先手动写好第一行作为模板:
2.开始录制宏:
在第一行按 qa(开始录制到寄存器 a)。
按 yy 复制当前行,按 p 粘贴到下一行。
修改索引:光标移动到 [ 后面,按 Ctrl+a(数字加 1)。
修改二进制/注释:根据你的逻辑进行修改(比如向右移动一位)。
按 q 停止录制。
3.批量执行:
输入 26@a 即可瞬间生成剩下的 26 行。
可视块批量处理
- 先写好所有的注释部分(每行一个数组)。
- 进入可视化块模式 (Ctrl+v),选中所有行的开头。
- 按 I(大写 i),输入 assign ctr[0] = 30'b... 然后按 Esc。
- 再次使用 Ctrl+v 选中索引列(全是 0 的那一列,除了第一个),输入g ctrl+a
批量生成端口
例如生成:
input data0
input data1
...
input data63
使用命令put=map(range(a,b),'printf("xxxx%d",v:val)')
命令:
:put =map(range(0,63),'printf("input data%d,",v:val)')
使用插件快捷键+宏录制
qq ,iiq 64@q

浙公网安备 33010602011771号