2016-07-18 13 views
2

こんにちは、私は頭をラップしてインターフェイスを取り戻すのに苦労しています...最初は十分にシンプルに見えましたが、パラメータ化されたインターフェイスで作業を始めたら、 システムVerilogパラメータ化されたインターフェイス、方法

は、私はインターフェイス

interface my_if #( 
    parameter H_WIDTH = 64, 
    parameter L_WIDTH = 8 
); 
logic [H_WIDTH -1:0] a; 
logic [L_WIDTH -1:0] b; 
logic     ready; 
modport in (input a, input b, output valid); 
modport out(output a, output b, input ready); 
endinterface; 

持っていると言うと、私は私のモジュールのポートとして、まず

module my_module (
logic input clk, 
logic input rst, 
my_if.in my_if 
); 

私は私のiterface Iのパラメータを設定する方法を見ていないことを利用したいです上記の代わりに以下を試しました:

my_if(#.H_WIDTH((64), .L_WIDTH(64)) my_if() 
およびコンパイルされません
my_if(#.H_WIDTH((64), .L_WIDTH(64)).in my_if() 

...

が、どのように私はその後、私のインターフェイスのパラメータを設定するのですか? PLZヘルプ私はたくさんの例を探せましたが、それらはすべて非常に基本的です。

ところでソリューションは、これは検証

答えて

2

あなたはmoduleのパラメータを設定するとまったく同じ方法をinterfaceインスタンスのパラメータを設定するためではないとして合成することがあります。それがインスタンス化されるとき。インターフェイスポートのパラメータを設定できる構文はありません。パラメータ値は、モジュールをインスタンス化するときにポートに接続されたインタフェースインスタンスに基づいています。

これは、合成しているトップレベルモジュールにインターフェイスポートがある場合に問題が発生します。これは、トップレベルモジュールがオーバーライドする必要のあるパラメータを持つ場合と似ています。使用しているツールの合成マニュアルで、パラメータを手動でオーバーライドする方法を確認する必要があります。

3

あなたはほぼそこにいます! (あなたがインターフェイスをインスタンス化)あなたの一番上のモジュールでは、あなただけ変更する必要があります:

my_if(#.H_WIDTH((64), .L_WIDTH(64)) my_if() 

my_if # (.H_WIDTH(64), .L_WIDTH(64)) my_if() 

にそして、あなたが行くように良いことがあります。 IEEE 1800-2012 LRMには、このトピックのセクション(25.8パラメータ化されたインターフェイス)があります。

+0

実際 モジュールmy_module( ロジック入力CLK、 ロジック入力RST、 my_if.in my_if ); は正しい解決策でした – rasmus

1

は、実際にこれが最初の場所でこの モジュールmy_module( ロジック入力CLK、 ロジック入力RST、 my_if位(.H_WIDTH(64)、.L_WIDTH(64

module my_module (
logic input clk, 
logic input rst, 
my_if.in my_if 
); 

正しい方法であっ)))my_if() ); は明らかに法的ではありません。

インターフェイスが別のモジュールに接続されている場合にパラメータが設定されます。 my_if#(.H_WIDTH(64)、.L_WIDTH(64))my_if_()が使用されています。シノプシスDC流中のSO

module top (
input clk, 
input rst 
); 

my_if # (.H_WIDTH(64), .L_WIDTH(64)) temp(); 

my_module inst_1 
(
clk   (clk), 
rst   (rst), 
my_if   (temp_if) 
); 


my_module inst_2 
(
clk   (clk), 
rst   (rst), 
my_if   (temp_if) 
); 
endmodule 
1

ようにインターフェースモジュール偶然にを上書きする簡略SystemVerilogのラッパーを作成することをお勧めします。

あなたはSynopsys社のドキュメントへのアクセス権を持っているかどうかを確認

HDLコンパイラSystemVerilogのユーザーガイド用 ボトムアップ階層推敲

関連する問題