...

Report Template

by user

on
Category: Documents
11

views

Report

Comments

Transcript

Report Template
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
LatticeECP3 ファミリ
クロック・アーキテクチャと
設計ガイドライン
ドキュメント番号 JDG08_001
1
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
目次
1
はじめに ··················································· 4
2
クロック・アーキテクチャ ··························· 5
2.1
2.2
2.3
2.4
3
Primary クロック ................................................................ 5
2.1.1
Primary クロック本数と Quadrant 分割 ........................................ 5
2.1.2
PURE ラインと DCS ライン ......................................................... 6
2.1.3
Primary クロックの Quadrant 分割 ............................................... 6
2.1.4
クロック選択回路に接続できるクロックソース............................ 7
2.1.5
DCS 機能 ...................................................................................... 8
Secondary クロック........................................................... 10
2.2.1
Secondary クロックの概要 ......................................................... 10
2.2.2
クロック選択回路に接続できるクロックソース.......................... 11
エッジクロック .................................................................. 11
2.3.1
エッジクロックの概要 ................................................................ 11
2.3.2
クロック選択回路に接続できるクロックソース.......................... 13
クロックソース .................................................................. 14
2.4.1
クロック入力ピン ....................................................................... 14
2.4.2
PLL ............................................................................................. 14
2.4.3
DLL ............................................................................................. 16
2.4.4
CLKDIV マクロ(クロック分周器) ................................................ 16
2.4.5
CIB .............................................................................................. 17
2.4.6
SERDES/PCS マクロ ................................................................. 17
クロック・デザインフロー ························· 19
3.1
3.2
HDL ソースの記述および論理合成 .................................... 19
3.1.1
グローバルクロック・バッファのインスタンス記述 .................. 19
3.1.2
DCS のインスタンス記述 ........................................................... 19
3.1.3
Gated クロック ........................................................................... 21
3.1.4
分周クロック .............................................................................. 21
3.1.5
論理合成時のタイミング制約 ...................................................... 22
使用するクロック配線の指定 ............................................. 23
3.2.1
Spreadsheet View での設定方法 ................................................. 23
3.2.2
制約ファイルでの設定方法 ......................................................... 26
ドキュメント番号 JDG08_001
2
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
4
Ver1.0
クロック設計のガイドライン ······················ 28
4.1
4.2
4.3
クロック入力ピンアサインのガイドライン ........................ 28
4.1.1
I/O タイミングの基準クロック .................................................... 28
4.1.2
I/O タイミングの制約が無いクロック ......................................... 28
クロック出力の生成 ........................................................... 28
内部クロックの設計ガイドライン ...................................... 29
4.3.1
4.4
PLL を使用する場合の設計ガイドライン .......................... 33
4.4.1
4.5
4.6
4.7
5
位相シフト機能を使用する場合のクロックアサイン .................. 33
SERDES を使用する場合のクロック設計ガイドライン .... 33
4.5.1
受信側クロックのクロック配線使用 ........................................... 33
4.5.2
受信側クロックの振る舞いと設計の注意 .................................... 35
4.5.3
送信側クロックのクロック配線使用 ........................................... 36
DCS の使用のガイドライン ............................................... 37
4.6.1
クロックリソースの検討 ............................................................. 37
4.6.2
DCS カスケード接続................................................................... 37
クロック専用配線を使用しない場合のガイドライン.......... 38
その他のクロック関連事項について ············· 41
5.1
6
Quadrant 分割のガイドライン .................................................... 29
周波数拡散クロックのサポート ......................................... 41
改訂履歴 ················································· 42
ドキュメント番号 JDG08_001
3
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
1
Ver1.0
はじめに
本ドキュメントは、LatticeECP3 ファミリのクロックツリー設計に焦点を当てて、要点・諸要件をま
とめたものです。
本ドキュメントは LatticeECP3 のデータシート(DS)とテクニカルノート(TN)をベースとし、必要に
応じてその他関連 TN・資料を参照し、かつ独自に内容を拡充したものです。それらについては随時、
言及するものとしますが、併せてご一読されることを勧めます。
なお、本ドキュメントは Lattice ECP3 のクロック専用配線を最適かつ有効に使用するためのガイド
ラインです。
ドキュメント番号 JDG08_001
4
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
2
Ver1.0
クロック・アーキテクチャ
この章では LatticeECP3 のクロック・アーキテクチャについて理解するため、クロック配線および
それに関連する回路の構成等について説明します。
LatticeECP3 ファミリには、
配線済みの低スキューのクロック配線が 3 種類あります。1 つ目はロジッ
ク領域用のクロック専用配線 Primary クロック、2 つ目は同じくロジック領域用でクロックイネーブ
ルやリセットでも使用できる Secondary クロック配線、3 つ目は I/O レジスタ(DDR のみ)用の低ス
キュークロック専用配線 Edge クロックです。2.1、2.2、2.3 項で各クロックのアーキテクチャについ
て説明します。
2.1 Primary クロック
この項では、Primary クロックの回路的な構成について説明します。クロック選択機能や配線接続に
ついての説明もありますが、特に記述の無い限り物理的な構成について説明しているだけで、ユー
ザーが指定する必要性を述べているのではありません。ほとんどの処理はツールが自動で行います。
2.1.1 Primary クロック本数と Quadrant 分割
デバイスの中央付近に Primary クロック用のクロックバッファとクロック信号を選択するクロック
選択回路があります。Primary クロックは、デバイスを4分割した Quadrant という領域ごとに 8 本
ずつ配線されており、クロック入力ピンから入力されたクロックや PLL 出力等は、全てこのクロッ
ク選択回路を介して各 Quadrant の Primary クロックに接続されます(図 2-1)。
図 2-1 Primary クロックと選択回路
クロック選択回路には数十本のクロック入力ポートが有り、その中から各 Quadrant の Primary ク
ロック配線に接続するクロックが選択されます。
ドキュメント番号 JDG08_001
5
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
2.1.2 PURE ラインと DCS ライン
8 本の Primary クロック配線の内、6 本はクロック選択回路の出力が直接に接続される[PURE]ライ
ン、残り 2 本はクロック選択回路の出力がさらに DCS というセレクタを介して接続される DCS ライ
ンです。
図 2-2 DCS 機能を使用しない場合の DCS ラインの接続
DCS は Dynamic Clock Select の略で、ハザードを発生させずにクロックを切り替えたり Gated ク
ロックを生成したりといった場合に使用するモジュールです。動作の詳細や使用方法は 2.1.5 項に後
述します(図 2-3 は動作の一例)
図 2-3 DCS の動作の一例
DCS のクロック選択機能を使用しない場合、DCS の選択信号入力の値がツールによって固定され、
単なるバッファとして機能します。 デザインツール上では PURE ライン/DCS ラインのどちらを使
用するか選択することが出来ます。
2.1.3 Primary クロックの Quadrant 分割
クロック選択回路に入力されたクロック入力信号の1つを、全ての Quadrant へ接続すると、チップ
全体にクロックが分配されるグローバルクロックとして使用できます(図 2-4)。
図 2-4 グローバルクロック構成の例
ドキュメント番号 JDG08_001
6
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
デザインツールはデフォルトで Primary クロックをグローバルクロックとして使用します。このため
デフォルト設定では Primary クロックを使用できるクロックは8本までとなります。
デザインツール上で、
使用する Quadrant の制限(分割)を行うと 8 本以上のクロックを Primary クロッ
クに接続することも出来ます(図 2-5)。
図 2-5 [Quadrant]クロックの例
以降では特定の Quadrant だけに使用されるクロックを Quadrant クロックと呼びます([グローバル
クロック] は「全ての Quadrant で使用される Quadrant クロック」の別名)。
2.1.4 クロック選択回路に接続できるクロックソース
クロック選択回路には、以下の信号が Primary クロックのクロックソースとして接続できます。
クロックソース
クロックソースの本数
-------------------------------------------------------------------------------------------------------------------全てのクロック入力ピン
:6
全ての PLL 出力
: PLL 数× 4(PLL 出力数)
全ての DLL 出力
: 2(DLL 数) × 2(DLL 出力数)
全ての CLKDIV(クロックディバイダ)出力
: 2(CLKDIV 数) × 4(CLKIV 出力数)
全ての PCS の Tx 側クロック
: PCS 数 × 2(PCS Tx クロック出力数)
CIB(Primary 用)
: 16
VCC
:1
クロック入力ピンは各 I/O バンクに1本ずつ用意されており、デバイス全体では 6 本あります。
PLL 出力は、デバイスによって搭載されている PLL 数が異なるため本数は固定ではありませんが、
全ての PLL 出力を Primary クロックのクロックソースとして選択することが出来ます。
DLL はデバイスに各 2 個搭載されており、4本(2 DLL×2 出力)をクロックソースとして選択できま
す。
CLKDIV はクロック分周のハードマクロです。この分周回路は4出力でデバイスに2つ搭載されてい
ます。このため8本がクロックソースとして選択できます。
ドキュメント番号 JDG08_001
7
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
PCS は LatticeECP3 ファミリの SERDES モジュールです。このモジュールからは送信側の回路で
使用される tx_full_clk_ch0 と tx_half_clk_ch0(チャネル 0 のクロック)という2本が Primary クロッ
クとして選択できます。PCS 数はデバイスによって変わります。送信側の他のチャネルのクロックと
受信側回路のクロックは後述の CIB を介して General Routing としてクロック選択回路に入力され
ます。
以上のクロックソースからクロック選択回路までは、基本的に最短経路の専用配線で接続されていま
す。このため配置配線を行う際の条件が変わってもクロックソースからレジスタまでの遅延は同じに
なります。
CIB は、直接専用配線で接続されていないクロックソースからクロック選択回路までを接続するため
に経由する回路です。クロック入力ピン(PCLKT*_*ピン)以外のピンからのクロック入力や FPGA 内
のレジスタを使用して生成した分周クロック等、特定リソース以外からのクロック入力がこれに相当
します。Primary クロック用の[CIB]はデバイスに 16 個実装されています。
CIB からクロック選択回路までは専用配線で接続されていますが、クロックソースから CIB までの
配線は専用配線ではないため、配置配線の条件が変わればクロックソースからレジスタまでの遅延も
変わってしまいます。
図 2-6 CIB を使用した場合のクロック配線
2.1.5 DCS 機能
DCS は[Dynamic Clock Select]の略で、ハザードのないクロック切り替えや Gated クロックを生成す
る際に使用するハードマクロです。この項では DCS の機能の説明のみを行い、実装の方法について
は 3.1.2 項で説明します。
DCS には8つのモードがあり、このうち 2 つはクロック切り替えを行うモード、4 つは Gated クロッ
クを生成するモード、2つはバッファとして使用するモードです。
DCS のクロック切り替え機能および Gated クロック機能を使用するには HDL ソース内にインスタ
ンスする必要があります。インスタンスされていない場合に単なるバッファとして使用するモードに
なります。
ドキュメント番号 JDG08_001
8
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
DCS モード
POS
NEG
HIGH_LOW
HIGH_HIGH
LOW_HIGH
LOW_LOW
表 2-1 DCS モード設定と動作
出力クロック
用途
SEL=0
SEL=1
クロック切り替え
CLK0
CLK1
CLK0
CLK1
0 固定
Gated クロック生成
CLK1
1 固定
CLK1
1 固定
CLK0
0 固定
CLK0
a) POS モード
DCS のクロック切り替えモードの1つです。DCS 内で切り替え信号を両クロックの立ち上がり
エッジを基準にして切り替えを行います(図 2-7(a))。
b) NEG モード
DCS のクロック切り替えモードの1つです。DCS 内で切り替え信号を両クロックの立ち下がり
エッジを基準にして切り替えを行います(図 2-7(b))。
図 2-7 DCS のクロック切り替え
c) HIGH_LOW モード
DCS の Gated クロック生成モードの1つです。SEL 入力が High レベルの間は CLK1 入力が、
SEL 入力が Low の間は Low レベルが DCSOUT から出力されます(図 2-8(a))。
d) LOW_LOW モード
DCS の Gated クロック生成モードの1つです。SEL 入力が Low レベルの間は CLK0 入力が、
SEL 入力が High の間は Low レベルが DCSOUT から出力されます(図 2-8(b))。
e) HIGH_HIGH モード
DCS の Gated クロック生成モードの1つです。SEL 入力が High レベルの間は CLK1 入力が、
SEL 入力が Low の間は High レベルが DCSOUT から出力されます(図 2-8(c))。
ドキュメント番号 JDG08_001
9
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
f)
Ver1.0
LOW_HIGH モード
DCS の Gated クロック生成モードの1つです。SEL 入力が Low レベルの間は CLK0 入力が、
SEL 入力が High の間は High レベルが DCSOUT から出力されます(図 2-8(d))。
図 2-8 DCS Gated クロック生成
2.2 Secondary クロック
この項では、Secondary クロック配線の構成について説明します。クロック選択機能や配線接続につ
いての説明もありますが、特に記述の無い限り物理的な構成について説明しているだけで、ユーザー
が指定する必要性を述べているのではありません。処理はツールが自動で行います。
2.2.1 Secondary クロックの概要
Secondary クロック配線はクロックだけでなく、クロックイネーブル信号やリセット信号もアサイン
される配線です。また、一部は DCS の選択信号に使用されることもあります。
Secondary クロック配線は Quadrant ごとに 8 本あります。 しかし基本的には Quadrant ごとに個
別のクロックソースを選択できず、8 本のグローバル配線として機能します。この8本の内、クロッ
クとして使用できるのは最大で 7 本です(クロックイネーブルやリセットで使用していなくても7本
までしか使用できません)。
以降の文中の Secondary クロックは、特に断り書きのある場合を除いてユーザーが任意に信号をアサ
インできる 8 本を指すこととします。
ドキュメント番号 JDG08_001
10
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
図 2-9 Secondary クロックと選択回路
2.2.2 クロック選択回路に接続できるクロックソース
クロック選択回路には、以下の信号が Secondary クロックのクロックソースとして接続できます。
クロックソース
クロックソースの本数
-------------------------------------------------------------------------------------------------------------------全てのクロック入力ピン
:6
CIB(Secondary 用)
: 16
クロック入力ピンは各 I/O バンクに1本ずつ用意されており、デバイス全体では 6 本あります。
CIB は、直接専用配線で接続されていないクロックソースからクロック選択回路までを接続するため
に経由する回路です。クロック入力ピン(PCLKT*_*ピン)以外のピンからのクロック入力や FPGA 内
のレジスタを使用して生成した分周クロック等、特定リソース以外からのクロック入力がこれに相当
します。Secondary クロック用の CIB はデバイスに 16 個実装されています。
2.3 エッジクロック
この項ではエッジクロック配線の構成について説明します。クロック選択機能や配線接続についての
説明もありますが、特に記述の無い限り物理的な構成について説明しているだけで、ユーザーが指定
する必要性を述べているのではありません。処理はツールが自動で行います。
2.3.1 エッジクロックの概要
エッジクロックは I/O レジスタ(DDR のみ)に接続されるクロックです。デバイスの辺ごとに2本ず
つ配線されており、Primary/Secondary よりも低スキューを実現しています。
ドキュメント番号 JDG08_001
11
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
図 2-10 エッジクロックと選択回路
各辺にはエッジクロック選択回路があり、個別にクロックソースを選択することが出来ます。
入力 DDR レジスタにはエッジクロックから直接クロックとして供給されます。出力 DDR レジスタ
には DQSBUFF というクロックバッファを介して供給されます。
図 2-11 エッジクロックと I/O レジスタの接続
DQSBUFF は最大 12 の出力 DDR レジスタにしか接続されておらず、DQSBUFF を共有する出力レ
ジスタ間で信号の出力スキューが最小となります。
ドキュメント番号 JDG08_001
12
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
2.3.2 クロック選択回路に接続できるクロックソース
エッジクロックのクロック選択回路は、クロックライン毎に独立して設けられています。各クロック
選択回路には、以下の信号がエッジクロックのクロックソースとして接続できます。
クロックソース
クロックソースの本数
-------------------------------------------------------------------------------------------------------------------特定のクロック入力ピン
:1
特定の PLL リファレンス入力ピン
:1
特定の PLL 出力
:1
特定の DLL 出力
:1
遅延セル出力(DLL で制御)
:1
クロックリソースは、エッジクロック毎に対応するリソースが決まっています。ECP3 には各辺に最
大 5 つの PLL がありますが、エッジクロックに接続できるのは特定の PLL だけです。
デバイス
サイド
ECP3-17
左
右
左
ECP3-35
右
ECP3-70/95
左
右
ECP3-150
左
右
表 2-2 エッジクロックに接続できる PLL
各パッケージの入力指定ピン
PLL ロケーション
FTBGA256 FPBGA484 FPBGA672 FPBGA1156
PLL_R26C5
PLL_R26C52
PLL_R35C5
PLL_R53C5
PLL_R35C70
PLL_R53C70
PLL_R43C5
PLL_R61C5
PLL_R43C142
PLL_R61C142
PLL_R61C5
PLL_R79C5
PLL_R61C178
PLL_R79C178
K3
K14
K3
P2
K14
T15
--------
L5
M18
L5
T3
M18
R17
L5
T3
M18
R17
-----
--U6
U4
V34
V20
U6
U4
V34
V20
M3
U4
T21
V20
------M3
Y9
T21
Y28
U6
Y9
V34
Y28
ドキュメント番号 JDG08_001
13
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
2.4 クロックソース
この項では、各クロック配線のクロックソースとなり得るリソースについて説明します。
2.4.1 クロック入力ピン
ECP3 ファミリには、クロック選択回路に接続するための専用配線を持つクロックピンが I/O バンク
ごとに1本、合計 6 本あります。
このクロックピンは web で公開されている Pinout list の Dual Function 欄に[PCLKT*_0]と書かれ
ているピンです(図 2-12、*は I/O バンクの番号)。
図 2-12 PCLK Pinout Information の例
リスト内には[PCLKC*_0]と書かれたピンもありますが、これはクロック入力ピンを差動 I/O として
使用した際に、反転入力となるピンです。シングルエンドのクロックをこのピンに入力しても、最短
経路の専用配線は使用されません。
2.4.2 PLL
PLL 出力
ECP3 ファミリの PLL は以下の 4 本のクロック出力を持っています。
・CLKOP
・CLKOS
・CLKOK
・CLKOK2
PLL 出力
CLKOP
CLKOS
CLKOK
CLKOK2
: 入力リファレンスクロックを分周または逓倍した出力
: CLKOP 出力に対して位相シフトまたはデューティー比調整を行った出力
: CLKOP または CLKOS を分周した出力
: CLKOP を 3 分周した出力
表 2-3 PLL 出力とクロック配線の接続
Primary クロック
Secondary クロック
エッジクロック
専用配線を介して接続 接続不可
専用配線を介して接続可※
専用配線を介して接続 CIB を介して接続可
専用配線を介して接続可※
専用配線を介して接続 CIB を介して接続可
接続不可
専用配線を介して接続 CIB を介して接続可
接続不可
※特定の PLL のみ(左右の辺で2個ずつ)
ドキュメント番号 JDG08_001
14
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
全ての PLL の全ての出力は、専用配線を介して Primary クロック選択回路に接続されています。 ま
た、特定 PLL の CLKOP/CLKOS のみはエッジクロック選択回路に専用配線を介して接続されてい
ます。
PLL 出力から Secondary クロック選択回路への専用配線はありません。CLKOP 以外の出力は CIB
を介して Secondary クロック選択回路に接続することもできますが、これは推奨できない使用方法で
す。また、CLKOP 出力を Secondary クロックにアサインすることはできません。そのような制約を
設定してもツールが自動的に Primary クロックにアサインしなおすか、エラーで配置配線が停止しま
す。
PLL 入力
リファレンス入力クロックはどのピンからでも入力することが出来ますが、PLL ごとにピンと PLL
を最短で接続するための専用配線を持っているピンがあります。このピンは web で公開されている
Pinout list の Dual Function 欄に [*_GPLLT_IN_A]と書かれているピンです(図 2-13)。
フィードバック入力ピン
リファレンス入力ピン
図 2-13 PLL 入力ピン Pinout Information の例
リスト内には[*_GPLLT_IN_B]と書かれたピンもありますが、これはクロック入力ピンを差動/O と
して使用した際に、反転入力となるピンです。シングルエンドのクロックをこのピンに入力しても、
最短経路の専用配線は使用されません。
また、デバイス外部からフィードバッククロックのための専用配線を持つピンがあります。このピン
はデータシートの[Pinout Information]項のリスト内で、[Dual Function]欄に[*_GPLLT_FB_A]と
書かれているピンです(図 2-13)。外部フィードバックを使用しない場合、このピンはユーザーI/O と
して使用できます。
PLL のパラメータ設定方法や使用方法の詳細については、データシートやテクニカルノート、ユー
ザーガイド等をご覧下さい。
ドキュメント番号 JDG08_001
15
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
2.4.3 DLL
ECP3 ファミリの DLL は以下の 2 本のクロック出力を持ち、両方とも専用配線を介して Primary ク
ロック選択回路に接続されています。(Secondary クロック選択回路には接続されていません)。
・CLKOP : 入力リファレンスクロックを分周または逓倍したクロック出力
・CLKOS : CLKOP 出力に対して位相シフトおよび分周を行ったクロック出力
(モードにより使用できる機能が異なる)
リファレンス入力クロックはどのピンからでも入力することが出来ますが、DLL ごとにピンと DLL
を最短で接続するための専用配線を持っているピンがあります。このピンは web で公開されている
Pinout list の Dual Function 欄に[*_GDLLT_IN_A]と書かれているピンです(図 2-14)。
図 2-14 DLL 入力ピン Pinout Information の例
リスト内には[*_GDLLT_IN_B]と書かれたピンもありますが、これはクロック入力ピンを差動 I/O
として使用した際に、反転入力となるピンです。シングルエンドのクロックをこのピンに入力しても、
最短経路の専用配線は使用されません。
2.4.4 CLKDIV マクロ(クロック分周器)
ECP3 ファミリはデバイスの左右に1つずつクロック分周マクロ CLKDIV を搭載しています。
CLKDIV マクロは以下の 4 本の出力を持ち、その全てが専用配線を介して Primary クロック選択回
路に接続されています。
・CDIV1 :
・CDIV2 :
・CDIV4 :
・CDIV8 :
入力クロックを 1 分周したクロック
入力クロックを 2 分周したクロック
入力クロックを 4 分周したクロック
入力クロックを 8 分周したクロック
CLKDIV マクロの入力クロックは、GPLL のリファレンスクロック入力ピン[*_GPLLT_IN_A]と専
用配線で接続されています。このため、[*_GPLLT_IN_A]ピンからクロックを入力した場合は、入
力ピンからレジスタまでの遅延が最短になります。GPLL/DLL の各出力ポートとも専用配線で接続
されているため、これらと接続した場合も配置配線の条件に依存せず配線経路が固定となります。
ドキュメント番号 JDG08_001
16
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
CLKDIV の動作の詳細やインスタンスの方法については、テクニカルノート TN1178 を参照してく
ださい。
2.4.5 CIB
CIB は「クロック選択回路と専用配線で接続されていないクロックソース」からの入力を、クロック
選択回路に入力するためのスイッチです。デバイス内でレジスタを使用して生成した分周クロックや
[PCLKT*_0]ピン以外のピンから入力されたクロックは、CIB を介して選択回路に入力されます。
ユーザーは設計の際に HDL ソースに CIB を記述する必要はありません。しかしユーザーは各クロッ
クで使用する CIB を指定できないため、配置配線を実行するまでクロックソースからクロック選択回
路までの遅延が分かりません。また、配置配線の条件が変わると、クロックソースから CIB までの配
線経路が変更されたり使用する CIB が変わってしまったりすることもあります。
このため、CIB 経由で Primary クロックまたは Secondary クロックにアサインするクロック信号は、
デバイス外部との AC タイミング制約(入力信号の Setup/Hold-time 制約および出力遅延制約)の基準
クロックには不向きです。AC タイミング制約の基準となるクロックには、CIB が使用されないよう
に設計してください。
2.4.6 SERDES/PCS マクロ
SERDES/PCS マクロからは、大きく分けると送信するパラレルデータを取り込むためのクロック
(full/half)、受信データに同期したリカバリクロック(full/half)、リファレンスクロックをスルーした
クロックの 3 種類が出力されます。
図 2-15 PCS のリファレンスクロックと出力クロック
この中で、専用配線を介して直接クロック選択回路に接続されているのは、チャネル 0 から出力され
る送信側クロックの 2 本だけです(図 2-15)。その他のクロックを[Primary クロック]または
[Secondary クロック]にアサインするためには、CIB 経由でクロック選択回路に接続されます。
ドキュメント番号 JDG08_001
17
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
送信側/受信側から出力されているクロックを個別に使用すると、マクロ当り最大で 8 本のクロック
配線と 8 個の CIB を使用することになります。複数の SERDES/PCS マクロを使用する場合や、
FPGA
内で CIB を必要とするクロック(Gated クロックや分周クロック)を多数生成する場合に CIB が不足
することがあります。
事前に CIB 数を考慮して共通化できるクロック(特に送信側)は共通化して使用してください。チャネ
ル間でのクロック共有については 4.5 項を参照してください。
ドキュメント番号 JDG08_001
18
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
3
Ver1.0
クロック・デザインフロー
この章では、HDL 記述から配置配線までのデザインフローで、クロックに関する注意事項やツール
上での設定について説明します。
3.1 HDL ソースの記述および論理合成
3.1.1 グローバルクロック・バッファのインスタンス記述
ECP3 ファミリのデザインフローでは、論理合成後に Primary/Secondary クロック配線に割り当てる
クロック信号を指定します。
従って HDL ソース内に Primary/Secondary クロックにアサインするためのグローバルクロック・
バッファ等のインスタンス記述は必要ありません。
3.1.2 DCS のインスタンス記述
[DCS]のクロック選択機能またはクロック Gating 機能を使用するためには、HDL ソース内に明示的
にインスタンス記述する必要があります。
[DCS]の HDL ソースは IPexpress では生成されませんので、以下の記述例を Copy & Past して必要
な部分を変更してください。
VHDL 記述例
-------------------------------------------------------------------------------------------------------------------------------------library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
library ecp3;
use ecp3.components.all;
entity DCSEXAMPLE is
port(
CLKI0
: in std_logic;
CLKI1
: in std_logic;
SELI
: in std_logic;
CLKO
: out std_logic
);
end DCSEXAMPLE;
architecture RTL of DCSEXAMPLE is
component DCS
-- synthesis translate_off
generic (
DCSMODE : string := "POS"
);
-- synthesis translate_on
port (
ドキュメント番号 JDG08_001
19
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
SEL
CLK0
CLK1
DCSO
Ver1.0
: in std_logic;
: in std_logic;
: in std_logic;
: out std_logic
);
end component;
attribute DCSMODE : string;
attribute DCSMODE of DCSAA : label is "POS"; --// DCS のモード(合成用)を記述。 2.1.5 項参照。
begin
DCSAA : DCS
-- synthesis translate_off
GENERIC map(
DCSMODE => "POS” --// DCS の動作モード(SIM 用)を記述。Attribute 宣言と合わせる
)
-- synthesis translate_on
PORT map(
SEL => SELI,
CLK0 => CLKI0,
CLK1 => CLKI1,
DCSOUT => DCSO
);
end RTL;
Verilog HDL 参考記述
-------------------------------------------------------------------------------------------------------------------------------------module DCSEXAMPLE (CLKI0, CLKI1, SELI, DCSO);
input CLKI0;
input CLKI1;
input SELI;
output DCSO;
DCS DCSAA (
.SEL(SELI),
.CLK0(CLKI0),
.CLK1(CLKI1),
.DCSOUT(DCSO)
);
defparam DCSAA.DCSMODE = “POS”; // DCS の動作モードを記述
end module
ドキュメント番号 JDG08_001
20
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
3.1.3 Gated クロック
クロックの Gating を行うと、最小パルス幅エラーのために回路が誤動作する可能性があるため、
Gating は基本的に推奨しません。
やむをえず Gating する場合は、[DCS]マクロを使用してください。
なお、[DCS]を使用せず HDL ソース内に AND や OR 論理で Gating を行っても、論理合成ツール(デ
フォルト設定)は Gated Clock を生成せず、Gating 信号をレジスタのクロックイネーブルに接続して
しまいます。
図 3-1 論理合成ツールによる Gated クロックの変換
この様に、期待と違う合成結果が出力されてしまうという理由からも、HDL ソース内でのクロック
Gating は推奨できません。
3.1.4 分周クロック
レジスタを使用して分周クロックを生成した場合、デフォルト設定のまま論理合成を行うと分周ク
ロックが最適化されクロックイネーブルに変換されてしまうことがあります。
図 3-2 論理合成ツールによる分周クロックの最適化
ドキュメント番号 JDG08_001
21
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
3.1.5 論理合成時のタイミング制約
論理合成ツールへのタイミング制約は、
デフォルト設定では全てのクロックに対して 200MHz になっ
ています。
要求されるクロック周波数がこれより大幅に高速な場合や低速な場合は、sdc ファイルに各クロック
の周波数制約を記述し、合成ツールに読み込ませることで適切な制約を与えることが出来ます。
読み込ませる sdc ファイルの指定は、Lattice Diamond の File List ウインドウで行います。
図 3-3 sdc ファイルの指定
既存の sdc ファイルをインポートする場合は、File List ウインドウの[Synthesis Constraint Files]
を右クリックし、[Add] => [Existing File]の順に選択し、起動するウインドウ上で sdc ファイルを指
定します。
新規に作成する場合は、[Add] => [New File]の順に選択し、起動するウインドウ上で作成するファイ
ル名とファイルタイプとして sdc ファイルを選択します(図 3-4)。
[Add to Implementation]にチェックが入っていると作成した sdc ファイルは自動的にインポートさ
れます。
ドキュメント番号 JDG08_001
22
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
図 3-4 sdc ファイルの作成ウインドウ
sdc ファイルの記述については、web 上の Lattice Diamond の Synthesis マニュアルか、Synplify Pro
のドキュメントを参照してください。
Lattice Diamond のマニュアル
http://www.latticesemi.co.jp/docs/toolmanuals/diamond/index.cfm
Synplify Pro のドキュメント
C:¥lscc¥diamond¥1.3¥synpbase¥doc¥* (デフォルトパスにインストールした場合)
3.2 使用するクロック配線の指定
Primary クロック/Secondary クロック配線へのクロック信号のアサインは、論理合成後に行いま
す。従って HDL ソース内にクロックバッファ等のインスタンスは必要ありません。
クロック信号を Primary クロック/Secondary クロック配線にアサインする方法は2つあります。1
つは Lattice Diamond の制約設定ツール Spreadsheet View を使用して設定する方法、もう 1 つは制
約ファイルに直接記述する方法です。
3.2.1 Spreadsheet View での設定方法
[Translate Design]プロセス完了後に、Lattice Diamond のツールバーあるアイコン
すると Spreadsheet View が起動します。
をクリック
ドキュメント番号 JDG08_001
23
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
図 3-5 Spreadsheet View
Spreadsheet View ウインドウには複数のタブがありますが、設定はこの中の Clock Resource タブで
行います。Clock Resource タブを開くと、自動的にネットリスト内のクロック信号(とクロックイネー
ブル、セット/リセット信号)が検出されて表示されます。
配線の種類の選択は[Selection]行のセルで行います。各クロックの[Selection]列のセルをクリックす
ると、いくつかの選択肢が表示されますので、この中から1つを選択します。
図 3-6 配線種別選択
各選択肢の設定内容は以下の通りです。
ドキュメント番号 JDG08_001
24
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Primary
Secondary
Prohibit Primary
Prohibit Secondary
Prohibit Both
Ver1.0
:
:
:
:
:
Primary にアサイン
Secondary にアサイン
Primary にはアサインしない
Secondary にはアサインしない
Primary/Secondary どちらにもアサインしない
何も選択しない場合は、ツールが自動的にアサインします。
[Primary]を選択した場合のみ右側の[Quadrant]および[DCS/Pure]列がアクティブになります。
[Quadrant]列のセルではアサインする[Quadrant]の選択を行います。セルをクリックすると、選択可
能な[Quadrant]の組み合わせリストが表示されるので、その中から1つ選択してください。
図 3-7 Quadrant 選択
何も選択しない(ブランク)場合は、全 Quadrant が使用されます(グローバルクロック)。
[DSC/Pure]列のセルでは使用するライン([DCS] or [PURE])の選択を行います。セルをクリックする
と選択肢のリストが表示されるので、その中から1つ選択してください。
図 3-8 [PURE] / [DCS]の選択
何も選択しない(ブランク)場合は、ツールが自動的に選択します。なお、[DCS]をインスタンスして
いるクロックで[PURE]を選択すると、配置配線でエラーが起きますので、ご注意ください。
ドキュメント番号 JDG08_001
25
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
3.2.2 制約ファイルでの設定方法
制約ファイルを直接編集してクロック配線を指定する場合は、以下のように記述します。
Syntax : []内は省略可 |で区切られている場合はどちらかを選択
==============================================
# 指定したクロック net を PRIMARY クロック配線にアサインさせる場合
USE PRIMARY [ PURE|DCS ] NET “クロックネット名” [使用する QUADRANT ] ;
※ [ PURE | DCS ]を省略した場合、ツールが自動で割り当て
※ [アサインする QUADRANT ] を省略した場合、全ての QUADRANT を使用(グローバルクロッ
ク)
# 指定した net を SECONDARY クロック配線にアサインさせる場合
USE SECONDARY NET “ネット名” ;
※ アサイン対象はクロック、クロックイネーブルおよびローカル Set/Reset
# 指定したクロック net を PRIMARY クロック配線にアサインさせない場合
PROHIBIT PRIMARY NET “クロックネット名” ;
# 指定した net(クロック/リセット/クロックイネーブル)を SECONDARY クロック配線にアサインさ
せない場合
PROHIBIT SECONDARY NET “ネット名” ;
以下に参考記述を紹介します。
Example
==============================================
# クロックネット”CLK0_c”を PRIMARY クロック配線にアサインさせる場合。全 QUADRANT 使用
(グローバルクロック)。DCS/PURE は任意。
USE PRIMARY NET “CLK0_c” ;
# クロックネット”CLK1_c”を SECONDARY クロック配線にアサインさせる場合。QUADRANT TL
と TR を使用
USE SECONDARY NET “CLK1_c” QUADRANT_TL QUADRANT_TR ;
# クロックイネーブル信号”CE”を SECONDARY クロック配線にアサインさせる場合。
USE SECONDARY NET “CE” ;
# クロックネット”CLK2_c”を PRIMARY クロック配線にアサインさせない場合
PROHIBIT PRIMARY NET “CLK2_c” ;
なお、この制約記述で指定できるのはネット名のみです。クロック入力ポートを指定することは出来
ません。
同期パスがあるクロックネット名は論理合成ツールのレポートファイル内にレポートされますが、そ
れが全てではない場合もあります。
ドキュメント番号 JDG08_001
26
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
設定可能なクロックネット名のリストは以下の方法で確認することが出来ます。
1. 3.2.1 項のように Spreadsheet View を起動し、Clock Resource タブを開く。
2. Map Design プロセスを実行し、そのレポート内のクロックリストを見る。
ドキュメント番号 JDG08_001
27
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
4
Ver1.0
クロック設計のガイドライン
この章では、2 章で説明したクロック・アーキテクチャに基づき、ツール上のエラー回避/処理時間
短縮および実機上での誤動作回避の観点から、どのようにクロック設計を行うべきかを説明します。
4.1 クロック入力ピンアサインのガイドライン
クロック入力ピンを決定する際は、以下の点に注意してください。
4.1.1 I/O タイミングの基準クロック
I/O タイミングの基準クロックは、クロック選択回路までの配線が固定されるピンにアサインしてく
ださい。基本的にはクロック入力ピン、PLL リファレンス入力ピンまたは DLL 入力ピンです
(PLL,DLL を使用する場合はそれぞれの入力ピン)。
これ以外のピンを使用すると、配置配線ごとに入力ピンからスイッチボックスまでの遅延が変わるた
め、結果として I/O のタイミング(入力 Setup/Hold-time、出力遅延)が変わることになります。
----------------------------------------------------------------------------------------------------------------------------------・ECP3-75/90 は 10 個の PLL を内蔵していますが、FPBGA484 パッケージでは PLL のリファレ
ンス入力ピンが4本しかありません。従って5つ以上の PLL を IO 入出力タイミング調整の目的
で使用する場合は、FPBGA676 か FPBGA1164 パッケージを選択してください。
----------------------------------------------------------------------------------------------------------------------------------クロック入力ピンが不足している場合は、余っている PLL/DLL リファレンス入力ピンで代用します
(例: PLL をバイパスモードにしてバッファ代わりに使用)。なお、クロック周波数が遅く(1MHz 以
下)Setup/Hold-time や出力遅延等のタイミングが 100ns 程度でも問題ない場合は、通常のユーザー
I/O を使用しても構いません。
4.1.2 I/O タイミングの制約が無いクロック
I/O タイミングの制約がないクロックは、どのピンから入力しても問題ありません。しかし、クロッ
ク入力ピンが余っているなら、クロック入力ピンから入力することを推奨します。
4.2 クロック出力の生成
SDR(Single Data Rate)ソースシンクロナス伝送のために ECP3 からクロックを出力する場合、内部
で使用しているクロック信号を直接ピンに接続するのではなく、出力 DDR レジスタを使用して”10”
の固定パターンを出力する回路構成にすることを推奨します。
図 4-1 クロック出力回路構成例(SDR)
ドキュメント番号 JDG08_001
28
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
クロック信号を直接ピンに引き出した場合、クロックソースからピンまでは一般配線が使用されるた
め配置配線を行うたびに遅延が変わります。また PVT(プロセス、電源電圧、温度)の変動により出力
データとクロック間の位相が大きく変動します。出力 DDR レジスタを使用することでこの問題を回
避できます。
データとクロックの位相を 180°ずらす場合は、出力 DDR レジスタに入力する”10”パターンを反転
されることで実現します。
な お 、 DDR ソ ー ス シ ン ク ロ ナ ス 伝 送 の 場 合 は 、 IPexpress で DDR の 送 受 信 モ ジ ュ ー ル
(DDR_GENERIC)を生成すると、条件に応じたクロック構成が自動的に生成されます(図 4-2)。
図 4-2 クロック出力回路構成例(DDR)
DDR での送受信の場合は、データレートやクロックエッジの位置(Align or Center)等で最適なクロッ
ク構成が変わりますので、かならず IPexpress でモジュールを生成して使用してください。
4.3 内部クロックの設計ガイドライン
4.3.1 Quadrant 分割のガイドライン
ECP3 にはクロック配線として Primary クロック 8 本、Secondary クロック 7 本しか実装されてい
ないため、16 本以上のクロックを使用するデザインでは Quadrant 分割を行い Primary クロックに
アサインできるクロックを増やす必要があります。
---------------------------------------------------------------------------------------------------------------------------------・基本的に Primary/Secondary クロック配線を使用せず、一般配線でクロックツリーを構成する
ことは推奨しません。
・例外的にクロックのファンアウトが1の場合のみ、そのクロックは一般配線を使用しても構いま
せん(PLL のフィードバッククロックは除く)。
---------------------------------------------------------------------------------------------------------------------------------この際、Quadrant 分割、およびクロック信号アサインには、以下の制限があります。
・1つのクロック信号がアサインできる Quadrant 数は 1,2,4(3 はダメ)。
・クロック信号を 2 つの Quadrant にアサインする場合は、隣り合った Quadrant の組しか選択で
きない(TL & BR および TR & BL の組み合わせは不可)。
ドキュメント番号 JDG08_001
29
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
図 4-3 Quadrant 分割例
・分割した Quadrant 内に、接続されているリソースが全て収まること(PLL,IO レジスタ等も含む)
Quadrant のアサイン数および組み合わせについては、制約設定ツール上では許可された組み合わせ
しか表示されません。
Quadrant 分割したリソース(特に PLL や PCS といったマクロ) に関しては制限がかかります。これ
らのマクロを複数使用した場合、Quadrant 分割しないとクロック本数が足らなくなることがありま
すが、使用するマクロの配置を考慮して Quadrant 分割を行わないとツール上で配線できずにエラー
が発生します。
以下に特に注意が必要なリソースについて説明します。
EBR/DSP ブロック
ECP3-17 では、EBR は TL/TR のみ、DSP ブロックは BL/BR にのみ配置されています。これらの
マクロをドライブしているクロックを、マクロの配置されていない Quadrant にアサインするとデ
ザインツールはエラーメッセージを出力して配置配線を終了させます。
エラーメッセージの例
----------------------------------------------------------------------------------------------------------------ERROR - par: MULT9 resources are not sufficient for Quadrant/s TR .
Please check the quadrant clock preferences.
----------------------------------------------------------------------------------------------------------------また、ECP3-17 以外でも Quadrant 分割を行うと指定した Quadrant 内のマクロしか使用できな
いので、リソースが不足して同様のメッセージが出力されることがあります。EBR/DSP ブロック
を多くドライブするクロックは可能な限り Quadrant 分割しないことを推奨します。
PLL/DLL の配置とフィードバッククロックの Quadrant 指定が一致しない場合
PLL の出力クロックを Primary 配線経由でフィードバックする構成の場合、フィードバックする
クロック が全くレジスタに接続されていなくても Primary 配線を1本消費してしまいます。この
ような PLL を複数使用するデザインでは、フィードバッククロックだけで Primary 配線の多くを
消費してしまい、クロック配線が足らなくなってしまうことがあります。
このような場合、フィーダバッククロックを Quadrant 分割することにより Primary クロックの消
費を抑えることが出来ます。この際、フィードバッククロックは PLL のある Quadrant に割り当
てられる必要があります。
ドキュメント番号 JDG08_001
30
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
PLL のフィードバッククロックを出力元 PLL の無い Quadrant へアサインする設定を行った場合、
Primary クロックに余りがあれば、
自動的にフィードバッククロックを余っている Primary クロッ
クにアサインしますが、余りが無い場合は Primary クロックを介さないでフィードバックしたり、
以下のようなエラーメッセージを出力して配置配線が中断されたりします。
エラーメッセージの例
----------------------------------------------------------------------------------------------------------------ERROR - par: DLL comp " Inst1_CIDDLLB" cannot be placed in the designated quadrants.
The quadrant clock preference of the feedback signal " CLKOP_0" of this DLL
is "quadrant TL, BL". The design is unroutable.
----------------------------------------------------------------------------------------------------------------表 4-1 は各デバイスに搭載されている PLL のロケーション(配置指定の際に使用する位置情報)、配置
されている Quadrant、およびその PLL に専用配線で接続されるピン番号のリストです。
PLL のフィードバッククロックを Quadrant 分割した Primary クロックにアサインする場合は、か
ならず該当する Quadrant が含まれるように分割・アサインを行ってください。
表 4-1 PLL のロケーションと Quadrant
Device
ECP3-17
ECP3-35
ECP3-70/95
ECP3-150
PLL のロケー
ション
PLL_R26C5
PLL_R26C52
PLL_R35C5
PLL_R53C5
PLL_R35C70
PLL_R53C70
PLL_R25C5
PLL_R43C5
PLL_R61C5
PLL_R70C5
PLL_R79C5
PLL_R25C142
PLL_R43C142
PLL_R61C142
PLL_R70C142
PLL_R79C142
PLL_R43C5
PLL_R61C5
PLL_R79C5
PLL_R97C5
PLL_R106C5
PLL_R43C178
PLL_R61C178
PLL_R79C178
PLL_R97C178
PLL_R106C178
Quadrant
Input pin
FTBGA256
TL
TR
TL
BL
TR
BR
TL
TL
BL
BL
BL
TR
TR
BR
BR
BR
TL
TL
BL
BL
BL
TR
TR
BR
BR
BR
FPBGA484
FPBGA672
FPBGA1156
K3
L5
--K14
M18
--K3
L5
M3
-P2
T3
U4
-K14
M18
T21
-T15
R17
V20
--L8
N7
※1
-L5
M3
U6
-T3
U4
Y9
-U6
AC6
※1
-U7
AL1
※1
-L21
P30
※1
-M18
T21
V34
-R17
V20
Y28
-Y26
AB28
※1
-V17
AJ34
※1
--L8
N7
--M3
U6
--U4
Y9
--U6
AC6
--U7
AL1
--L21
P30
--T21
V34
--V20
Y28
--Y26
AB28
--V17
AJ34
※1 PLL まで専用配線を使用して配線されるピンはなし
なお、フィードバックしないクロックは、Quadrant 分割する場合でも PLL の配置による制限の対象
とはなりませんが、他の要因による Quadrant アサインの制限を受けることになります。
ドキュメント番号 JDG08_001
31
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
PCS(SERDES)
多くの SERDES チャネルを使用する場合、構成によってはチャネル間でクロックが共有できない
ので、Primary クロックの Quadrant 分割を行います。
この際、使用する PCS ごとに必ず含まれなければならない QUADRANT があります(基本的には
PCS が配置されている QUADRANT)。
デバイス
ECP-17/35
ECP3-75/90
ECP3-150
表 4-2 PCS と QUADRATN の対応
使用する PCS
分割の際、含まなければ
ならない QUADRANT
PCSA
BR,BL
PCSA
BR,BL
PCSB
BL
PCSC
BR
PCSA
BR
PCSB
BL
PCSC
BR
PCSD
BL
なお、PCS から出力されるクロックのほとんど(TX 側 CH0 クロック以外)は、CIB を介してクロッ
ク選択回路に接続されるため、その他のクロックの使用状況によっては、CIB の数が足らず配線で
きないことがあります。その際は、余っている PLL 等をバイパスする等の方法で CIB の不足を補っ
てください。
I/O レジスタ
クロックの[Quadrant]分割を行った場合、指定されたクロックに接続されたレジスタは指定された
[Quadrant]にしか配置されません。このレジスタには、SLICE 内のレジスタだけでなく I/O レジ
スタも含まれます。
このため、[Quadrant]指定とピンアサインによる I/O レジスタの配置に不一致が生じると、配置配
線できません。このような場合、デザインツールは以下の様なエラーメッセージを出力して配置配
線を終了させます。
エラーメッセージの例
----------------------------------------------------------------------------------------------------------------ERROR - par: init_place_piopgroup(): failed to place PIO PGROUP comp ポート名.
----------------------------------------------------------------------------------------------------------------例えば、ある I/O レジスタが使用されるポートを I/O バンク 3(Quadrant BR)にアサインしたのに、
その I/O レジスタをドライブするクロックをアサインする[Quadrant]に TL_TR を指定した場合な
どに、このようなエラーが発生します。
Quadrant 分割を行う必要のあるデザインの場合は、ピンアサインも考慮して行ってください。
ドキュメント番号 JDG08_001
32
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
図 4-4 Quadrant と I/O バンクの組み合わせ
4.4 PLL を使用する場合の設計ガイドライン
4.4.1 位相シフト機能を使用する場合のクロックアサイン
PLL の CLKOS 出力で位相シフト機能を使用する場合、CLKOP と CLKOS は必ず Primary クロッ
クを使用してください。また、DCS ラインか PURE ラインかも統一してください。
DCS ラインと PURE ラインとでは数十 ps ですが、遅延がかわります。このため、PURE と DCS ラ
インが混在だと、クロック周波数が高いほど位相シフト量の誤差が大きくなってしまいます。これを
防ぐために必ず CLKOP と CLKOS は同じクロックラインにアサインしてください。
4.5 SERDES を使用する場合のクロック設計ガイドライン
4.5.1 受信側クロックのクロック配線使用
受信側は、チャネル毎にリカバリクロックが出力されており、基本的には各チャネルのデータ出力は
当該チャネルのリカバリクロックでラッチします。
図 4-5 各チャネルで個別のカバリクロックを使用した例
ドキュメント番号 JDG08_001
33
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
しかし、Lattice ECP3 では最大 16 チャネルの SERDES を内蔵しており、複数チャネル使用時に個
別のリカバリクロックを使用すると、多くのクロック配線が必要になります。さらに送信側のクロッ
クも必要となるため Primary/Secondary クロックをグローバルクロックとして使用すると本数が足
らなくなる可能性があります。
------------------------------------------------------------------------------------------------------------------------------------・多数のリカバリクロックを使用する際、各リカバリクロックに接続される F/F 数(fanout)がどれほ
ど小さくても、Primary/Secondary クロックを使用せずに一般配線を使用してクロックツリーを実
現することは推奨しません。
------------------------------------------------------------------------------------------------------------------------------------これの問題を回避するには2つの方法があります。
リカバリクロックを複数チャネルで共有する
XAUI や PCIe×4 のように、複数チャネルを束ねて1つのリンクを構成するような場合に、この方
法で使用するリカバリクロックの本数を削減できます。
この方法は、リカバリクロックを共有するチャネル間でデータレートの差がない場合に適用できま
す。具体的には以下の様な場合です。
・全チャネルのデータが1つのデバイスから出力されている。
・送信側の全 SERDES デバイスのリファレンスクロックソースが共通
・リカバリクロックを共有するチャネルは、全て同時に ON/OFF される。
図 4-6 チャネル間でリカバリクロックを共有した例
ドキュメント番号 JDG08_001
34
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
図 4-7 チャネル間でリカバリクロックを共有できる接続例
この条件を満たさない場合、リカバリクロックを共有すると SERDES マクロ最終段の FIFO で
Overflow または underflow が発生し、データの欠損等により正しいデータの伝送が行われません。
条件を満たせば Quad をまたいでリカバリクロックを共有することもできます。
Primary クロックを Quadrant 分割して使用
各チャネル間でデータレートに差がある場合や、チャネル毎に動作状況(ON/OFF)が異なる場合は
チャネル間でリカバリクロックが共有できないので、Primary クロックの QUADRANT 分割を行
い、疑似的にクロック配線数を増やします。
この際、使用する PCS ごとに必ず含まれなければならない Quadrant があります(基本的には PCS
が配置されている Quadrant)。
デバイス
ECP-17/35
ECP3-75/90
ECP3-150
表 4-3 PCS と QUADRATN の対応
使用する PCS
分割の際、含まなければ
ならない QUADRANT
PCSA
BR,BL
PCSA
BR,BL
PCSB
BL
PCSC
BR
PCSA
BR
PCSB
BL
PCSC
BR
PCSD
BL
なお、リカバリクロックは全て CIB を介してクロック選択回路に接続されるため、その他のクロック
の使用状況によっては、CIB の数が足らず配線できないことがあります。その際は、余っている PLL
等をバイパスする等の方法で CIB の不足を補ってください。
4.5.2 受信側クロックの振る舞いと設計の注意
受信側ではリカバリクロックとしてチャネル毎に[rx_full_clk_ch*]と[rx_half_clk_ch*](*はチャネル
番号)という2つのクロックが出力されています。
ドキュメント番号 JDG08_001
35
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
[rx_half_clk_ch*] は、[rx_full_clk_ch*] を PCS 内部で 2 分周したクロックです。[rx_full_clk_ch*]
と[rx_half_clk_ch*]は、FPGA ファブリックとのインターフェイスのバス幅に応じてどちらか1つを
使用します。これらのクロックは、SERDES の動作状態によっては安定した周波数を実現できませ
ん。以下の様な場合にはこれらのクロックで回路が動作しないような回路設計を行ってください。
SERDES マクロのリセット中
2つのクロックはリセット中の振る舞いに違いがあり、それぞれの理由により SERDES のリセッ
ト中に動作する回路には使用しないでください。
[rx_full_clk_ch*]は、SERDES のリセット中でも常に発信し続けます。ただし、この時の周波数は
規定されていません。このため、リセット期間中に[rx_full_clk_ch*]の周波数が、CDR の安定動作
中と比較して非常に高くなることがあり、これによりこのクロックで動作させている回路が誤動作
する可能性があります。
また、[rx_half_clk_ch*]は、リセット中は発信が止まり Low レベルに固定されます。このため、リ
セット解除にかかわる回路に[rx_half_clk_ch*]が使用されていると、クロックがトグルしないので
リセットが解除されなくなる可能性があります。
CDR が un-lock 中
リセット解除後、CDR が un-lock の期間(rx_cdr_lol_ch*_s=’1’の期間)は、[rx_half_clk_ch*] 、
[rx_full_clk_ch*]ともに発信はしていますが、その周波数は規定されていません。このため、CDR
の安定動作中と比較して非常に高くなることがあり、これによりこのクロックで動作させている回
路が誤動作する可能性があります。
4.5.3 送信側クロックのクロック配線使用
送信側は、チャネル毎にクロックが出力されていますが、これらは Quad 内の1つの PLL 出力(もし
くはそれを分周したもの)が出力されています。
図 4-8 各チャネルで個別のクロックを使用した例
ドキュメント番号 JDG08_001
36
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
しかし、チャネルの送信モード設定(full or half)が同じなら SERDES/PCS モジュール入口の FIFO
以降は全て同じクロックで動作していますので、送信側クロックは Quad 内の全てのチャネルで共
有することが出来ます。
図 4-9 チャネル間でクロックを共有した例
送信側は、送信先がチャネル毎に別々でも FPGA 内のクロックを共有することができます。共有する際は、
チャネル 0 のクロックを優先的に使用してください。チャネル 0 のクロックは、クロック選択回路まで専
用配線で接続されているので、CIB を消費することなく Primary クロックを使用することが出来ます。
リファレンスクロックソースと各種送信モード設定が同じであれば、Quad 間で送信データ用クロックを
共有することもできます。
4.6 DCS の使用のガイドライン
4.6.1 クロックリソースの検討
DCS は2本のクロックをハザードなしで切り替えられますが、切り替えを行う場合は、切り替え信号
が Secondary クロックにアサインされます。Secondary クロックは8本の内、最大 7 本がクロック
として使用できますが、DCS を2つクロック選択回路として使用するため、クロックとして使用でき
る本数が最大6本になってしまいます。
クロック本数が多く、Secondary クロックまで使用する場合はこの本数の制限に注意してください。
---------------------------------------------------------------------------------------------------------------------------------・Primary クロックの DCS ラインを使用しても、選択機能を使用しなければ、この制限はありません。
---------------------------------------------------------------------------------------------------------------------------------4.6.2 DCS カスケード接続
3 本以上のクロックを選択する際に、DCS をカスケード接続して切り替えを行うと、クロック接続に
大幅に制限がかかります。これにより配線できないケースが多々あるので DCS をカスケード接続し
て使用しないでください。
ドキュメント番号 JDG08_001
37
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
3本以上のクロックから1本を選択する場合は、まず論理回路(LUT)での選択を行い、最後に DCS
で2本から1本を選択することを推奨します(図 4-10 参照)。
非推奨構成
非推奨構成
推奨構成
図 4-10 DCS を使用したクロック回路構成例
4.7 クロック専用配線を使用しない場合のガイドライン
デザインのクロック本数が 15 本を超えると、Primary クロックの Quadrant 分割でクロック配線に
アサインするクロック信号を増やすことができます。しかし、クロック信号の多いデザインでは
Quadrant 分割を行ってもクロック配線にアサインできないクロック信号が出てくることがありま
す。
このような場合、ツール上では通常配線リソースを使用してクロックツリーを構成することで、クロック
配線の不足を補うことができますが、基本的には通常配線リソースを使用したクロックツリーの構成は禁
止します。
しかし、例外的に以下の条件を満たすクロックの場合は配置指定等の制約を追加することで、通常配線リ
ソースを使用することも許容されます(推奨はしませんが、禁止もしません)。
1. IO レジスタ、EBR、DSP ブロック、PCS といったハードマクロに接続されていない。
通常配線リソースを使用した場合、専用配線を使用した場合と比べるとクロックスキューが大きくなり
ます。特にハードマクロを使用した場合はスキューが大きくなる傾向にあるので、ハードマクロに接続
されているクロックは通常配線を使用することを禁止します。
2. Fanout 数が 24 以下。
Fanout が大きくなるほどスキューが大きくなる傾向があります。Fanout 数は小さい場合のみ通常配線
でクロックツリーを構成することを許容します。24 以下が推奨ですが、理想は 6 以下です(理由は後述)。
3. 動作周波数が 50MHz 未満
通常配線を使用したクロックツリーでは、クロックスキューのために動作周波数が高くなりにくい傾向
があります。このため動作周波数の低いクロック信号のみ通常配線でクロックツリーを構成することを
許容します。
ドキュメント番号 JDG08_001
38
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
4. 外部の AC タイミング制約がない、または Setup/Hold-time の要求値が各 10ns 以上、最大出力遅
延の要求値が 20ns 以上。
通常配線を使用したクロックツリーでは、入力ピンからレジスタまでの遅延が固定されません(配置配
線の条件が変わると遅延も変わる)
。このため、AC タイミング要求が厳しいと要求を満たすために何度
も配置配線を繰り返すことになります。これを避けるために制約がないか、非常に緩いタイミング要求
の場合のみ通常配線でクロックツリーを構成することを許容します。
5. 他のクロックドメインとの間にタイミングが問題になるデータのやりとりがない
通常配線を使用したクロックツリーでは、入力ピンからレジスタまでの遅延が固定されません(配置配
線の条件が変わると遅延も変わる)
。このためクロック間の位相が期待通りにならずタイミングエラーが
発生する場合があります。これを防ぐため、他のグロックドメインとタイミングが問題になるようなデー
タのやり取りのある場合は、通常配線を使用したクロックツリーの使用を禁止します。
上記の条件の満たしている場合は、配置配線時に周波数制約だけでなく以下の制約を追加してください。
なお、クロックの Fanout 数が1の場合はこれらの制約は必要ありません。
制約 1. クロックの最大スキュー制約
クロックスキューを小さくするために、以下の様なタイミング制約を制約ファイルに記述しま
す(GUI ツールでは設定できません)。LatticeECP3 では 0.2ns 以下に設定することを推奨しま
す。
-記述ルール
MAXSKEW NET
“クロックネット名”
-記述例
MAXSKEW
“dummy_clk_c”
NET
スキュー値
0.2 ns
;
;
制約 2. クロックの最大遅延制約
クロック配線の遅延が大きくなるほどクロックスキューは大きくなる傾向があります。クロッ
クスキューを小さくするために、以下の様なタイミング制約を制約ファイルに記述します(GUI
ツールでは設定できません)。LatticeECP3 では 2.0ns 以下に設定することを推奨します。
制約 3.
-記述ルール
MAXDELAY NET
“クロックネット名” 最大遅延値
-記述例
MAXDELAY
“dummy_clk_c” 2.0 ns
NET
;
;
Hold-time マージン制約
通常配線を使用したクロックツリーでは、Primary/Secondary クロックを使用した場合より
スキューが大きくなり、特に Hold-time エラーが起こりやすくなります。ツール上ではデータ
遅延やスキューは全て max または min 条件でタイミング解析が行われますが、ツール上でタ
イミング解析をパスしていても、実デバイス上では遅延条件のばらつき等により Hold-time エ
ラーが発生してしまうことがあります。これを防ぐため、クロックの周波数制約設定の際に
Hold-time マージンの設定も行います。
Hold-time マージンは GUI ツール上で設定することが出来ます。周波数制約を設定する際に
[Hold Margin]欄に、制約 2 で設定した最大遅延の 10%を入力してください。
ドキュメント番号 JDG08_001
39
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
Ver1.0
Hold-time
マージンの設定
図 4-11 Hold-time マージンの設定
制約 4. レジスタのグルーピング(UGROUP)と配置指定
レジスタの配置がバラバラになるとスキューが大きくなりますし、配置がクロック入力ピンか
ら遠いとクロック遅延が大きくなります(結果スキューも大きくなる)。レジスタのグルーピング
を行うと、グルーピングされたレジスタは近くの SLICE に配置されるようになります。また、
グルーピングしたレジスタをクロック入力ピンの近くに配置することにより、クロック信号の
遅延とスキューを小さくすることが出来ます。
ただし、グルーピング対象のレジスタが 6 個以下の場合は、配置指定は必要ありません。Lattice
ECP3 では、SLICE 内に 2 個のレジスタをもちます。また、4SLICE で1PFU という単位を
構成し、PFU 内のクロックは共通でスキューが 0 になります(ただし PFU 内の1SLICE はレ
ジスタなし)。従ってレジスタ 6 個以下であれば 1PFU 内に収まるのでスキューを 0 にすること
が出来ます。グルーピングされたレジスタは基本的に同じ PFU 内に収まるように配置されるの
で、レジスタ 6 個以下であれば配置指定をする必要はありません。
グル―ピングしたレジスタが
配置された PFU
通常配線にアサインされた
クロック
図 4-12 レジスタ 6 個をグルーピングした場合の配置配線結果
ドキュメント番号 JDG08_001
40
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
5
Ver1.0
その他のクロック関連事項について
5.1 周波数拡散クロックのサポート
この項では Lattice ECP3 での周波数拡散クロック(Spectrum Spread Clock)サポートについて説明
します。
Lattice ECP3 はユーザーロジックへの周波数拡散クロックの入力をサポートします。PLL に入力し
た場合でも、数十~数百 KHz の周波数拡散成分は PLL を通過するので PLL の出力も周波数拡散ク
ロックになります。
--------------------------------------------------------------------------------------------------------------------------------・DLL に入力した場合、拡散成分が大幅に減衰する可能性があるので、デバイス内で周波数拡散ク
ロックが必要な場合は、直接使用するか PLL の出力を使用して下さい。
--------------------------------------------------------------------------------------------------------------------------------しかし、Lattice ECP3 の PLL/DLL には周波数拡散成分を付加する機能はないので、拡散クロック
をデバイス内部で生成することはできません。拡散クロックが必要な場合は、かならず外部から入力
してください。
ドキュメント番号 JDG08_001
41
LatticeECP3 ファミリ
クロックデザインガイド
August.2011
6
Ver1.0
改訂履歴
バージョン
Ver1.0
リリース日
2011/8
表 6-1 改訂履歴
改訂内容
・初版リリース
ドキュメント番号 JDG08_001
42
Fly UP