FC2カウンター FPGAの部屋 ISE10.1iのXPower Analyzerを使ってみる4
FC2ブログ

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

FPGAの部屋

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

ISE10.1iのXPower Analyzerを使ってみる4

最初に、この前のプロジェクトをVirtex-5でやってみたのだが、DDRレジスタのアトリビュートを書けといわれてしまったので、とりあえずはやめることにした。

今回はModelSimで出力したVCDファイルをXPowerに読み込ませて、実際のトグルレートを取得する方法をやってみたいと思う。
今回はDDR SDRAMコントローラのバーストテストのプロジェクトで試してみることにした。これは、かなりの高いトグルレートが期待できると思う。
その場合、DDR SDRAMコントローラは電源があがってクロックがでてから200us wait する必要があるので、その間はどの信号もステーブルになっている。それなので、シミュレーションパターンが通常の状態と変わってしまうこと考えられる。その辺も考慮した方法も考えることにする。
まずはModelSimでタイミング・シミュレーションを行う。タイミング・シミュレーションについてはこの前の記事1記事2を参照のこと。
テストベンチにVCDファイルを出力する記述を追加する。やり方はISE10.1iのXPowerの使い方を参照。(ここにはVHDLでのVCDファイルの出力方法についても記述がある)
さて、ModelSimでタイミングシミュレーションする際に、SDFファイルを付加するとセットアップ時間違反で信号がXになってしまうことがあるので、ISEで出力したPost-Route Simukation Model (ddrtest_timesim.v) の中の$sdf_annotate をコメントアウトしておいたほうが良い。

// initial $sdf_annotate("ddrtest_timesim.sdf");


これは、mixiのVeritak友の会でVeritakの作者のたっくさんに教えていただいた。(たっくさん、ありがとうございました。)
また、テストベンチDDRtest_tb.v にVCDファイルを出力する記述を追加する。

    initial begin
        $dumpfile("DDRtest.vcd");
        $dumpvars(1, DDRtest_tb.DDRtest_inst);
        #250000000    $finish;
    end


これで、最初から終了までの波形がVCDファイルに保存される。$dumpvarsの括弧の中の右側のDDRtest_tb.DDRtest_inst のDDRtest_tb はテストベンチのモジュール名、DDRtest_inst はDDR SDRAMコントローラのバーストテストのインスタンス名だ。これで出来たVCDファイルを全波形VCDファイルと呼び、ファイル名をDDRtest.vcdとする。(Verilogファイルに書いてあるけど。。。ファイル容量は145MB)

次に、DDR SDRAMにバーストで読み書きし始める時刻から、VCDファイルを設定してダンプすることにする。これを部分波形VCDファイルと呼び、ファイル名をDDRtest_part.vcd とする。

    initial begin
        #203153000;
        $dumpfile("DDRtest_part.vcd");
        $dumpvars(1, DDRtest_tb.DDRtest_inst);
        #46847000    $finish;
    end


ちょうど、203.153us 程度からダンプするとバーストアクセスが続く。(このファイル容量は33.7MB)

どちらも250us間、 ModelSim XE3 Starter でタイミング・シミュレーションすると、うちのパソコンで1時間と18分かかる。あまりやりたくないのがお分かりいただけることと思う。2つなので、合計2時間36分だ。Veritakでやろうとしたが、Veritakの吐いたVCDはXPowerで読み込めないようだった。これをやる時にはModelSim XE3の正規版か、PE、SEでないとやっていられない。昨日はミスったので、1日つぶれてしまった。

ModelSimでシミュレーションしている様子を下に示す。
XPower_14_090204.png

ISEから例によってXPowerを起動する。これがデフォルトの画面。
XPower_15_090204.png

さてこれに、VCDファイルを読み込もう。FileメニューからOpen Design... を選択する。
XPower_16_090204.png

そうするとOpen Designダイアログが開くので、Design file、Physical Constrains file、Simulation file を選択し、OKボタンをクリックする。
XPower_17_090204.png

これでVCDファイルが読み込まれた。今回読み込んだのはDDRtest.vcd(全波形VCDファイル)だ。読み込んだ後のXPowerのSummuyは下のようになる。
XPower_18_090204.png

次はDDRtest_part.vcd(部分波形VCDファイル)を下に示す。
XPower_19_090204.png

ジャンクション温度の比較はデフォルトが42.7度C、DDRtest.vcd(全波形VCDファイル)が42.5度C、DDRtest_part.vcd(部分波形VCDファイル)が42.6度Cだ。
次に、Signal -> Data の値の違いを見ていこう。いずれの図もSignal Rateの大きい順から並べ替えてある。
最初にデフォルト。
XPower_20_090204.png

DDRtest.vcd(全波形VCDファイル)。25%以上がない。
XPower_21_090204.png

DDRtest_part.vcd(部分波形VCDファイル)。
XPower_22_090204.png

いろいろな値がある。

次にIOsを見てみよう。
最初にデフォルトから。当然ながらToggle Rate 12.5% にそろっている。
XPower_23_090204.png

今度はDDRtest.vcd(全波形VCDファイル)。
XPower_24_090204.png

DDRtest_part.vcd(部分波形VCDファイル)。
XPower_25_090204.png

やはり、部分波形VCDファイルの方が全波形VCDファイルよりもトグル・レートが高い。やはりこっちのほうがより実態に近いと思われる。
今回はFF使用率が6%と小さく違いがわからなかった。シミュレーション時間が2時間以上もかかっているので、元が取れていない気がする。
FFやIOをかなり使用して動的な消費電力が増えると、やる意味が出てくると思うが、その場合にはModelSim正規版を使ってもシミュレーション時間がかかることになると思う。やはり、消費電力に敏感な用途ではやる意味があると思われるが、いい加減で十分な用途では適当にトグル・レート入れて試してみたほうが良いような気がする。
  1. 2009年02月06日 21:47 |
  2. その他のXilinxのツールについて
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1032-eed5c88d
この記事にトラックバックする(FC2ブログユーザー)