3

私は最近、Verilog およびシステム Verilog コーディングとコード ブラウジングに熱狂的な ctags と emacs を使い始めました。現在、コマンドを使用してタグを生成しています

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

私のコードには、拡張子が「.vh」および「.svh」の特定のヘッダー ファイルですべて指定されている多くの `define マクロが含まれています。たとえば、foo.vhという名前のヘッダー ファイルには次のコードがあります。

`define WIDTH_ADDRESS 32;

ファイルtop.vは次のようにマクロを呼び出します

input [`WIDTH_ADDRESS - 1 : 0] InAddress;

emacs を使用してtop.vファイルを参照しているときに、 foo.vhファイルのマクロ定義に直接ジャンプできる方法はありますか?

私はM-x tags-search <RET> WIDTH_ADDRESS <RET>しばらくの間使用していますが、foo.vh ファイルに到達する前に、他のファイルの `WIDTH_ADDRESS のかなりの数のインスタンスにジャンプします。

いくつかの調査の後、-hタグ生成中に ctags のオプションを使用してヘッダー ファイルを指定するオプションを見ました。しかし、私はそれを機能させることができませんでした。私の側から構文エラーがあったと思います。

まず、-hオプションを使用してヘッダー ファイルを指定することの顕著な利点はありますか? もしそうなら、ヘッダーファイルを指定する正しい構文は何ですか? また、他のファイル (拡張子 ".v" & ".sv") を解析する前に、最初にこれらのヘッダー ファイル (拡張子 ".vh" & ".svh" を持つファイル) を調べるように emacs を指定できますか?

4

1 に答える 1

1

-h オプションの構文は次のとおりです。-h .vh.svh

ctags が `WIDTH_ADDRESS マクロの呼び出しを検出する理由がわかりません。WIDTH_ADDRESS が複数回定義されている場合、呼び出しではなく、すべての定義を取得する必要があります。Verilog プラグインの問題かもしれません。タグ ファイルはいつでも編集でき、不要なエントリは削除できます。これは、sed または perl スクリプトを使用すると簡単に実行できます。

于 2012-10-11T11:21:43.587 に答える