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

6.3i XST - Virtex-4 の乗減算ファンクションで間違ったロジックが生成される

説明

キーワード : DSP48, MACC, MADD, wrong, logic, 不正, ロジック

重要度 : 重要

概要 :
次の HDL 文が使用されると、XST で DSP48 が正しくマップされません。

:
P <= (A*B)-C;
:

これは DSP48 に配置できません。 上記の文のバリエーションでも、ロジックは正しく推論されます。

ソリューション

1

この問題は、use_dsp オプションを no に設定すると回避できます。 この設定は Project Navigator でグローバルに設定できるほか、HDL コードから特定の信号にのみ設定することもできます。

Project Navigator で次を実行します。

1. [Synthesize - XST] プロセスを右クリックして [Properties] をクリックします。
2. [HDL Options] タブをクリックします。
3. [Use DSP48] を [No] に変更します。
4. [OK] をクリックします。

2

HDL コードでこのファンクションを 2 つに分割し、KEEP 制約を付けて XST で この 2 つに分けたファンクションが DSP48 スライスにマージされないようにします。 乗算ファンクションは DSP48 スライスにプッシュされ、減算ファンクションはスライス ロジックを使用します。

Verilog

module dsp(a,b,c,prod);
input [7:0] a,b,c;
output [15:0] prod;

//Verilog 2001 attribute passing
(* KEEP = "true" *)
wire [15:0] temp;

//Verilog 95 meta comment
//synthesis attribute KEEP of temp "true"
assign temp = (a * b);
assign prod = temp - c;

endmodule


VHDL

:
:
attribute KEEP: string;
attribute KEEP of temp : signal is "true";
:

begin

temp <= a * b;
prod <= temp - c;
:
:

end architecture;
AR# 18498
日付 07/18/2007
ステータス アーカイブ
種類 一般
このページをブックマークに追加