22 |
BSVのサブインタフェース |
BSVの先進的な話題のひとつにサブインタフェースがあります。これはインタフェースの階層化であり、インタフェース階層に別のインタフェースを入れ子で持つものです。ただしその実装はモジュールの中で定義するので、インタフェースを共通化しつつも実装を変える(ポリモーフィズム)などということが可能です。
DumpFSMモジュール内にUartを内蔵する例を図802.1に示します。

DUmpFSMモジュールのインタフェース部は、図のように端子を並べることも当然できますが、別の方法としてサブインタフェースを用いて記述することができます。Uartのインタフェースは定義済みなので、端子を書き並べる代わりに再利用します。このように一行で書き表せ、誤りも起こりにくいのがメリットです。
そして、モジュール最後のmethod定義の後にサブインタフェースを定義します。ただし端子の一部しか外部に表れていないため、コンパイル時に外部に出力していないread
及びwrite
端子が不足する旨の警告が出ます。
コンパイルすると以下の警告が表示されます。
ただしread及びwriteは未定義ではなくモジュール内部で使用しており、警告にも関わらず正しく内部で接続されています。
Leave a Comment