AR# 12948

|

7.0 Synplify - インスタンシエートされた BUFGMUX に関した問題

説明

キーワード : Virtex, Virtex-II, Virtex2, BUFG, BUFGP, BUFGCE, BUFGMUX

重要度 : 標準

概要 :
Synplify 7.0 では、インスタンシエートされた BUFGCE がクロック バッファとして認識されません。したがって、パッドに対して IBUFG ではなく BUFGP が推論されます。

BUFGP は、IBUG + BUFGMUX (BUFG としてコンフィギュレーション) に拡張されるマクロで、2 つの BUFGMUX になります。

ソリューション

1

VHDL の例 :

Synplify を使用した BUFGMUX のインスタンシエーション :


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;

entity bufgmux_instantiate is
port ( clk_pad : in std_logic;
clk_debug_pad : in std_logic;
normal_mode : in std_logic;
a : in std_logic_vector(15 downto 0);
b : in std_logic_vector(15 downto 0);
p : out std_logic_vector(31 downto 0) );

attribute xc_padtype : string;
attribute xc_padtype of clk_pad: signal is "IBUFG";
attribute xc_padtype of clk_debug_pad: signal is "IBUFG";
-- この属性は、外部クロック パッド信号のタイプを BUFGP (Synplify のデフォルトで推論) ではなく、IBUFG にします。


end entity bufgmux_instantiate;

architecture structural of bufgmux_instantiate is

signal clk: std_logic;

component BUFGMUX
port ( O : out std_logic;
I0 : in std_logic;
I1 : in std_logic;
S : in std_logic );
end component;

begin
U1: BUFGMUX
port map(
O => clk,
I0 => clk_debug_pad,
I1 => clk_pad,
S => normal_mode);

-- その他のコード
process (clk)
begin
if rising_edge(clk) then
p <= a * b;
end if;
end process;

end structural;

2

Verilog の例 :

Synplify を使用した BUFGMUX のインスタンシエーション :


module bufgmux_instantiate (clk_pad, clk_debug_pad, normal_mode, a, b, p);

input clk_pad /* synthesis xc_padtype = "IBUFG" */;
input clk_debug_pad /* synthesis xc_padtype = "IBUFG" */;
input normal_model;
input a;
input b;
output p;

BUFGMUX U1 (.O(clk), .I0(clk_debug_pad), I1(clk_pad), .S(normal_mode));

always @(posedge clk) p <= a * b;

endmodule
AR# 12948
日付 04/23/2007
ステータス アーカイブ
種類 一般
People Also Viewed