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

数组批量赋值实现

image

宏录制

1.先手动写好第一行作为模板:
2.开始录制宏:
在第一行按 qa(开始录制到寄存器 a)。
按 yy 复制当前行,按 p 粘贴到下一行。
修改索引:光标移动到 [ 后面,按 Ctrl+a(数字加 1)。
修改二进制/注释:根据你的逻辑进行修改(比如向右移动一位)。
按 q 停止录制。
3.批量执行:
输入 26@a 即可瞬间生成剩下的 26 行。

可视块批量处理

  1. 先写好所有的注释部分(每行一个数组)。
  2. 进入可视化块模式 (Ctrl+v),选中所有行的开头。
  3. 按 I(大写 i),输入 assign ctr[0] = 30'b... 然后按 Esc。
  4. 再次使用 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

posted @ 2026-03-06 11:11  周一三  阅读(141)  评论(0)    收藏  举报