ISE10.1で複数の制約ファイル(UCF)を使えるということで、試してみた。現在やっているSuzaku-VのDDR2 SDRAMコントローラのインプリメントでUCFファイルを2つに分けてみた。それは、Suzaku_DDR2_test_ddr2.ucf と Suzaku_DDR2_test_dev.ucf だ。それぞれDDR2用のIOの制約とそれ以外のIOの制約に分けている。タイミング制約はSuzaku_DDR2_test_dev.ucf に入っている。

これをProcessesペインからFloorplan IO - Pre-Synthesis を選択してFloorplan Editorを起動する。この辺のインターフェースはISE10.1から変更されている。大体、どんなことをするのかが予測がつく。

起動すると下のような画面が出てくるが、すでにすべてのIOがアサインされているはずなのに、ddr2_clkとddr2_clkb が空になっている。

これはddr2_clk と ddr2_clkb の宣言の仕方に問題があるようだ。パラメータに値が入ると下のように宣言される。
output [0 : 0] ddr2_clk;
output [0 : 0] ddr2_clkb;
要素数が1のバスになってしまう。UCFでの定義は下のようになっている。
NET "ddr2_clk<0>" LOC = "A16" ;
NET "ddr2_clkb<0>" LOC = "B16" ;
それでFloorplan Editorは同じものと認識できないようだ。
実際にインプリメントすると、ちゃんと制約で指定したIOにアサインされているので、ISE本体では大丈夫のようだ。ただ、Floorplan Editorでは表示できない。(今のところ、ISE10.1.01、こんな記述でいいのかどうかは別問題として。。。)
これを利用して、Floorplan Editor でIOをアサインして、どっちのUCFに制約がかかれるかやってみた。
Floorplan Editorでドラック&ドロップして、ddr2_clk と ddr2_clkb の出力IOを指定した。

これでSaveしてみる。ちなみにSave As... はできないようだ。
そうすると、Suzaku_DDR2_test_ddr2.ucf に下のような制約が追加された。
NET "ddr2_clk" LOC = A16;
NET "ddr2_clkb" LOC = B16;
NET "ddr2_clk" IOSTANDARD = "SSTL18_I";
NET "ddr2_clkb" IOSTANDARD = "SSTL18_I";
ISE上で上のUCFにつかされるのだろうか?
とりあえず、制約を追加したままインプリメントしても、Translateでワーニングが出るだけで、他の問題はないようだ。
ところで、DQの最適な遅延値を測定するDDR2 SDRAMコントローラは結局失敗しましたが、誰か要りますか? もし試してくれる方がいらっしゃるのだったら載せようと思う。
- 2008年06月01日 18:56 |
- Xilinx ISEについて
-
| トラックバック:0
-
| コメント:2
10.1
どうも10.1はEDKの使い勝手が今までと違うので9.2と行ったり来たりしてます。
てなわけで10.1は立ち上げ回数が減っています。
てか、FPGAを使う仕事が減っている、、、
致命傷です。
- 2008/06/01(日) 23:54:58 |
- URL |
- けむり #fo/KTNEA
- [ 編集 ]
けむりさん、 こんにちは。
本当にXilinxはツールが変化するのが早いですね。ついていくか、もとあるツールを使い続けるかですね。古いデバイスは古いツールで十分だろうと思います。と言いながら新しいツールに行ってしまうんですよね。
- 2008/06/02(月) 08:11:51 |
- URL |
- marsee #-
- [ 編集 ]