前回、
キャラクタ描画テスト回路のシミュレーションを行ったので、今度はインプリメントをしてみた。
最初に
DDR2 SDRAMのバーストテストの時のUCFを貼りつけて、VGA出力などの足りないところはSpartan3A Starter Kitのユーザーズガイドから持ってきてUCFを完成させた。それでインプリメントしたところ、最初にVGA信号用のDCMとDDR2 SDRAM用のDCMを同じクロック入力パッドから入力していたので、片方のクロック配線が一般配線に回ってしまうというエラーが出てしまった。これは、DDR2 SDRAM用のDCM出力 (BUFG出力) からVGA信号用のDCMのクロック入力につなぐくことにして問題解決。
次に入力クロックの周期だが、20nsecでは到底メットしないとのエラーが出て、Place & Route(以下P&Rと省略)でエラーで止まってしまう。幾つか値を入れたところ100nsecでやっと通って、インプリメントが成功した。全くもっておかしいので、P&R後のタイミング解析結果を見てみたところ、非同期FIFO のclk_vga(65MHz予定クロック)ロジックからclk_ddr2(150MH予定クロック)ロジックまでの非同期FIFO のパスを解析してしまっている。

これは、2つのクロックを使用するロジック間のパスのTIG制約を加える必要がある。以前に、”
UCFの書き方3”で説明したことがあるが、今度はConstraints EditorからTIG制約を追加してみようと思う。それでは制約を追加しよう。
Project NavigatorのProcessesペインのUser ConstraintsからCreate Timing Constraints をダブルクリックする。

Constraints EditorがProject Navigator上に表示されるので、左のConstraints TypeからGroup ConstraintsのBy DCM Outputsを選択して、DCM/PLL/MMCM 出力ピンごとの制約のグループ化を行うことにする。double click to add a new constraints... をダブルクリックすると、Group Constraints by DCM/PLL/MMCM Outputs (TNM)ダイアログが出てくる。

ダイアログのTime name を入力して、VGAクロック用のDCMを選択する。Available output net pins: リストからCLKFXをクリックで選択して、AddボタンでOutput net pin targets: リストに追加する。(VGA用クロックはCLKFXで作っている)Createボタンをクリックして、制約を生成する。

同様にDDR2_CLKの制約を生成する。

2つのグループ制約が生成できた。

次にTIG制約を生成しよう。
左のConstraints TypeからTiming ConstraintsのExceptionsのPathsを選択する。右の1ライン目を右クリックして、右クリックメニューからCreate Constraints を選択する。

Path Exceptionsダイアログが表示される。TIMESPEC nameにTS_VGA2DDR2_CLK_TIGを入力して、Time groupsにFrom group:にVGA_CLK_OUTPUTを選択し、To groups:にDDR2_CLK_OUTPUTを選択する。Constraint typeでMark as false pathsのラジオボタンをクリックする。Createボタンをクリックする。これでVGA_clkで動作するロジックからDDR2_clkで動作するロジックへのパスを無視する設定をすることができた。

次に、DDR2_clkで動作するロジックからVGA_clkで動作するロジックへのパスを無視する設定をする。これが出来上がり図。

これでセーブして、UCFファイルを見てみると、下のような制約が付加された。
PIN "dcm_DDR2_VGA_clk_i/dcm_VGA_clk_dcm.CLKFX" TNM = VGA_CLK_OUTPUT;
PIN "ddr2_sdram_cont_i/dcm_module_inst/DCM_INST1.CLK0" TNM = DDR2_CLK_OUTPUT;
TIMESPEC TS_VGA2DDR2_CLK_TIG = FROM "VGA_CLK_OUTPUT" TO "DDR2_CLK_OUTPUT" TIG;
TIMESPEC TS_DDR22VGA_CLK_TIG = FROM "DDR2_CLK_OUTPUT" TO "VGA_CLK_OUTPUT" TIG;
これで、入力クロックの周期制約をもう一度、20nsecにしてインプリメント。P&Rの途中でけられることはなくなった。良かった。やはり、上記のパスが原因だった。しかし、タイミングエラーはまだある。
- 2010年02月13日 10:00 |
- VGAコントローラ
-
| トラックバック:0
-
| コメント:0