最初に、
この前のプロジェクトを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でシミュレーションしている様子を下に示す。

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

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

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

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

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

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

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

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

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

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

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

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