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

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

FPGAの部屋

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

Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路8(インプリメント2)

武内さんのご指摘で、クロックドメインのバグを修正して、TIG制約をコメントアウトして、やってみようと思ったが、clk_camのクロックが間違っていた。sysclkをDCMに通した25MHzを使ってしまった。正しくは、CMOSカメラから帰ってきたcam_pclkをDCMを通して、25MHzのクロックとする必要があった。
修正したところ、Placeでエラーが発生した。エラーの内容を下に示す。

ERROR:Place:1012 - A clock IOB / DCM component pair have been found that are not placed at an optimal clock IOB / DCM site pair. The clock component <clk_cam_dcm_inst/DCM_SP_INST> is placed at site <DCM_X1Y3>. The clock IO/DCM site can be paired if they are placed/locked in the same quadrant. The IO component <cam_pclk> is placed at site .
This will not allow the use of the fast path between the IO and the Clock buffer. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .ucf file to demote this message to a WARNING and allow your design to continue. However, the use of this override is highly discouraged as it may lead to very poor timing results. It is recommended that this error condition be corrected in the design. A list of all the COMP.PINs used in this clock placement rule is listed below. These examples can be used directly in the .ucf file to override this clock rule.
< NET "cam_pclk" CLOCK_DEDICATED_ROUTE = FALSE; >
< PIN "clk_cam_dcm_inst/DCM_SP_INST.CLKIN" CLOCK_DEDICATED_ROUTE = FALSE; >


現在は下の制約で、dcm_DDR2_clk_dcmをいいところに配置しているのが問題だろうか?

INST "dcm_CAM_DDR2_clk_inst/dcm_DDR2_clk_dcm" LOC = DCM_X2Y3;


状況をPlanAheadで見てみたが、dcm_DDR2_clk_dcmを取り敢えず、隣のDCM_X1Y3の位置に替えてみることにした。

INST "dcm_CAM_DDR2_clk_inst/dcm_DDR2_clk_dcm" LOC = DCM_X1Y3;


下がPlanAheadで見たdcm_DDR2_clk_dcm。
CamDispCntrler_DDR2_18_100804.png

これでインプリメントしてみたところ、今度はdcm_DDR2_clk_dcmがエラーになってしまった。

ERROR:Place:1012 - A clock IOB / DCM component pair have been found that are not placed at an optimal clock IOB / DCM site pair. The clock component <dcm_CAM_DDR2_clk_inst/dcm_DDR2_clk_dcm/DCM_SP> is placed at site <DCM_X1Y3>. The clock IO/DCM site can be paired if they are placed/locked in the same quadrant. The IO component <sysclk> is placed at site <PAD54>.
This will not allow the use of the fast path between the IO and the Clock buffer. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .ucf file to demote this message to a WARNING and allow your design to continue. However, the use of this override is highly discouraged as it may lead to very poor timing results. It is recommended that this error condition be corrected in he design. A list of all the COMP.PINs used in this clock placement rule is listed below. These examples can be used directly in the .ucf file to override this clock rule.
< NET "sysclk" CLOCK_DEDICATED_ROUTE = FALSE; >
< PIN "dcm_CAM_DDR2_clk_inst/dcm_DDR2_clk_dcm/DCM_SP.CLKIN" CLOCK_DEDICATED_ROUTE = FALSE; >


このへんの配線リソースは厳しいのだろうか?
ここでユーザーズガイドを見てみようということで、”Spartan- ジェネレーション FPGA ユーザー ガイド v1.4 (日本語版)”を見てみた。
DCMを見てみると、そうか上下のDCMはグローバル用で、左右のDCMは左右それぞれのクロックネットワーク用なんだ!!!知らなかった。。。
次に、47ページの”図 2-2 : Spartan-3E/3A/3AN/3A DSP の内部区画ベースのクロックインフラストラクチャ”を見たら原因がわかった。上にグローバルクロック入力は8つあり、DCMは2つあるがそれぞれ近い方の4つのグローバルクロック入力がそれぞれDCMにつながるようだ。下に、図 2-2の一部を転載させていただく。
CamDispCntrler_DDR2_19_100804.png

だから、dcm_DDR2_clk_dcmをDCM_X1Y3に移動したらエラーになったんだ!!!
dcm_DDR2_clk_dcmをDCM_X2Y3の位置に戻した時のPlanAheadの画面を下に示す。
CamDispCntrler_DDR2_20_100804.png

それでは、cam_pclkのGCLKの位置を変える必要があるということだと思う。でも、配線がないので変えられない。。。しょうが無いので、下の制約を加えてインプリメントした。

NET "cam_pclk" CLOCK_DEDICATED_ROUTE = FALSE;
PIN "clk_cam_dcm_inst/DCM_SP_INST.CLKIN" CLOCK_DEDICATED_ROUTE = FALSE;


そうしたら、clk_ddr2のパスでタイミングエラーが発生してしまった。
CamDispCntrler_DDR2_21_100804.png

かなりハマってきてしまったが、心を落ち着けて、状況を検討してみることにする。
  1. 2010年08月04日 05:47 |
  2. 画像処理
  3. | トラックバック:0
  4. | コメント:0