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

FPGA Express 3.x - KEEP 属性を使用した内部ネット名の維持


キーワード : preserve, CPLD, net, signal, internal, KEEP, attribute, 維持, ネット, 信号, 内部, 属性

重要度 : 標準

概要 : HDL で信号名/ワイヤ名を維持し、インプリメンテーション ツールでネットに制約を追加する方法について


FPGA Express を使用してネットを維持するには、ネットの真ん中で BUF プリミティブをインスタンシエートし、BUF に FPGA Express Constraints Editor で dont_touch 属性を設定します。次に、BUF に入力されるネットおよび BUF から出力されるネットに KEEP 制約を設定します。

ISE を使用した dont_touch 属性の設定方法 :

1. Project Navigator のプロセス ウィンドウで [Synthesize] を展開します。 2. [Synthesize] の階層の下にある [Create Functional Structure] を展開します。 3. [Edit Constraints] をダブルクリックします。 4. FPGA Express Constraints Editor ウィンドウで [Modules] タブをクリックします。 5. インスタンシエートした BUF を選択し、[Dont Touch] の列で [True] を選択します。 6. [OK] をクリックします。

メモ : FPGA Express をスタンドアロンで使用する場合、[Create Implementation] ダイアログ ボックスの [Skip constraint entry] チェック ボックスをオフにします。 上記の手順 4 〜 6 に従います。

ISE を使用した KEEP 制約の設定方法 :

1. Project Navigator を起動し、[ファイル] → [開く] をクリックします。 2. ファイル project_name.ucf を選択します。 3. 次の 2 つの制約を入力します。

NET buf_input_net_name KEEP; NET buf_output_net_name KEEP;

BUF プリミティブをインスタンシエートする VHDL コード :

library ieee; use ieee.std_logic_1164.all;

entity ff is port (a : in std_logic; b : in std_logic; clk : in std_logic; q : out std_logic); end entity;

architecture ff_arch of ff is

signal d, d_int : std_logic;

component BUF is port (I : in std_logic; O : out std_logic); end component;


process (clk) is begin

d <= a AND b;

if clk'event and clk = '1' then q <= d_int; end if; end process;

u0 : BUF port map (d, d_int);

end architecture;

Verilog code for instantiating a BUF primitive:

module ff (a, b, clk, q);

input a, b, clk; output q;

wire d, d_int; reg q;

assign d = a & b;

always @(posedge clk) q <= d_int;

BUF u0 (.I(d), .O(d_int));

AR# 9780
日付 08/02/2010
ステータス アーカイブ
種類 一般