今度は、タイミング制約だ。
一番基本的な制約は、動作周波数である。
制約エディタ(ISE7.1i)でやると一番簡単だ。制約エディタの最初の画面に、クロックはリストされている。右側のPeriodの欄をダブルクリックすると、クロック制約を設定するダイアログが開く。

Clock Signal Definitionの欄にクロック制約を入力することになるが、大体はSpecify Timeの欄に入力することになる。
予定動作周波数の周期をTimeに入力する。この場合は50MHzの予定なので、周期は20nsなので、20と入力。デューティはだいたの場合は50%だろうから、Time HIGHはディフォルトの50でOK。
テキストエディタで見ると制約はこうなる。
NET "clk" TNM_NET = "clk";
TIMESPEC "TS_clk" = PERIOD "clk" 20 ns HIGH 50 %;
今度はセットアップ時間の設定。制約エディタでPortsタブをクリックすると、ポート(入出力ピン)の設定が出来る。当たり前だが入力ポートのみセットアップ時間を設定できる。Pad to Setup欄をダブルクリック。Pad to Setupのダイアログが開く。

Time Requirementの欄にセットアップ時間を入力(20ns)。クロックが複数ある場合は、Relative to Clock Pad Netで関連するクロックを選択。この場合はclkのみ。
テキストエディタで見るとこうなる。
NET "sw<0>" OFFSET = IN 20 ns BEFORE "clk" ;ちなみにベクタの括弧が<>になっている。UCFの書き方1では、()だったが、これは論理合成ツールによって異なっている。()はSynplify Pro、<>はXST(ISEのディフォルト)。XSTは括弧をプロパティから変更可能。
この後、ベクタに同じセットアップ時間を設定する場合には、テキストエディタで、<*>に変更する。
NET "sw<*>" OFFSET = IN 20 ns BEFORE "clk" ;今度は、クロックからの出力時間を設定する。同じPortsタブの画面から、Clock to Padをダブルクリック。そうすると、Clock to Padのダイアログが開く。

OFFSETの欄にクロックからの出力時間を設定(20ns)。後は、セットアップ時間と同様。
テキストエディタで見るとこうなる。
NET "seg_out<0>" OFFSET = OUT 20 ns AFTER "clk" ;これで、タイミング制約の基礎はOK。
次回は、応用編。
- 2005年09月25日 10:32 |
- UCFの書き方
-
| トラックバック:0
-
| コメント:0