ctags for systemverilog(vim用)

我们知道 vim+ctags 是编程时很常用的组合工具,但是原本的 ctags 似乎沒有 systemverilog 的支持,

不过我在网上找到国外高手写的systemverilog for ctags的语法支持文件。

通常我们需要以下几步简单设置就可以在sv文件中,调用tags的强大功能了。

1.ctags的用户配置通常保存在用户根目录下的.ctags里(~/.catgs)。

将附件下载于用户根目录下,重命名为.ctags。

2.针对工作目录生成的tags文件。

ctags -R -f ~/tags/xxx --languages=systemverilog /project/root/dir 

3.对vim配置文件进行简单配置,加入ctags需要搜索的文件(~/.vimrc)。

set tags= ./tags, tags

set tags+=/project/root/dir/TAGS

如果需要针对uvm源码生成tags文件,那么就在uvm/src目录下执行第2部命令即可。

然后在加入到.vimrc的配置中。

.ctags文件如下:

--exclude=.SOS
--exclude=.git
--exclude=nobackup
--exclude=nobkp
--exclude=results
--exclude=*.log

--langdef=SystemVerilog
--langmap=SystemVerilog:.sv.v.svh.tv.vg.vinc

--regex-SystemVerilog=/^\s*(\b(static|local|virtual|protected)\b)*\s*\bclass\b\s*(\b\w+\b)/\3/c,class/
--regex-SystemVerilog=/^\s*(\b(static|local|virtual|protected)\b)*\s*\btask\b\s*(\b(static|automatic)\b)*\s*(\w+::)*\s*(\b\w+\b)/\6/t,task/
--regex-SystemVerilog=/^\s*(\b(static|local|virtual|protected)\b)*\s*\bfunction\b\s*(\b(\w+)\b)*\s*(\w+::)*\s*(\b\w+\b)/\6/f,function/

--regex-systemverilog=/^\s*clocking\s+(\w+)/\1/e,clocking/
--regex-systemverilog=/^\s*constraint\s+(\w+)/\1/i,constraint/
--regex-systemverilog=/^\s*covergroup\s+(\w+)/\1/l,covergroup/
--regex-SystemVerilog=/^\s*\bmodule\b\s*(\b\w+\b)/\1/m,module/
--regex-SystemVerilog=/^\s*\bprogram\b\s*(\b\w+\b)/\1/p,program/
--regex-SystemVerilog=/^\s*\binterface\b\s*(\b\w+\b)/\1/i,interface/
--regex-SystemVerilog=/^\s*\btypedef\b\s+.*\s+(\b\w+\b)\s*;/\1/e,typedef/
--regex-SystemVerilog=/^\s*`define\b\s*(\w+)/`\1/d,define/
--regex-SystemVerilog=/}\s*(\b\w+\b)\s*;/\1/e,typedef/

--regex-SystemVerilog=/^\s*(\b(static|local|private|rand)\b)*\s*(\b(shortint|int|longint)\b)\s*(\bunsigned\b)?(\s*\[.+\])*\s*(\b\w+\b)/\7/v,variable/
--regex-SystemVerilog=/^\s*(\b(static|local|private|rand)\b)*\s*(\b(byte|bit|logic|reg|integer|time)\b)(\s*\[.+\])*\s*(\b\w+\b)/\6/v,variable/
--regex-SystemVerilog=/^\s*(\b(static|local|private)\b)*\s*(\b(real|shortreal|chandle|string|event)\b)(\s*\[.+\])*\s*(\b\w+\b)/\6/v,variable/
--regex-SystemVerilog=/(\b(input|output|inout)\b)?\s*(\[.+\])*\s*(\b(wire|reg|logic)\b)\s*(\[.+\])*\s*(#(\(.+\)|\S+)\))?\s*(\b\w+\b)/\9/v,variable/
--regex-SystemVerilog=/(\b(parameter|localparam)\b).+(\b\w+\b)\s*=/\3/a,parameter/

--SystemVerilog-kinds=+ctfmpied

### 使用 Ctags 进行 Verilog 代码导航和索引 #### 安装 Ctags 和配置环境 为了使 Ctags 能够支持 Verilog 文件,需先下载并安装 Universal-ctags 的 Windows 版本[^3]。下载完成后应将其放置于非中文字符构成的浅层目录结构内以确保被正确识别[^2]。 接着把解压后的 `ctags` 可执行文件所在的路径加入系统的环境变量 PATH 中以便全局调用。这一步骤对于后续在任何位置运行 ctags 命令至关重要。 #### 配置 VSCode 插件 针对 Visual Studio Code 用户而言,在完成上述准备工作之后还需要进一步操作: 1. **安装相关插件** - 在扩展市场中查找并安装适用于 Verilog-HDL 或 SystemVerilog 的语法高亮和支持包。 2. **设置 Ctags 执行程序的位置** - 对于已有的 HDL 类型项目,找到对应的插件选项卡,并按照提示输入之前所提到的 `ctags.exe` 的确切路径。 #### 创建 Tags 文件 当一切准备就绪后就可以创建 tags 文件了。进入目标项目的根目录下,通过命令行界面执行如下指令来生成 `.tags` 文件: ```bash ctags --languages=verilog -R . ``` 这条语句的作用是以递归方式扫描当前工作区内的所有 .v 后缀名文件,并为之建立标签数据库用于加速查询过程[^5]。 #### 浏览 RTL 设计 有了预先构建好的 tag 数据库作为支撑,现在可以更方便地定位特定模块或信号定义处。只需简单地按下 Ctrl+] 即可跳转至光标下的实体声明部分;而借助快捷键组合 Shift+Alt+B 更是可以实现反向追踪引用关系网状图的功能。 此外还可以利用 Vim 编辑器提供的 `-t` 参数快速加载指定标记点关联源码片段,例如: ```bash gvim -t module_name ``` 该方法同样适用于其他兼容此特性的 IDE 平台之上。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值