emacs verilog-mode

/*AUTOINST*/

下位階層のモジュールをインスタンスを記述するのって、面倒ですよね。verilog-mode には、そんな面倒を手助けしてくれる機能があります。

キーワードとして /*AUTOINST*/ を以下の例のようにインスタンス文の () の中に記述します。

verilog-mode はカレント・ディレクトリからモジュール名 (この例では adder) と同じファイル名 (この例では adder.v) を探し、そのファイルから input, output, inout を読み取ります。もし、そのファイル(この例では adder.v)がカレント・ディレクトリにない場合は、シンボリック・リンクで対応して下さい。

AUTOINST1

これで、自動コマンドとして、 ctrl-c ctrl-a を押すとインスタンス文の (/*AUTOINST*/) に 信号名 を入れてくれます。

上の例の場合、上位階層の信号名を指定していないため、インスタンスされる側の下位階層の input, output, inout の端子名が上位階層の信号名として使われます。

上位階層の信号名を指定する場合は、次に説明する AUTO_TEMPLATE を使って指定します。

AUTOINST2

AUTO_TEMPLATE は以下のように、/* ... */ の中に インスタンス文と同じように記述しますが、インスタンス名のところに AUTO_TEMPLATE というキーワードが入ります。

さらに上位階層の信号名の指定の中に@を入れると、@はインスタンス名の中に最初に出てくる数字と置き換えてくれます。

AUTOINST3

これで、自動コマンドとして、 ctrl-c ctrl-a を押すと以下のように 4-bit の adder として完成します。

如何ですか? このテクニックを知っていれば、何かと便利かと思います。

AUTOINST4

より詳しい AUTO_TEMPLATE の使い方はこちら → How do I use AUTO_TEMPLATE



オンラインブートキャンプ無料説明会
TITLE

自己紹介

50才になる半導体エンジニアです。
大学で電子電気工学を学び、1990年にその分野のまま就職。ASICやマイコンの設計を長く続けてきましたが20年も同じ分野にいると業態も衰退したり変化するもので退職し、今は外資のIT系会社に再就職して設計請負業をやっております。
お問い合わせは
nakata.xianzhi@outlook.com







Linux と 小ネタ

デジタル回路設計

海外駐在後記