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# 54111

2012.4 - Vivado HLS - 大型乗算器 : XST の DSP 使用率がレポートされる DSP と一致せず、タイミングが満たされない

説明

7 シリーズをターゲットにした次の Vivado HLS コードはタイミング要件を満たします (4ns 以下)。DSP は 2 つ使用、Vivado 合成を使用しています。

しかし、Virtex-6 などの古いシリーズの FPGA をターゲットにすると、使用される合成ツールは XST で、合成されるネットリスト/インプリメンテーションでは 4 つの DSP が使用され、タイミングが満たされません (5ns を超える)。

何が問題ですか。

#include "mult.h"
void mult(in_a_t in_a, in_b_t in_b, out_p_t out_p[1])
{
out_p[0] = in_a * in_b;
}

withmult.h:-

#include <ap_int.h>
typedef ap_int<18> in_a_t;
typedef ap_int<42> in_b_t;
typedef ap_int<60> out_p_t;
void mult(in_a_t in_a, in_b_t in_b, out_p_t out_p[1]);

ソリューション

XST と Vivado 合成では、生成された RTL から DSP を自動推論する方法が異なるため、この問題が発生します。

XST に対し次の C コードを使用してこの問題は回避できます。

ap_uint<17> x = in_b;
ap_int<42-17> y = in_b >> 17;
out_p[0] = in_a * x + ((in_a * y) << 17);

Vivado HLS でこの手動変更を行うと、シフト 17 はハードウェアで直接サポートされていて効率よくインプリメントされるので、XST のパフォーマンスが向上します。

これは XST での問題で、同じ RTL 等価コードを使用すると XST では同じ 4 つの DSP が生成されます。

この XST の問題が修正される予定はありません。

添付の ZIP ファイルには例が含まれているので、それを使用して試してみてください。

1. PATH にあるザイリンクス ツールに含まれている Vivado HLS コマンド プロンプトで次を入力します。

vivado_hls run_hls_vanilla.tcl

これで Virtex-6 および Virtex-7 FPGA の両方に対しデフォルトのコードが実行されます。run_hls_workaround.tcl を使用して VHLS を再度実行できます。

2. 結果を比較します。エクスポート プロセスの結果はこちらにあります。

PROJ_NAME\SOL_NAME\impl\report\RTL_LANG\TOP_NAME_export.rpt

たとえば次の場所です。

mult_vanilla\solution_v6\impl\report\verilog\mult_export.rpt

このコマンドを実行します。

diff mult_vanilla\solution_v6\impl\report\verilog\mult_export.rpt mult_vanilla\solution_v7\impl\report\verilog\mult_export.rpt -y

(注記 : diff はザイリンクス ツールで使用できるコマンド ライン ツール セットに含まれています。Vivado HLS コマンド プロンプト ツールにはありません。)

diff mult_vanilla\solution_v6\impl\report\verilog\mult_export.rpt mult_vanilla\solution_v7\impl\report\verilog\mult_export.rpt -y

Implementation tool: Xilinx ISE14.4 | Implementation tool: Xilinx Vivado v2012.4
Device target: xc6vsx315tff1759-1| Device target: xc7vx330tffg1761-1
Report date: Mon Feb 11 15:21:38 GMTST 2013 | Report date: Mon Feb 11 15:32:19 GMTST 2013
<

#=== Resource usage === #=== Resource usage ===
SLICE: 15 | SLICE: 19
LUT: 33 | LUT: 13
FF: 83 FF: 83
DSP: 4| DSP: 2
BRAM: 0 BRAM: 0
SRL: 9 | SRL: 0
#=== Final timing === #=== Final timing ===
CP required: 4.000 CP required: 4.000
CP achieved: 5.423 | CP achieved: 2.015
Timing not met| Timing met

diff mult_workaround\solution_v6\impl\report\verilog\mult_export.rpt mult_workaround\solution_v7\impl\report\verilog\mult_export.rpt -y

Implementation tool: Xilinx ISE14.4 | Implementation tool: Xilinx Vivado v2012.4
Device target: xc6vsx315tff1759-1 | Device target: xc7vx330tffg1761-1
Report date: Mon Feb 11 15:21:40 GMTST 2013 | Report date: Mon Feb 11 15:33:00 GMTST 2013
<

#=== Resource usage === #=== Resource usage ===
SLICE: 21 | SLICE: 25
LUT: 48 | LUT: 39
FF: 111 FF: 111
DSP: 2 DSP: 2
BRAM: 0 BRAM: 0
SRL: 0 SRL: 0
#=== Final timing === #=== Final timing ===
CP required: 4.000 CP required: 4.000
CP achieved: 2.116 | CP achieved: 2.222
Timing met Timing met

添付ファイル

関連添付ファイル

タイトル サイズ File Type
AR54111_VHLS_mult_XST_workaround.zip 1 KB ZIP
AR# 54111
作成日 02/04/2013
最終更新日 04/01/2013
ステータス アクティブ
タイプ 既知の問題
ツール
  • Vivado