インターフェース
インターフェースはソースコードの最上位コンポーネントの1つです。インターフェースはオーバーライド可能なパラメータ、インターフェース定義を持ちます。
オーバーライド可能なパラメータについてはモジュールと同じです。
インターフェース定義では modport
を宣言することができます。modport
はモジュールのポート宣言で、ポートを束ねて接続するために使うことができます。
interface InterfaceA #(
param ParamA: u32 = 0,
param ParamB: u32 = 0,
) {
var a: logic;
var b: logic;
modport master {
a: output,
b: input ,
}
modport slave {
b: input ,
a: output,
}
}
modportのデフォルトメンバー
modportの全てのメンバーを指定する代わりに、以下のようにデフォルトメンバーを指定することができます。
..input
: インターフェース内の全ての変数をinput
として追加..output
: インターフェース内の全ての変数をoutput
として追加..converse(modport_name)
:modport_name
と同じ変数を、方向を逆にして追加
デフォルトメンバーの指定は通常の明示的なメンバーと一緒に使うこともできます。
interface InterfaceA {
var a: logic;
var b: logic;
var c: logic;
modport master {
a: output,
b: input ,
c: input ,
}
modport slave {
..converse(master)
}
modport monitor {
..input
}
modport driver {
b: input,
..output
}
}