FC2カウンター FPGAの部屋 Spartan3A Starter KitのDDR2 SDRAMコントローラの途中経過3(フロアプランを試す)
FC2ブログ

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

FPGAの部屋

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

Spartan3A Starter KitのDDR2 SDRAMコントローラの途中経過3(フロアプランを試す)

しかし、ブログを書きながらやっているので、なかなかSpartan3A Starter KitのDDR2 SDRAMコントローラも進まないが、記録を残しておくことに意義があると思っている。

前回、”Spartan3A Starter KitのDDR2 SDRAMコントローラの途中経過2(DQSからBUFGをまわしたクロック)”で、お任せでインプリメントをしてみたが、遅延がばらついてしまった。それで今回はFloorplan Editorでエリア制約を試してみることにした。
まずは”ISE10.1iのFloorplan Editorでエリア制約”を参考にPrpcessesウインドウのUser Constrains -> Floorplan Area / IO / Logic - Post-Synthesis をダブルクリックしてフロアプランする。下図の赤いエリアにrddata_afifo_instを配置した。その下のRDDATA_AFIFO_FALL[2].DQS2intclk_FIFO_FALLなどを配置しようとしたが配置できなかった。
Spa3A_DDR2_7_090325.png

フロアプランをセーブすると、制約(UCF)ファイルに以下のフロアプラン(エリア制約)が追加された。
I

INST "rddata_afifo_inst" AREA_GROUP = "AG_rddata_afifo_inst";
AREA_GROUP "AG_rddata_afifo_inst" RANGE = SLICE_X9Y48:SLICE_X0Y79;


これで、もう一度インプリメントして、Timing Analyzerの結果を見てみよう。下がDQ0の入力の結果だ。
Spa3A_DDR2_8_090325.png

その結果、FIFOに行くまでのデータのネット(dq_data<0>) は、7.774ns から0.761ns となり劇的に短くなった。下がそのFloorplan Editorでの配線ルートの図だ。
Spa3A_DDR2_9_090325.png

緑の始点から赤の終点まで配線が非常に短いことがわかる。更に、上でフロアプランされた範囲にロジックが配置されていることがわかる。
次にDQSのクロックのパスだが、上のTiming Analyzer の画面を見ると、3.139ns から2.223ns に短縮されている。クロックのパスを同様にFloorplan Editorでの配線ルートの図を下に示す。
Spa3A_DDR2_10_090325.png

チップの上側のBUFGを使っている。こちらの方がBUFGに入るまでの遅延が少ないようだ。DQの上半分のBUFGに入るまでのクロックパスの遅延は1.998ns なので、DQの下半分のBUFGに入るまでのクロックパスの遅延との差は0.225nsとなった。この辺でBUFGは固定したほうが良さそうだ。

次にDQ9の結果を見ていこう。同様にTiming Analyzerの結果を見てみると、
Spa3A_DDR2_11_090325.png

FIFOに行くまでのデータのネット(dq_data<9>) は、5.544ns から1.761ns と大きく低減された。BUFGに入るまでのクロックパスの遅延dq_clk_node<1>は1.998nsで変わらない。FIFOに行くまでのデータのネットをFloorplan Editorで見てみよう。
Spa3A_DDR2_12_090325.png

だいぶ短いが、DQ0との差が大きい。
今回はRISINGしか見ていないが、FALLINGがわもあるし、更にばらついている可能性もある。すべてのDQを見てみたところ、FIFOに行くまでのデータのネット(dq_data)は最長がDQ12のRISINGで3.086ns、最短がDQ5のFALLINGで0.436nsだった。遅延の差は2.65nsもある。最長のDQ12のRISINGのFloorplan Editorのルート図を下に示す。
Spa3A_DDR2_13_090325.png

これだけ差があっては使えないので、今度はFloorplannerでFIFOの入力素子の位置を固定することにする。

  1. 2009年03月27日 05:44 |
  2. Spartan3A Starter Kit
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1070-fd713e84
この記事にトラックバックする(FC2ブログユーザー)