FC2カウンター FPGAの部屋 Timing Analyzerの使い方

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

FPGAの部屋

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

ISE9.2iでのTiming Analyzerの起動方法

ISE9.2iでのTiming Analyzerの起動方法を解説しようと思う。ISE8まではTiming Analyzer単体で起動していたが、ISE9.2iではISEに統合されて起動する。
ISE92_Timing_Analyzer_1_080215.png

1.最初にISE9.2iでImplement Designを行う(ダブルクリックする)。
2.ProcessesペインのImplement Designを展開して、その中のPlace & Routeを展開する。
3.Generate Post-Place & Route Static Timingを展開して、Analyze Post-Place & Route Static Timingをダブルクリックする。

そうするとTiming Analyzerが立ち上がる。
この状態では、すでに静的にタイミングを解析した結果を表示する。エラーがあるときは、タイミングパスを表示する。
ddr2_implement_5_080211.png

しかし、タイミングが満足しているときにはタイミングパスを表示しない。
ISE92_Timing_Analyzer_2_080215.png

上の図では

TS_dcm_module_inst_clk_node = PERIOD TIMEGRP
"dcm_module_inst_clk_node" TS_dcm_module_inst_clk200_node HIGH 50%;


という制約は、9413 items タイミング解析してエラーなしで、最小クロック周期は 4.948ns だと書いてある。しかし、クリティカルパスがどこなのかはレポートがない。
そういうときには、Analyze against Timing Constraints アイコンをクリックすると、静的タイミング解析を行う。デフォルトでは3つのタイミングパスを解析する。
ISE92_Timing_Analyzer_3_080215.png

表示されたら、Sourcesペインの四角+をクリックするとタイミングパスを表示する。それをクリックするとタイミングの内訳が右のペインに表示される。
ISE92_Timing_Analyzer_4_080215.png

なおデフォルトが3なので、3つしかタイミングパスを表示しないが、メニューからAnalyze against Timing Constraints...を実行すると、解析するタイミングパスの個数を指定できる。
やり方は、AnalyzeメニューからAnalyze against Timing Constraints...を選択する。
ISE92_Timing_Analyzer_5_080215.png

Analyze against Timing Constrainsダイアログが開くので Options タブをクリックする。
ピンクの四角のところの3を任意の数字に変えると、その数分だけタイミング解析をしてくれる。たとえば10と入れれば、10個のタイミング解析をしてくれる。
ISE92_Timing_Analyzer_6_080215.png

下の図は10でやってみたところ。
ISE92_Timing_Analyzer_7_080215.png

さらに、Analyze against Timing Constrainsダイアログが開くので Options タブをクリックした状態で、Report fastest paths/verbose hold paths をチェックして解析をするとセットアップ時間と一緒にホールド時間も解析される。
ISE92_Timing_Analyzer_8_080215.png

結果はこれ。
ISE92_Timing_Analyzer_9_080215.png


皆さん、ご存知かもしれませんが、いろいろタイミング解析をやってみてください。
  1. 2008年02月15日 20:06 |
  2. Timing Analyzerの使い方
  3. | トラックバック:0
  4. | コメント:0

ISEで任意のパスのディレイを見る方法3

前回2回はISEで任意のパスのディレイを見る方法というよりは、クロックパスディレイを見る方法といったほうが良いような内容になってしまった。
でも、普段なかなか見ることが出来ないクロックパスディレイについて、確認できたのではないだろうか?
Timing AnalyzerのAnalyze against Users Paths by defining Endpointsを使用すると、非同期回路の入力パッドから出力パッドまでの遅延も見ることが出来る。LUTを使用したディレイがどの位遅延しているかも。実際に解析したときの結果が過去のブログのここに書いてある。
LUTを使用したディレイ回路を通ってFFに入っているのならば、クロックと同様に入力パッドからFFまでを遅延解析すれば良い。
今までは、ディレイの値はXilinxの保証値だったので、実際の遅延時間はどのくらいかという疑問がわくと思う。それも過去のブログで書いてあるので、そっちを参照してほしい。それは、FPGAの性能だ。以前の結果によると、実測値から計算される遅延量はTiming Analyzerによる保証値の70%だった。(ただし、この結果を元に失敗しても保障は出来ない。あくまで、私の持っているSpartan3のそのときの温度における結果がこうだったというだけだ)
今回はFPGA Editorで見ても、余り面白くなかったので、これにて終了とする。
最後に”ISEで任意のパスのディレイを見る方法2”で使用したxc3s200のフロアプランしてあるプロジェクトとxc3s1500のフロアプランしてあるプロジェクトをダウンロードできるようにしておくので、興味のある方はどうぞ。ここここです。
  1. 2005年12月17日 10:39 |
  2. Timing Analyzerの使い方
  3. | トラックバック:0
  4. | コメント:0

ISEで任意のパスのディレイを見る方法2

今回はFPGA Editorを使ってみようと思ったが、とりあえずFloorplannerで見てみよう。ISEのProcess View - Implement Design - Place & Route - View/Edit Placed Design (Floorplanner)をダブルクリックして、Floorplannerを起動。
右側のPlacementウインドウを見てみよう。赤丸の中、チップの下のほうにCLKパッドがある。SW入力パッドは右真ん中のあたり。いくらもロジックが無いので、チップの右真ん中のあたりに固まっている。(下図参照)
Tech_Schma_10_051215.png

Inst_ssgdisp_FreqDivi_lcnt_12を表示してみよう。右上のHierarchyウインドウのdynadisp_test "Primitives"を展開すると、Inst_ssgdisp_FreqDivi_lcnt_12がある。クリックすると、Placementウインドウに斜線でハッチングされて表示される。(図は拡大している)
Tech_Schma_11_051215.png

同様にswl_3をクリックすると出てこない。FPGA Editorでみると、IOパッド内のInputレジスタを使用しているようだ。Floorplannerでも片鱗が見える。SW3パッドを見ると、IQ1としてswl<3>がマップされている。FloorplannerでのIOBレジスタのマップ状況の見方はいまいち良くわからない。
Tech_Schma_12_051215.png

次に、FPGAチップ内で、どの位クロックディレイに差があるか調べてみよう。いい加減な方法だが、適当にFloorplannerでFFの配置を移動して調べてみようと思う。やり方は以前このブログで紹介したので割愛するが、"Floorplannerの使い方覚書1"を見てほしい。(FloorplannerはTiming Analyzerからのクロスプローブで立ち上げないで、この前のように単体で立ち上げる)すべてのロジックをUCF Flowにコピーする。適当にInst_ssgdisp_FreqDivi_lcnt_11、Inst_ssgdisp_FreqDivi_lcnt_12を動かしてみた。
Tech_Schma_13_051215.png

これでセーブして、コンパイルし、クロックディレイを観察してみよう。
Timinig Analyzerを起動しよう。
例によって、Process View - Implement Design - Place & Route - Generate Post-Place & Route Static Timing - Analyze Post-Place & Route Static Timing(Timing Analyzer)をダブルクリックして、Timing Analyzerを起動。起動したら、ツールバーの右から5番目の砂時計マーク(Analyze against Users Paths by defining Endpoint)をクリックする。
下図のようなダイアログが開く。
Tech_Schma_7_051213.png

前回と同様にSourcesにclkを入れる。DestinationsにはInst_ssgdisp_FreqDivi_lcnt_10、Inst_ssgdisp_FreqDivi_lcnt_11、Inst_ssgdisp_FreqDivi_lcnt_12を入れよう。
それでOKボタンを押す。
Tech_Schma_14_051215.png

ディレイを計算して表示する。
Tech_Schma_15_051215.png

その結果、Inst_ssgdisp_FreqDivi_lcnt_10だけclkパッドからFFまでのディレイは2.952nsで、他のディレイは2.950nsだった。2psしか変わらない。
今まではxc3s200だったが、今度はxc3s1500と大きなFPGAにしてやってみよう。
さっきと同様にFloorplannerでInst_ssgdisp_FreqDivi_lcnt_11、Inst_ssgdisp_FreqDivi_lcnt_12を動かしてみた。下の図はその位置。
Tech_Schma_16_051215.png

さっきと同様に、clkパッドからInst_ssgdisp_FreqDivi_lcnt_10、Inst_ssgdisp_FreqDivi_lcnt_11、Inst_ssgdisp_FreqDivi_lcnt_12間での遅延を見てみる。
Tech_Schma_17_051215.png

そうするとclkパッドからInst_ssgdisp_FreqDivi_lcnt_11が2.355ns、Inst_ssgdisp_FreqDivi_lcnt_10が2.189ns、Inst_ssgdisp_FreqDivi_lcnt_12が2.172nsとなった。Inst_ssgdisp_FreqDivi_lcnt_11とInst_ssgdisp_FreqDivi_lcnt_12間のクロックスキューは183psとなった。これは適当にFFを配置しているので、確かなことはいえないが、大きいFPGAはクロックスキューも大きくなる傾向のようだ。チップが大きいので当たり前だが。。。もっと大きくなると、もっと顕著になる。大きいFPGAを速く動かすのは難しいと言えよう。
  1. 2005年12月16日 23:00 |
  2. Timing Analyzerの使い方
  3. | トラックバック:0
  4. | コメント:0

ISEで任意のパスのディレイを見る方法

ISE7.1iで任意のパスのディレイを見る方法を紹介しようと思う。
サンプル回路は7セグメントLEDのダイナミック点灯の回路。サンプルはここにあります。
ファイルをダウンロードするとdynadisp_test_1ms.ZIPというファイルが出てくる。これをWindows XPだったらダブルクリックで、それ以外だったらソフト(Winzip等)を使って解凍する。
解凍すると、dynadisp_testというフォルダが出てくる。それを開けるとVHDLファイルとまたdynadisp_testというフォルダが出てくる。そのフォルダをまたダブルクリックすると、ISEのプロジェクトファイルdynadisp_test.iseがあるので、それをダブルクリックしてISEを起動する。
そうすると、すでにコンパイル済みのプロジェクトが出てくるので、"Processes for Source"の"Synthesize-XST"を展開して、"View Technology Schematic"をダブルクリックする。(下図参照)
Tech_Schma_1_051213.png

そうすると、一番上の回路図が出てくる。ここで、赤丸の所のアンドックアイコンをクリックして、ISEの外に出そう。(下図参照)
Tech_Schma_2_051213.png

下の図のウインドウが開く。これは一番トップの回路図。赤い矢印のところをダブルクリックすると、下の回路図が開く。
Tech_Schma_3_051213.png

Spartan3のテクノロジにマッピングした回路図が出てくる。(下図参照、注:下図の回路図は上図をクリックしてから、拡大して位置を調整してあります)
Tech_Schma_4_051213.png

CLKから線がつながっている箱がBUFGだ。クロックがファンアウトが大きいのでそれ用のバッファ。黄色いダイアログがプロパティ。赤い線がネットで名前はclk_BUFGPである。
今度は、Inst_ssgdisp_FreqDivi_lcnt_12とswl_3のDフリップフロップを見てみよう。
Tech_Schma_5_051213.png

Tech_Schma_6_051213.png

検索するには左下のInstance ContentsペインからInstancesを展開するとインスタンスがあるので、swl_3とかをクリックすると右の回路図に赤でインスタンスが表示される。
これを覚えておいて、次にTiminig Analyzerを起動しよう。
例によって、Process View - Implement Design - Place & Route - Generate Post-Place & Route Static Timing - Analyze Post-Place & Route Static Timing(Timing Analyzer)をダブルクリックして、Timing Analyzerを起動。起動したら、ツールバーの右から5番目の砂時計マーク(Analyze against Users Paths by defining Endpoint)をクリックする。
下図のようなダイアログが開く。
Tech_Schma_7_051213.png

ここではclkパッドから上で見たInst_ssgdisp_FreqDivi_lcnt_12とswl_3のDフリップフロップまでのクロックパスのディレイを見てみよう。
Find whatのテキストボックスに正規表現で名前を指定してもいいが、今回は数が少ないので左下のResourcesペインからPadsを展開しよう。そうすると、clkパッドがある。clkをクリックして、右真ん中のSourcesペインの>ボタンをクリック。Resourcesの1行目にclkが入る。
次に左下のResourcesペインからFlip-Flopsを展開しよう。Inst_ssgdisp_FreqDivi_lcnt_12を見つけて、クリック。右下のDestinationsペインで>ボタンをクリックすると、同様にResourcesの1行目にInst_ssgdisp_FreqDivi_lcnt_12が入る。同様にswl_3もDestinationsペインの2行目に入れる。
Tech_Schma_8_051213.png

OKボタンをクリックすると、ディレイを計算して表示する。
Tech_Schma_9_051213.png

赤で囲んだのがclkパッドからswl_3フリップフロップまでのディレイ、緑で囲んだのがclkパッドからInst_ssgdisp_FreqDivi_lcnt_12フリップフロップまでのディレイ。それぞれ2.991nsと2.952nsで異なっている。何が違うかというと、clk_BUFGPネットが1.051nsと1.012nsで違っている。これはグローバルバッファのネットである。このようにフリップフロップによっては、クロックのスキューが生じる。
これ以上はFPGA Editorでなければ視覚的にわからない。今日はここまでだが、FPGA Editorでどう見えるかも紹介したい。
  1. 2005年12月13日 20:29 |
  2. Timing Analyzerの使い方
  3. | トラックバック:0
  4. | コメント:0