AR# 2379

SYNPLIFY - XC_LOC (Verilog/VHDL) を使って HDL で I/O ピンを固定する方法

説明

キーワード : Verilog, VHDL, Synplify, I/O pin, Synplicity, LOC, ピン, 固定

重要度 : 標準

概要 :
Synplicity の Synplyfy を使用して HDL で I/O ピンを固定する方法を教えてください。

ソリューション

1

メモ :
Synplify/Synplify Pro では、LOC 制約は NCF ファイルに書き込まれます。 ザイリンクスのインプリメンテーション プロジェクト ディレクトリにこの NCF ファイルを必ず含め、正しいアノテーションを行ってください。

メモ 2 : Synplify の XC_LOC は EDIF ネットリストに書き込まれます。 XC_LOC は Synplify 固有の制約であるため、インプリメンテーション ツールで無視されても問題はありません。

LOC/RLOC を使って CLB にインスタンシエートされたザイリンクス プリミティブの例に関しては (ザイリンクス アンサー #8055) を参照してください。

2

I/O ロケーションを HDL に割り当てる (VHDL コード)

library IEEE;
use IEEE.std_logic_1164.all;

entity iob_loc_ex is
port (CLK : in STD_LOGIC;
A, B : in STD_LOGIC_VECTOR (3 downto 0);
O : out STD_LOGIC_VECTOR (3 downto 0));

attribute xc_loc : string;
attribute xc_loc of CLK : signal is "P13";
attribute xc_loc of A : signal is "P19,P20,P23,P24";
attribute xc_loc of B : signal is "P25,P26,P27,P28";
attribute xc_loc of O : signal is "P48,P49,P50,P51";
end iob_loc_ex;

architecture xilinx of iob_loc_ex is

signal Q : STD_LOGIC_VECTOR (3 downto 0);

begin
U0: process (CLK)
begin
if (CLK'event and CLK='1') then
Q <= A;
end if;
end process;

-- Insert user's application here
O <= Q and B;

end xilinx;

3

I/O ロケーションを HDL に割り当てる (Verilor コード)

module iob_loc_ex (CLK, A, B, O);
input CLK /* synthesis xc_loc="P13" */;
input [3:0] A /* synthesis xc_loc="P19,P20,P23,P24" */;
input [3:0] B /* synthesis xc_loc="P25,P26,P27,P28" */;
output [3:0] O /* synthesis xc_loc="P48,P49,P50,P51" */;

reg [3:0] Q;

always @ (posedge CLK)
begin
Q <= A;
end

// token logic
assign O = Q & B;

endmodule

4

SDC
ベンダー固有の制約は SDC ファイルに渡されます。

define_attribute CLK xc_loc "P13"
define_attribute {A[3:0]} xc_loc "P19,P20,P23,P24"
define_attribute {B[3:0]} xc_loc "P25,P26,P27,P28"
define_attribute {O[3:0]} xc_loc "P48,P49,P50,P51"
AR# 2379
日付 04/24/2007
ステータス アーカイブ
種類 一般