FC2カウンター FPGAの部屋 UCF設定での失敗例

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

FPGAの部屋

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

UCF設定での失敗例

この前、”仕事では、どうもわけがわからないことがある。IOBのDDRレジスタを使ってクロックを出していて、前のIOBのDDRレジスタを駆動するクロックを使用したIOBのFFでデータを出しているのだが、どうもIOBの出力レジスタから出力パッドまでの遅延がそれぞれ違うのだ。なぜかはまだわからないが、なぜなんだろう? 解明中。”と書いたのだが、私のミス?でUCFが間違っていた。
LVDSのICへはクロックとデータを出力している。クロックはIOBのDDRレジスタを使って、D0に'0'、D1に'1'を入れることによって、クロックを出力している。下の図でフィードバックループが外になくて、FPGA内部に設定してある感じである。(つながっているデバイスもSDRAMではなくてLVDSの送信用ICだけど)


データは最後をFF出力にしてIOB内のFFを使うように設定してある。こうすれば、グローバルクロック配線遅延は大体同一なので、クロック出力時間と、データ出力時間が等しくなり、データとクロックの位相関係が保証できるはずだ。
ところがクロックとデータの出力時間が2ns程度違っている。
クロックのタイミングアナライザでの解析値とFPGA Editorでの回路構成を下に示す。


Tiockpは2.720nsだった。データのタイミングアナライザでの解析値とFPGA Editorでの回路構成を下に示す。


データのTiockpは4.766nsだった。この差は約2nsある。これが何で生じているかをXilinxのアンサー・サーチなどで調べてみたが、無いようだった。更にデータがDDRじゃないからだめなのかな?と思いデータもわざわざDDRにしてみたが、やはりTiockpは変化がなかった。
これで2、3日くらい悩んでしまったが、ふとUCFを見るとクロック出力のほうは、IOBのスルーレートがFASTで8mA出力になっていた。データのほうのUCFは位置の固定だけでデフォルトだったので、スルーレートはSLOWで12mA出力だ。ここがおかしかった。。。
データをクロックの設定にあわせたらTiockpも同じになった。
あ~あ、時間が無駄になってしまった。その前の固めてあるインプリを見るとデータもちゃんと設定してあるので、いつの時点かでUCFがなくなってしまったようだ。
1つ考えられるのは、UCFをPACEで設定するようになってから、 floorplanner や Constraints Editor で作ったUCFと互換が取れにくくなってしまったことがある。両方を使用していると、制約が2重になることもあったし、その時に修正したときに間違って消してしまったのかもしれない。新しいツールを出す時は互換性を完全に取ってもらいたい。(かなり八つ当たりモードです。反省)
  1. 2007年03月17日 15:40 |
  2. UCFの書き方
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/441-0ed8019b
この記事にトラックバックする(FC2ブログユーザー)