モジュール
モジュールはソースコードの最上位コンポーネントの1つです。モジュールはオーバーライド可能なパラメータ、接続ポート、内部ロジックを持ちます。
オーバーライド可能なパラメータは #()
内で宣言できます。それぞれのパラメータ宣言は param
キーワードで始まり、識別子、:
、パラメータの型、デフォルト値で構成されます。
接続ポートは ()
内で宣言できます。それぞれのポート宣言は識別子、:
、ポートの方向、ポートの型で構成されます。利用可能なポート方向は以下の通りです。
input
:入力ポートoutput
:出力ポートinout
:双方向ポートmodport
:インターフェースのmodportinterface
: ジェネリックインターフェース
module ModuleA #(
param ParamA: u32 = 0,
param ParamB: u32 = 0,
) (
a: input logic,
b: input logic,
c: input logic,
x: output logic,
) {
always_comb {
if c {
x = a;
} else {
x = b;
}
}
}
ジェネリックインターフェース
ジェネリックインターフェースは特別なポート方向指定です。interface
が指定されたとき、そのポートには任意のインターフェースを接続可能です。interface::ModPort
のように modport を付けることもできます。この場合、ModPort
を持つインターフェースだけが接続できます。
module ModuleA (
bus_if : interface,
slave_if: interface::slave,
) {}