AR# 8055

EXEMPLAR, SYNPLIFY - HDL (VHDL/Verilog) での LOC/RLOC ロジックの使用

説明

キーワード : Synplicity, Synplify, Virtex, VHDL, Verilog, RLOC

インスタンシエートされたロジックを CLB に LOC/RLOC を使ってロックする方法を教えてください。 (VHDL および Verilog)

Virtex デザインの Verilog および VHDL のサンプル コードは次のとおりです。ほかのデバイスにも同様のコードが使用できます。

詳細は、ザイリンクスの『制約ガイド』にある関連制約のセクションを参照してください。このガイドは次のページから参照できます。
http://www.xilinx.co.jp/support/software_manuals.htm

メモ :
- Synplify 5.2.2a および Exemplar 1999.1i でテスト済みです。
- I/O ピンのロック方法については、(Xilinx Answer 2379) を参照してください。

ソリューション

1

Synplify 属性を使った Verilog RLOC 例

Exemplar の場合、属性を次のように置き換えます。
examplar attribute <instance_name> rloc <location>

例 :
これを
/*synthesis rloc="r1c0.s0" */
次のものを置き換えます。
/*exemplar attribute u0 rloc r1c0.s0 */
-----------------------------------------------------------

module flops (di, ce, clk, qo, rst);
input di;
input ce;
input clk;
output qo;
input rst;

wire q0, q1;


FDCE u0(.D(di),
.CE(ce),
.C (clk),
.CLR (rst),
.Q (q0))/*synthesis rloc="r0c0.s0" */;

FDCE u1 (.D (q0),
.CE(ce),
.C (clk),
.CLR(rst),
.Q (q1))/* synthesis rloc="r0c0.s1" */;

FDCE u2(.D (q1),
.CE(ce),
.C (clk),
.CLR (rst),
.Q (qo)) /* synthesis rloc="r1c0.s0" */;

endmodule

2

VHDL RLOC 例
-- Exemplar および Synplify --

library IEEE;
use IEEE.std_logic_1164.all;

entity flops is port(
di: in std_logic;
ce : in std_logic;
clk: in std_logic;
qo: out std_logic;
rst: in std_logic);

end flops;

architecture inst of flops is
component FDCE port( D: in std_logic;
CE: in std_logic;
C: in std_logic;
CLR: in std_logic;
Q: out std_logic);
end component;

attribute RLOC: string;
attribute RLOC of U0: label is "R0C0.S0";
attribute RLOC of U1: label is "R0C1.S0";
attribute RLOC of U2: label is "R1C1.S0";
signal q0,q1 : std_logic;


begin
U0 : FDCE port map(D => di,
CE=> ce,
C => clk,
CLR => rst,
Q => q0);

U1: FDCE port map(D => q0,
CE=> ce,
C => clk,
CLR => rst,
Q => q1);

U2: FDCE port map(D => q1,
CE=> ce,
C => clk,
CLR => rst,
Q => qo);

end inst;

3

VHDL LOC 例
-- Exemplar および Synplify --

library IEEE;
use IEEE.std_logic_1164.all;

entity flops is port(
di: in std_logic;
ce : in std_logic;
clk: in std_logic;
qo: out std_logic;
rst: in std_logic);

end flops;

architecture inst of flops is
component FDCE port( D: in std_logic;
CE: in std_logic;
C: in std_logic;
CLR: in std_logic;
Q: out std_logic);
end component;

attribute LOC: string;
attribute LOC of U0: label is "CLB_R2C3.S0";
attribute LOC of U1: label is "CLB_R2C4.S0";
attribute LOC of U2: label is "CLB_R6C8.S0";
signal q0,q1 : std_logic;


begin
U0 : FDCE port map(D => di,
CE=> ce,
C => clk,
CLR => rst,
Q => q0);

U1: FDCE port map(D => q0,
CE=> ce,
C => clk,
CLR => rst,
Q => q1);

U2: FDCE port map(D => q1,
CE=> ce,
C => clk,
CLR => rst,
Q => qo);

end inst;

4

Synplify 属性を使った Verilog LOC 例

Exemplar の場合は、属性を次のように置き換えます。
examplar attribute <instance_name> loc <location>

例 :
これを
/*synthesis rloc="r1c0.s0" */
次のものに置き換えます。
/*exemplar attribute u0 rloc r1c0.s0 */
----------------------------------------------------------------

module flops (di, ce, clk, qo, rst);
input di;
input ce;
input clk;
output qo;
input rst;

wire q0, q1;


FDCE u0(.D(di),
.CE(ce),
.C (clk),
.CLR (rst),
.Q (q0))/*synthesis loc="CLB_r2c3.s0" */;

FDCE u1 (.D (q0),
.CE(ce),
.C (clk),
.CLR(rst),
.Q (q1))/* synthesis loc="CLB_r4c5.s1" */;

FDCE u2(.D (q1),
.CE(ce),
.C (clk),
.CLR (rst),
.Q (qo)) /* synthesis loc="CLB_r6c2.s0" */;

endmodule
AR# 8055
日付 04/24/2007
ステータス アーカイブ
種類 一般