4.モジュール


<module>
::= module <name_of_module> <list_of_ports>? ;
<module_item>*
endmodule

モジュールは基本的な構成単位です。論理合成する場合の合成単位でもあります。また、
インスタンスとして合成可能なモジュールを子供に持ちテストベンチモジュールとすることもあります。
モジュールで重要なのは、論理合成するか否かです。論理合成を前提にする場合はVerilog構文制約以外に論理合成可能な記述にしなければいけません。

文法は、BNFが分かるようになると幅が広がりますが、ほとんど使われない構文も多々ありますので、実際に必要なモジュールのサンプルを見てそれを真似て必要な構文だけ、シミュレータで走らせて見る習得方法でよろしいかと思います。

とりあえず、
モジュールの文法は、

キーワード"module"に始まり
次にモジュール名、入出力のポートの記述がある場合もあって、”;”で終わり、
モジュールアイテムが0回以上あって
キーワード"endmodule”で終わることを示しています。

Veritakインストールパッケージには、サンプルフォルダ、regression_testフォルダのなかにたくさんのサンプルモジュールが入っていますので、それを見てください。