UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 57975

Vivado 合成 - SystemVerilog のパックされていないアレイを使用するとインスタンスのアレイに問題が発生する

説明

パックされていないアレイをインスタンスのアレイに渡すとき問題が発生します。

Vivado 合成は次のようなコードに対しエラー メッセージを出力します。

output [7:0] q;
wire [7:0] tmp1 [3:0];
wire [7:0] tmp2 [3:0];
test inst[3:0]
        (   tmp1,
            tmp2
        );
assign q = tmp2[0] | tmp2[1] | tmp2[2] | tmp2[3];

上記のサンプル コードでは、パックされていないアレイ tmp2 がサブモジュール test の出力ポート b にマップされていますが、このポートは 8 ビット幅です。

ツールがこのパックされていないアレイ tmp2 をインスタンスのアレイを介して接続しようとすると、エラー メッセージが表示されます。

ERROR: [Synth 8-659] type mismatch in output port connection: bit [7:0]A[3:0] vs. bit [31:0]B [/../xxxx.v:15]
ERROR: [Synth 8-285] failed synthesizing module 'top' [/../xxxx.v:1]

ソリューション

この問題を回避するにはいくつかオプションがあります。

オプション 1:

パックされていないアレイをパックされたアレイ tmp2に変更し、それをインスタンスのアレイに渡します。 

上記のコードは次のように変更になります。

output [7:0] q;
wire [7:0] tmp1 [3:0];
wire [31:0] tmp2;

test inst[3:0]
        (   tmp1,
            tmp2
        );
assign q = tmp2[7:0] | tmp2[15:8] | tmp2[23:16] | tmp2[31:24];  

オプション 2:

パックされていないアレイを保持し、インスタンスのアレイを使用せずに、アレイ ビット スライスを表すサブモジュールをインスタンシエートします。

例: 上記のケースだと、各アレイ ビット スライス (0、1、2、3) 用にサブモジュール test を 4 回インスタンシエートし、apt アレイ ビット スライスを tmp1 および tmp2 に渡します (0、1、2、3)。

AR# 57975
日付 03/06/2018
ステータス アクティブ
種類 既知の問題
ツール
  • Vivado Design Suite
このページをブックマークに追加