2017-03-23 7 views
0

ちょっと読んだところで、これはSystem Verilogでは許可されていないようですが、やや鈍っているようです。 。システムVerilogのバッファリング方法

私はif_datapathとして定義されたインターフェースを持っています。インターフェイスにはシンク、ソース、モニタと呼ばれるいくつかのモデムがあり、問題なくモジュール上でインターフェイスを使用することができます。私はnitherシンク、ソースまたはモニタなどのモジュール内のインタフェースを定義する場合

しかし、:

if_datapath    #(.EW(5),.DW(256),.SW(64),.QW(32))   dp_buf_0    (.clk(clk), .reset(reset)); 

Iは階層を介してルートに自分のインターフェイスを、これを使用することができます。代わりに、ルーティングのためにそれを使用する。しかし、私は次のように記述している場合:

always @ (posedge clk) 
begin 

dp_buf_0 <= dp_in; // Where dp_in is the same kind of 
        //interface as dp_buf_0 
end 

私が言うエラーが出ます:

An instance name is not a legal lvalue [7.1(IEEE)]. 

私は私の全体のインターフェイスを登録したいのであれば、私は抜け出す必要があります個々の部分?私はここに何かがないことを教えてください。

答えて

2

インターフェイスとモジュールは、それらのコンテナ内のアイテムの階層的な名前空間を作成する単なるコンテナです。また、これらのコンテナ内の信号を接続する方法も提供します。インターフェイスは接続を行う方法をいくつか提供し、modportはインターフェイス内のものへのアクセスを制限する構造体です。

インターフェイスはデータ型ではなく、インターフェイスインスタンスは変数ではないため、同じ種類の操作を変数に対して実行することはできません。

ただし、structをデータ型として定義し、そのデータ型を使用してワイヤまたは変数を作成することができます。その後、ワイヤまたは変数上で実行できる操作と同じ操作をすべて実行できます。

+0

返信いただきありがとうございます。これはSVの監督だと思われる。アウトインターフェイスのすべてのネットを入力インターフェイスの対応するネットに1つずつ割り当てる必要がある場合は、インターフェイスのポイントは何ですか? –