Как указать и использовать заголовочные файлы для языка verilog при использовании exuberant ctags с emacs - PullRequest
3 голосов
/ 18 февраля 2012

Я недавно начал использовать обильные ctags и emacs для кодирования verilog & system verilog и просмотра кода.В настоящее время я генерирую теги с помощью команды

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

Мой код содержит множество макросов `define, которые все указаны в определенных заголовочных файлах с расширением" .vh "&" .svh ".Например, заголовочный файл с именем foo.vh имеет следующий код

`define WIDTH_ADDRESS 32;

, а файл top.v вызывает макрос следующим образом

input [`WIDTH_ADDRESS - 1 : 0] InAddress;

При просмотре файла top.v с использованием emacs, есть ли способ, с помощью которого я могу перейти непосредственно к определению макроса в файле foo.vh ?

Я уже некоторое время использую M-x tags-search <RET> WIDTH_ADDRESS <RET>, но он переходит к довольно нескольким другим экземплярам `WIDTH_ADDRESS в других файлах перед тем, как добраться до файла foo.vh.

После некоторых исследований я увиделопция для указания заголовочных файлов, используя опцию -h с ctags во время генерации тегов.Однако я не мог заставить его работать, и я предполагаю, что с моей стороны была какая-то синтаксическая ошибка.

Прежде всего, есть ли какие-нибудь заметные преимущества указания файла заголовка с использованием опции -h?Если да, то каков правильный синтаксис для указания заголовочных файлов?Также я могу указать emacs, чтобы сначала просмотреть эти заголовочные файлы (файлы с расширением ".vh" & ". Svh") перед анализом других файлов (с расширением ".v" & ".sv")

1 Ответ

1 голос
/ 11 октября 2012

Синтаксис для опции -h: -h .vh.svh

Я не уверен, почему ctags принимает вызовы макросов WIDTH_ADDRESS.Если WIDTH_ADDRESS `определен несколько раз, он должен выбрать все определения, но не вызовы.Возможно, это проблема с плагином Verilog.Вы всегда можете отредактировать файл тегов и удалить ненужные записи.Это должно быть легко сделать с помощью сценария sed или perl.

...