AR# 3924

SYNPLIFY - HDL での FMAP または HMAP (RLOC) のインスタンシエート方法について

説明

キーワード : Verilog、VHDL、Synplify、FMAP、HMAP

重要度 : 標準

概要 :
HDL での FMAP または HMAP (RLOC) のインスタンシエート方法について

ソリューション

1

FMAP または HMAP を HDL でインスタンシエートするには、Xilinx デバイス アーキテクチャに精通している必要があります。また Synplicity でこの機能を詳しく説明している文書はありません。

Synplify では Verilog/VHDL コードで FMAP または HMAP を直接インスタンシエーションすることはサポートされていません。
ただし、Synplicity では xc_map 属性を使用して、FMAP/HMAP を特定の LUT ロジックに指定できます。

xc_map 属性はモジュールまたは VHDL アーキテクチャに配置されます。 属性内容は単一出力を持つ単純な論理式にする必要があります。 xc_map では hmap または fmap という値を指定できます。 XC5200 シリーズでは FMAP は入力を 5 つまで持つことができます。

ただし、これは Virtex ではサポートされていません。 詳細については Synplicity にお問い合わせください。

3.0c1 バージョンではサポートされていますが、完全にテストされていないため、詳細が文書に記載されていません。

2

module fmap_xor4 (z, a, b, c, d); /* synthesis xc_map=fmap */
output z;
input a, b, c, d;

assign z = a ^ b ^ c ^ d;

endmodule

module hmap_xor3 (z, a, b, c); /* synthesis xc_map=hmap */
output z;
input a, b, c;

assign z = a ^ b ^ c;

endmodule

module clb_xor9 (z, a);
output z;
input [8:0] a;

wire z03, z47;

fmap_xor4 x03 /* synthesis xc_uset="SET1" xc_rloc="R0C0.f" */
(z03, a[0], a[1], a[2], a[3]);
fmap_xor4 x47 /* synthesis xc_uset="SET1" xc_rloc="R0C0.g" */
(z47, a[4], a[5], a[6], a[7]);
hmap_xor3 zz /* synthesis xc_uset="SET1" xc_rloc="R0C0.h" */
(z, z03, z47, a[8]);

endmodule

module xor9top (z, a);
output z;
input [8:0] a;

clb_xor9 x (z, a);

endmodule

3

library IEEE;
use IEEE.std_logic_1164.all;

entity fmap_xor4 is
port ( a, b, c, d : in std_logic;
z : out std_logic);
end fmap_xor4;
architecture rtl of fmap_xor4 is
attribute xc_map : STRING;
attribute xc_map of rtl : architecture is "fmap";

begin

z <= a xor b xor c xor d;

end rtl;

library IEEE;
use IEEE.std_logic_1164.all;

entity hmap_xor3 is
port ( a, b, c : in std_logic;
z : out std_logic);
end hmap_xor3;
architecture rtl of hmap_xor3 is
attribute xc_map : STRING;
attribute xc_map of rtl : architecture is "hmap";

begin

z <= a xor b xor c;

end rtl;

library IEEE;
use IEEE.std_logic_1164.all;

entity clb_xor9 is
port ( a : in std_logic_vector(8 downto 0);
z : out std_logic
);
end clb_xor9;

architecture rtl of clb_xor9 is

signal z03, z47 : std_logic;

component hmap_xor3
port ( a : in std_logic;
b : in std_logic;
c : in std_logic;
z : out std_logic
);
end component;

component fmap_xor4
port ( a : in std_logic;
b : in std_logic;
c : in std_logic;
d : in std_logic;
z : out std_logic
);
end component;
attribute xc_uset : string;
attribute xc_rloc : string;
attribute xc_uset of x03 : label is "SET1";
attribute xc_rloc of x03 : label is "R0C0.f";
attribute xc_uset of x47 : label is "SET1";
attribute xc_rloc of x47 : label is "R0C0.g";
attribute xc_uset of zz : label is "SET1";
attribute xc_rloc of zz : label is "R0C0.h";

begin

x03 : fmap_xor4 port map(a(0), a(1), a(2), a(3), z03);
x47 : fmap_xor4 port map(a(4), a(5), a(6), a(7), z47);
zz : hmap_xor3 port map(z03, z47, a(8), z);

end rtl;

library IEEE;
use IEEE.std_logic_1164.all;

entity xor9top is
port ( a : in std_logic_vector(8 downto 0);
z : out std_logic
);
end xor9top;

architecture rtl of xor9top is

component clb_xor9
port ( a : in std_logic_vector (8 downto 0);
z : out std_logic);
end component;

begin

U1: clb_xor9 port map (a, z);

end rtl;
AR# 3924
日付 04/24/2007
ステータス アーカイブ
種類 一般