FC2カウンター FPGAの部屋 2009年04月29日
FC2ブログ

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

FPGAの部屋

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

ISE11.1iをインストールした(続き2)

”ISE11.1iをインストールした(続き)”の続き。
Place & Routeのエラーは、下のようなエラーだった。

Place:120 - There were not enough sites to place all selected components.
Some of these failures can be circumvented by using an alternate algorithm (though it may take longer run time). If you would like to enable this algorithm please set the environment variable XIL_PAR_ENABLE_LEGALIZER to 1 and try again


これに対するXilinxのアンサーがあった。”23634 - 8.1i PAR - 「ERROR:Place:120 - There were not enough sites to place all selected components...」というエラー メッセージが表示される”
これによると、結局、環境変数XIL_PAR_ENABLE_LEGALIZER に1をセットして再度Place & Routeすればいいらしい。
環境変数XIL_PAR_ENABLE_LEGALIZER に1をセットした。
ISE11_1i_8_090428.png

セット後、Project Navigatorを落として再起動し、ReRunして、もう一度Place & Routeを行った。結果はやはりエラー。下のようなエラー内容だった。

Place:120 - There were not enough sites to place all selected components.
Place:418 - Failed to execute IOB Placement


今度はエリア制約をしているのでエリアが十分ではないのかな?特にエリアにIOBの領域が含まれていないのだろうか?エリア制約を取り除いてみることにする。

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


これでどうだと、再々インプリメント。やっと通りました。良かった。

結果はどうかというと、小さいのでよくわからない。
ISE10.1i SP3の結果。

Design Summary
--------------
Number of errors:      0
Number of warnings:   10
Logic Utilization:
  Number of Slice Flip Flops:            64 out of  11,776    1%
  Number of 4 input LUTs:               133 out of  11,776    1%
Logic Distribution:
  Number of occupied Slices:             93 out of   5,888    1%
    Number of Slices containing only related logic:      93 out of      93 100%
    Number of Slices containing unrelated logic:          0 out of      93   0%
      *See NOTES below for an explanation of the effects of unrelated logic.
  Total Number of 4 input LUTs:         133 out of  11,776    1%
    Number used as logic:                69
    Number used for Dual Port RAMs:      64
      (Two LUTs used per Dual Port RAM)
  Number of bonded IOBs:                173 out of     372   46%
  Number of ODDR2s used:                 40
    Number of DDR_ALIGNMENT = NONE       40
    Number of DDR_ALIGNMENT = C0          0
    Number of DDR_ALIGNMENT = C1          0
  Number of BUFGMUXs:                     4 out of      24   16%
  Number of DCMs:                         1 out of       8   12%


ISE11.1の結果。

Design Summary
--------------
Number of errors:      0
Number of warnings:   10
Logic Utilization:
  Number of Slice Flip Flops:            64 out of  11,776    1%
  Number of 4 input LUTs:               135 out of  11,776    1%
Logic Distribution:
  Number of occupied Slices:             97 out of   5,888    1%
    Number of Slices containing only related logic:      97 out of      97 100%
    Number of Slices containing unrelated logic:          0 out of      97   0%
      *See NOTES below for an explanation of the effects of unrelated logic.
  Total Number of 4 input LUTs:         135 out of  11,776    1%
    Number used as logic:                71
    Number used for Dual Port RAMs:      64
      (Two LUTs used per Dual Port RAM)

  The Slice Logic Distribution report is not meaningful if the design is
  over-mapped for a non-slice resource or if Placement fails.

  Number of bonded IOBs:                173 out of     372   46%
  Number of ODDR2s used:                 40
    Number of DDR_ALIGNMENT = NONE       40
    Number of DDR_ALIGNMENT = C0          0
    Number of DDR_ALIGNMENT = C1          0
  Number of BUFGMUXs:                     3 out of      24   12%
  Number of DCMs:                         1 out of       8   12%


ISE11.1iの方がLUTが2つ余計に使っている。
さらに、ISE11.1iのSLICEの配置具合をPlanAheadで見てみた。エリア制約をかけなくてもまとまっている。
ISE11_1i_9_090428.png
  1. 2009年04月29日 17:04 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:0

サイクリングに行ってきた

今日は小学校の娘の授業参観だった。道徳の授業を見てから、全校集会は奥さんに任せて家に帰ってきた。奥さんは成人教育委員長なので、行く必要がある。ちなみに成人教育委員会は大人、つまり親を教育しようという委員会だそうだ。講演会を聞いたり、そんなことをやるらしい。教育されるなんて余計な御世話のような気もするが。。。
さて、今日は天気もよく、風もないので、昼食までの間に小貝川の土手をぶらぶらと自転車でサイクリングしてきた。この辺の小貝川の土手は完全に舗装されている。自転車は奥さんのマウンテンバイク。自分のはうちの親父にあげたのでない。奥さんはマウンテンバイクを買ったはいいが乗っていないので、私がたまに使っている。もう17年前のアラヤのバイクだ。結構品質が良く、ギアチェンジも快適。
小貝川の愛国橋からスタート。小貝川の西側の堤防の上を南に向かってサイクリング。

大きな地図で見る

道の両側は菜の花でいっぱいでした。筑波山とマウンテンバイクの写真を撮った。
cycling_1_090429.jpg

途中、車や本格的なロードバイクでサイクリングしている人とすれ違った。今日は本当によい天気。気持ちよくマウンテンバイクをこぐことができた。
cycling_2_090429.jpg

石下の長峰橋に着いた。
cycling_3_090429.jpg


大きな地図で見る

反対側の土手を帰ろうと思ったのだが、反対側の土手がない。。。結局、戻って同じ道を帰った。
なかなか楽しかった。今度は、水海道の方まで道がつながっているだろうから、その辺まで行ってみたい。

実は最近、”山さ行がねが”というページを読んでいる。壮絶な記録だけど、何か心惹かれるものがある。そういうこともあり、久しぶりにマウンテンバイクに乗りたくなった。けど、1時間程度しか乗っていないのに、尻が痛い。
  1. 2009年04月29日 13:51 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

ISE11.1iをインストールした(続き)

”ISE11.1iをインストールした”で出ていたエラーを解析する。
エラーはこんなのや。

ConstraintSystem:59 - Constraint [Sources/ddr2_sdram_cont_test.ucf(40)]: NET "ddr2_clkb" not found. Please verify that:
1. The specified design element actually exists in the original design.
2. The specified object is spelled correctly in the constraint source file.


こんなので、

ConstraintSystem:59 - Constraint [Sources/ddr2_sdram_cont_test.ucf(41)]: NET "ddr2_clk" not found. Please verify that:
1. The specified design element actually exists in the original design.
2. The specified object is spelled correctly in the constraint source file.


結局、ddr2_clkやddr2_clkbがないと言われています。
ちなみに、ddr2_clkやddr2_clkbの定義は下のようです。

output wire [QUANTITY_OF_CLK_OUTPUT-1 : 0] ddr2_clk; // DDR2のCLK
output wire [QUANTITY_OF_CLK_OUTPUT-1 : 0] ddr2_clkb; // DDR2のCLKB


#英語の使い方は間違っているかもしれませんが、ご容赦を。。。
QUANTITY_OF_CLK_OUTPUTは1なので、[0:0] ddr2_clkになっている。どうしてこうなったかというと、複数のDDR2 SDRAMを使っている場合など、場合によってクロックを複数供給する場合があって、その時に対応するためだ。
現在は1本ずつddr2_clkとddr2_clkbを使用している。この名前が違っているらしい。
ISE11.1iのXSTのRTLスケマで見てみたのが下の図。
ISE11_1i_5_090428.png

ddr2_clk(0)とddr2_clkb(0)になっている。定義からだと、この方が自然だと思うが、ISE10.1i SP3では、ddr2_clkとddr2_clkbになっていた。下の図。
ISE11_1i_6_090428.png

XSTのIOパッドの名前の付け方が変わったようだ。今までの下のUCFの記述を

NET "ddr2_clkb" LOC = "M2" |IOSTANDARD = SSTL18_II ;
NET "ddr2_clk" LOC = "M1" |IOSTANDARD = SSTL18_II ;


を下のように変えたらTranslateは通った。

NET "ddr2_clkb(0)" LOC = "M2" |IOSTANDARD = SSTL18_II ;
NET "ddr2_clk(0)" LOC = "M1" |IOSTANDARD = SSTL18_II ;


そうしたら、今度はPlace & Routeでエラー発生。このトラブルシュートは次回に。。。
ISE11_1i_7_090428.png

今度のISE11.1i はかなりのメジャーアップデートなのかもしれない?
  1. 2009年04月29日 07:45 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:0