FC2カウンター FPGAの部屋 UCFの書き方3

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

FPGAの部屋

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

UCFの書き方3

今回は自分で便利に使っているやり方を書きます。”こんなことも出来るよ。それよりもっとこんなふうにやれば良いのに。間違っているよ”、ということがあれば、ぜひコメントに書き込みお願いします。
まずは、前回の補足からタイミング制約でクロックの入力ポートに、動作クロックの周期(動作周波数)の制約を書いたが、この制約はDCMの後にも伝播するようだ。つまり、66MHzをクロック入力して、それをDCMに入れて、2倍の133MHzにして、回路に供給したとする。DCMの出力に制約を新たに書かなくても、66MHzのクロックの入力ポートに15nsの制約を書いておけば、DCMが出力したクロックの制約は7.5nsになる。
DDR SDRAMコントローラなどを作ると、沢山のクロックが必要となる。私が作っているのは、PCIバスから66MHzを供給して、それを元クロックとすると、
66MHz、133MHz0度、133MHz90度、133MHz180度、133MHz270度、133MHzの受信用、133MHzの16分周、位相シフト用
の8種類使用している。
特に、133MHzの受信用クロックは動的に位相をシフトしているので、他のクロックとの位相関係が静的にはわからない。従って、他のクロックで動作している回路へデータを渡す場合には、非同期FIFOを使用している。非同期FIFOの入力と出力で違うクロックになるわけだが、異なるクロックで動作し、データを受け渡すFFを制約に加えてしまうと、大幅にタイミング違反になってしまう場合がある。その場合に、受け渡すクロックの間の依存関係は無視するという制約を書く。
それが以下の制約だ。
PIN "U_ddr_cont_inf/DDR_CONT/dynamic_phase_adjustment_inst/bufg_fb.O" TNM = CLK_RX_O;
PIN "U_ddr_cont_inf/DDR_CONT/dcm_module_inst/clk_bufg_inst.O" TNM = CLK_DDR_O;
TIMESPEC TS_IGNORE3 = FROM CLK_RX_O TO CLK_DDR_O TIG;
TIMESPEC TS_IGNORE4 = FROM CLK_DDR_O TO CLK_RX_O TIG;

最初の行は、受信クロックを出力しているbufg(グローバルバッファ)の出力(.O)を使用しているFF全般にCLK_RX_Oという名前をつける。
次に、133MHz0度クロックを出力してるbufgの出力を使用しているFF全般にCLK_DDR_Oという名前をつける。
CLK_RX_OからCLK_DDR_Oへのデータパスのタイミング検出を無視(TIG)する。
CLK_DDR_OからCLK_RX_Oへのデータパスのタイミング検出を無視(TIG)する。
こうすると、非同期FIFOのタイミング検出を無視できるはずである。事実、タイミング違反が無くなった。

制約に関してはもう1回くらい書きたい。
  1. 2005年09月25日 20:00 |
  2. UCFの書き方
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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