インテル® Quartus® Prime プロ・エディション ユーザーガイド: サードパーティー合成

ID 683122
日付 9/24/2018
Public
ドキュメント目次

2.10.3.1.3. 信号レベル属性

次のVerilog HDLコードに示すsyn_multstyle属性を使用して、個々の乗算器の実装を制御することができます。(ここで<signal_name>は信号の名前です。)
<signal_name> /* synthesis syn_multstyle = "logic" */;

syn_multstyle属性はワイヤーのみに適用され、レジスターには適用できません。

表 7.  SynplifyソフトウェアのDSPブロックの属性設定
属性名 説明
syn_multstyle lpm_mult LPMファンクションが推測され、乗算器がDSPブロックに実装されます。
logic LPMファンクションは推測されず、乗算器はSynplifyソフトウェアによってLEとして実装されます。
block_mult DSP IPコアが推測され、乗算器はDSPブロックの(サポートされている)デバイスのプリミティブに直接マップされます。

Verilog HDLコードのDSPブロック推測を制御する信号属性

module mult(a,b,c,r,en);
    input [7:0] a,b;
    output [15:0] r;
    input [15:0] c;
    input en;
    wire [15:0] temp /* synthesis syn_multstyle="logic" */;

    assign temp = a*b;
    assign r = en ? temp : c;
endmodule

VHDLコードのDSPブロック推測を制御する信号属性

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity onereg is port (
    r : out std_logic_vector (15 downto 0);
    en : in std_logic;
    a : in std_logic_vector (7 downto 0);
    b : in std_logic_vector (7 downto 0);
    c : in std_logic_vector (15 downto 0);
    );
end onereg;

architecture beh of onereg is
signal temp : std_logic_vector (15 downto 0);
attribute syn_multstyle : string;
attribute syn_multstyle of temp : signal is "logic";

begin
    temp <= a * b;
    r <= temp when en='1' else c;
end beh;