Verification Engineerの戯言
インターフェースは、interface/endinterfaceの中にメソッドやサブインターフェースを宣言します。
メソッドは関数とおなじようなもので、0個以上の引数と戻り値を持ちます。
インターフェース中のメソッド宣言は、関数のプロトタイプ宣言とおなじです。
ただし、functionがmethodになります。
メソッドは、RTLに変換されたときはワイヤとして表現されます。
インターフェース中のメソッド宣言は、関数のプロトタイプ宣言とおなじです。
ただし、functionがmethodになります。
メソッドは、RTLに変換されたときはワイヤとして表現されます。
methodとfunctionの違いは、methodは暗示的な条件にて呼び出される。
リファレンス・ガイドの例(Page.25)を見てみます。
interface IntStack; method Action push (int x); method Action pop; method int top; endinterface: IntStack
IntStackインターフェースは、3つのmethod(push, pop, top)を持ちます。
pushdメソッドは、int型の引数xを持ち、戻り値の型がActionです。
popメソッドは、引数を持たないで、戻り値の型がActionです。
topメソッドは、引数を持たないで、戻り値の型がintです。
pushdメソッドは、int型の引数xを持ち、戻り値の型がActionです。
popメソッドは、引数を持たないで、戻り値の型がActionです。
topメソッドは、引数を持たないで、戻り値の型がintです。
methodでは、RTLに変換したときにready信号になります。
また、戻り値がActionのときはenable信号になります。
メソッドを呼ぶことができる状態の時は、enable信号がアサートされます。
enable信号がデ・アサートのときは、該当するメソッドは呼ぶことができません。
メソッドの戻り値がActionの場合は、ready信号がアサートのとき有効になります。
また、戻り値がActionのときはenable信号になります。
メソッドを呼ぶことができる状態の時は、enable信号がアサートされます。
enable信号がデ・アサートのときは、該当するメソッドは呼ぶことができません。
メソッドの戻り値がActionの場合は、ready信号がアサートのとき有効になります。
interface Stack#(type a); method Action push (a x); method Action pop; method a top; endinterface: Stack
#(type a)がパラメータ部分で、aの部分が実際の型になります。
SystemVerilogのように、新しい型をtypedefでできますので、int型のスタックインターフェースは、
typedef Stack#(int) IntStack;
のように宣言できます。
検証、Verification、Bluespec SystemVerilog