AR# 7595

8.2i CPLD CoolRunnerXPLA3/-II、XC9500 ファミリ - 遅延バッファの生成方法

説明

キーワード : 8.1i, 7.1i, 6.3i, 6.2i, 6.1i, 5.2i, 5.1i, 4.1i, 4.2i, XST, 9500XL, 9500XV, line, ライン

1 つの信号にロジック遅延レベルを追加する方法を教えてください。

ソリューション

1

ロジック遅延のレベルは、デバイスにより異なります。また、すべての CMOS デバイスは低い温度および高い電圧の場合はスピードが速くなるため、遅延はつねに一定であるとは限りません。

1 つの信号にロジック遅延レベルを追加するには、BUF コンポーネントをインスタンシエートし、入力に KEEP 属性を設定します。これは余剰ロジックであるため、合成ツールおよび CPLD フィッタは最適化をしません。KEEP 属性はソース コード (VHDL/Verilog/回路図) で設定しないと、バッファが合成で削除されてしまいます。

遅延が付いた信号は組み合わせ信号なので、インスタンシエートされた最初のバッファでは余分な遅延が追加されず、マクロセルからのパスを明確に記述するだけです。バッファを追加すると、遅延が増加します。
1 遅延バッファと同等の遅延を作成するには、2 倍のバッファが必要です。
2 遅延バッファと同等の遅延を作成するには、3 倍のバッファが必要です。


VHDL

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

library UNISIM;
use UNISIM.VComponents.all;

entity top is
Port ( din : in std_logic;
clk : in std_logic;
dout: out std_logic);
end top;

architecture behavioral of top is

signal dout_node : std_logic ;--define the output-signal of the flip-flop

attribute KEEP : string;
attribute KEEP of dout_node : signal is "TRUE"; --keep buffer from being optimized out

component buf
port( i : in std_logic; o : out std_logic);
end component;

begin

my_buf : buf
port map (
i => dout_node,
o => dout);

process (din, clk)
begin
if (clk'event) and (clk='1') then
dout_node <= din;
end if;
end process;

end behavioral;

2

Verilog

module top(input_a,clk,comb);
input input_a;
input clk;
output comb;

reg input_a_reg;

//synthesis attribute keep of input_a_reg is "true"
BUF mybuf (.I(input_a_reg),.O(comb));

always @(posedge clk)
begin
input_a_reg <= input_a;
end

endmodule

3

ABEL (ABEL XST Verilog フローを使用してください)

MODULE top
clk PIN;
din PIN;
dout PIN;

delay node istype 'keep';

BUF external (I -> O);
U1 functional_block BUF;

EQUATIONS

U1.I = din;
delay = U1.O;

dout := delay;
dout.clk = clk;

END

4

回路図 (XST VHDL フロー)

次の手順に従います。
1. BUF コンポーネントを挿入します。
2. 出力ネットをダブルクリックして [Object Properties] ダイアログ ボックスを表示します。[New] をクリックします。
3. [Attribute Name] のプルダウン メニューから [KEEP] を選択します。その他のフィールドは空欄にして、[OK] をクリックします。
4. 新しく作成した KEEP 属性を選択し、[Edit Traits] ボタンをクリックします。カテゴリには、[VHDL] を選択します。
5. [Write this Attribute] ボタンをオンにすると、下にあるチェックボックスが選択できるようになります。[In an attribute declaration statement] および [In an attribute statement] をオンにします。
6. [OK] をクリックし、[Object Properties] メニューに戻ります。再び [OK] をクリックし、回路図の表示に戻ります。

各 BUF コンポーネントにより、フィッタがロジック遅延のレベルを増加します。
AR# 7595
日付 07/25/2008
ステータス アクティブ
種類 一般