FC2カウンター FPGAの部屋 Spartan3A Starter KitのDDR2 SDRAMコントローラの途中経過4(ロジックセルを固定する)
fc2ブログ

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

FPGAの部屋

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

Spartan3A Starter KitのDDR2 SDRAMコントローラの途中経過4(ロジックセルを固定する)

”Spartan3A Starter KitのDDR2 SDRAMコントローラの途中経過3(フロアプランを試す)”でフロアプランのエリア制約をかけてみたところ、IOパッドから分散RAM使用のFIFOの入り口までのネットの遅延がばらばらという問題があった。これを入り口のロジックセルを狙い撃ちして位置を固定することで遅延の短縮ならびに、平均化を図ることにする。

現在のISEのバージョンは10.1SP3。
まずはProject Navigater のProcessesウインドウのImplement Design -> Place & Route -> View/Edit Placed Design (Floorplanner) をダブルクリックする。
Spa3A_DDR2_16_090325.png

Floorplannerが立ち上がる。エラーの嵐。どうやらRISINGやFALLINGなどの新しいキーワードが入った制約はエラーになるようだ。どうもXilinxのツールはツール同士の互換性が取れていない場合が多い気がする。本当はこの辺は無料版でないISEにバンドルされているPlanAheadでやるという予定になっているのかもしれない?
Spa3A_DDR2_15_090325.png

とりあえずエラーをすべて無視すれば、Floorplannerが使えるようになった。
Spa3A_DDR2_17_090325.png

Floorplannerはエラーがでるので、FPGA Ediotrとかでロジックセルを固定してもいいのだが、どのロジックセルがIOパッドからつながっているかが良くわからない。Timing Analyzerのインスタンス名とFPGA Editorのコンポーネント名が微妙に違っている見たいなので、エラーがでても、わかりやすいFloorplannerからやることにした。インプリメントが終了した時点でFloorplannerを起動すると、インプリメントされたロジックセルの位置を表示するウインドウ(上の図ですでに開いている右側のウインドウ)と、制約ファイルに反映させるためにロジックセルをフロアプランし固定するためのUCF Flowのウインドウが開く(いずれも右側のウインドウで、右側のウインドウの上にウインドウの上の部分だけが表示されている)
この辺は、私のブログの”Floorplannerの使い方”を参照。
昔のISEでは、Timing AnalyzerからFloorplannerを呼べて、選択したルートはFloorplanner上で選択され、どのように接続されているかがわかったのだけれど(Crossprobeができた)、しょうがない。あれれ、もしかしてTiming Analyzerを単体で立ち上げると、まだそれができたりするのかな?
やってみることにする。Floorplannerを閉じて、Windowsメニューから、Xilinx Design Suite 10.1 -> ISE-> Timing Analyzer を選択して、Timing Analyzer を立ち上げる。そうするとダイアログが出てくる。
Spa3A_DDR2_18_090325.png

ここで、一度、ISE project file に現在のプロジェクトを入力したらISEごともう1つ立ち上がってしまった。失敗。。。ダイアログの項目は何も入力しないでOKボタンをクリックすると、以前のTiming Analyzerが立ち上がる。
Spa3A_DDR2_19_090325.png

FileメニューからOpen Design... を選択して、Open Design ダイアログを開いて、Designファイルを選択するとPhysical Constraints Fileも選択されるはず。これでOKボタンをクリックしよう。
Spa3A_DDR2_20_090325.png

Analyze against Timing Constraints アイコンをクリックして、タイミング制約を解析する。
Spa3A_DDR2_21_090325.png

解析できたら、”Floorplannerの使い方覚書1”を参考にFloorplannerでCrossprobingしよう。CrossprobingするとFloorplannerが立ち上がる。パスを選択するとインスタンスとネットが選択された状態でFloorplannerで見えるんだけど、なぜか制約で位置を固定したIOBが見えないので、この方法は使えない。その代わり、分散RAMを使用したFIFOの入り口のインスタンスをTiming Analyzerでクリックし、Floorplanner上でも選択させて、UCF Flow にコピーする。
Spa3A_DDR2_22_090325.png

UCF Flow を見ると今選択したインスタンスがコピーされている。
Spa3A_DDR2_23_090325.png

このロジックセルは近くに配置されていて、これで良いような気もするが、ドラックアンドドロップで更に近くに配置する。これをすべてのDQに対して行っていく。下がDQ15までに行った結果。
Spa3A_DDR2_24_090325.png

これでセーブしたところ、また大量にエラーが出てしまった。エラーがでたRISING, FALLINGなどのキーワードが入った制約はなくなってしまったので、あらかじめセーブしておいたバックアップを戻して、Floorplannerで書き加えた以下のような制約を追加した。

INST "rddata_afifo_inst/RDDATA_AFIFO_FALL[3].DQS2intclk_FIFO_FALL/BU2/U0/grf.rf/mem/gdm.dm/Mram_RAM8" LOC = "SLICE_X2Y78" ;


これでもう一度インプリメントしてみた。Timing Analyzerの結果を見ると、IOBから分散RAM使用、非同期FIFOまでのネットの遅延は0.401ns ~ 0.969ns となった。その差、0.568ns と少なくなったが、もう少し調整する必要がありそうだ。もう少し追い込んでみたい。

2009/03/30 追記:
3つのロジックセルを配置するのを忘れていた。全部配置したら、IOBから非同期FIFOまでのネットが0.4ns ~ 0.7ns に収まった。約300ps 位の差、もう少し調整してみたい。
  1. 2009年03月29日 15:58 |
  2. Spartan3A Starter Kit
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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