如何在使用emacs的繁琐ctags时为verilog语言指定和使用头文件

时间:2012-02-18 09:11:26

标签: emacs verilog ctags system-verilog exuberant-ctags

我最近开始使用旺盛的ctags和emacs来实现verilog&系统verilog编码和代码浏览。我目前使用命令

生成标签
ctags -e -R --tag-relative=yes --langmap=verilog:.v.vh.sv.svh 

我的代码包含很多`定义宏,这些宏都在某些头文件中指定,扩展名为“.vh”& “.svh”。对于例如名为 foo.vh 的头文件具有以下代码

`define WIDTH_ADDRESS 32;

并且文件 top.v 按如下方式调用宏

input [`WIDTH_ADDRESS - 1 : 0] InAddress;

在使用emacs浏览 top.v 文件时,有什么方法可以直接跳转到 foo.vh 文件中的宏定义?< / p>

我一直在使用M-x tags-search <RET> WIDTH_ADDRESS <RET>一段时间,但在到达foo.vh文件之前,它会跳转到其他文件中的WIDTH_ADDRESS的其他几个实例。

经过一些研究,我确实看到了一个选项,可以在标签生成过程中使用-h选项和ctags指定头文件。但是我无法让它工作,我想我的部分存在一些语法错误。

首先,使用-h选项指定头文件有什么明显的好处?如果是这样,指定头文件的正确语法是什么?我也可以指定emacs在解析其他文件之前首先查看这些头文件(扩展名为“.vh”&amp;“。svh”的文件)(扩展名为“.v”&amp;“.sv”)

1 个答案:

答案 0 :(得分:1)

-h选项的语法是-h .vh.svh

我不确定为什么ctags会选择`WIDTH_ADDRESS宏调用。如果多次定义WIDTH_ADDRESS,它应该选择所有定义,而不是调用。也许这是Verilog插件的一个问题。您始终可以编辑标签文件并删除不需要的条目。使用sed或perl脚本应该很容易。