FC2カウンター FPGAの部屋 2005年12月21日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

BUFGMUXの配置方法

FPGA(Virtex2の3000)を使用してイーサネットのスイッチのような物を作ってあるのだが、DMAを実装するために、HDLを書き足した。インプリメントは出来たが、txdata3(23)といくつかの信号のクロックからの出力時間が、タイミング制約を満たさなくなってしまった。それにその辺の信号のクロックからの出力時間がばらついている。
タイミングアナライザで解析してみると、BUFGの後のネット(V10.OTCLK1)が7.442nsもかかっている。これはおかしい。

Timinig_ana_1_051221.png

次にFPGA Editorで見てみると、クロックがBottom-Rightの領域でグローバルクロック配線を使えていないようだ。緑の矢印の部分だ。FPGA EditorのArray1ウインドウにはトップ側のBUFGMUXが8個表示されている。右から7P,6S,5P,4S,3P,2S,1P,0S。これらのBUFGMUXはFPGAチップの左右真ん中の上下に8個ずつある。BUFGMUX7Pからの配線が赤くハイライトされているのがわかる。
FPGA_Editor_bufg_1_051221.png

Virtex2はチップをNW(North West),NE,SW,SEの4つの区画に分けてある。BUFGMUXはチップの上側に7P,6S,5P,4S,3P,2S,1P,0S、下側に7S,6P,5S,4P,3S,2P,1S,0Pと並んでいる。同じ番号のPとSが対抗しているのだが、同じ番号のBUFGMUXは、同じ区画へは接続できない。
このFPGAでは、BUFGMUXを14個使用しているので、同じ番号のBUFGMUXが同じ区画へクロックを供給するようになってしまったようだ。それで、グローバルクロック配線を使えなくなったクロックがローカル配線を使ってしまって、クロックが遅延してしまっているようである。
そこで、グローバルクロック配線がかち合わないように自分でBUFGMUXをフロアプランすることにした。今回はFloorplannerでなくて、PACEを使ってみた。使い方はほとんど同じようだ。
どっからでも出来るが、今回はISEのProcesses for SourceペインからUser Constrainsを展開して、Assign Package Pinsをダブルクリックしてみよう。
そうするとPACEが立ち上がる。
1.右真ん中の大きなウインドウの下のArchitecture Viewタブをクリックして、FPGAチップを表示する。
2.Architecture Viewで表示を拡大して、チップの最上部真ん中と最下部真ん中にあるBUFGMUXの割り当て部分を表示。
3.左上のDesign BrowserのGlobal Logicを展開するとrxclk_bufg等のBUFGMUXがある。
4.BUFGMUXをドラックアンドドロップして、指定のBUFGMUXの位置に入れる。(7Pなど)
5.入れ終わったらセーブする。
PACE_bufg_051221.png

これで、UCFにBUFGMUXを固定する制約が書かれる。再度インプリメントをする。終了後、Timing Analyzerで解析すると、

Timinig_ana_2_051221.png

BUFGの後のネット(V10.OTCLK1)は1.559nsとなっていて、グローバルクロック配線が使用されているようだ。FPGA Editorで見てみると、
FPGA_Editor_bufg_2_051221.png

改善されているのが良くわかる。(緑の矢印の部分) Array1ウインドウを見ると、以前はBUFGMUX7Pの配線が赤くハイライトされていたが、今度は反対側のBUFGMUX0Sの配線が赤くハイライトされているのがわかると思う。
Virex2でクロックを十数個使う場合は、Placerにお任せではうまくBUFGMUXを配置してくれない場合があるようだ。この場合は、自分でBUFGMUXをフロアプランするのが安全のようだ。
Virex2のBUFGMUXの制限などについての情報は、Virtex2ハンドブックの380ページからに載っている。これはXilinxの以下のURLにある。
http://direct.xilinx.com/bvdocs/userguides/j_ug002.pdf

---------------------
だいぶヒットポイントが上昇したような気になっていても、まだまだ知らないことは多い。

(2005.12.26:追加)
BUFGMUXのうちDCMへのフィードバック用BUFGMUXは通常の配線領域は使っていないようだ。よって、BUFGMUXは使用していても、配線領域は反対がわのBUFGMUXが全領域使用可能となる模様。
  1. 2005年12月21日 20:51 |
  2. FPGAチップ内の配線方法
  3. | トラックバック:0
  4. | コメント:0