Suzaku-V(SZ410)用DDR2 SDRAMコントローラをランダムなバースト長でテストするためにDDR2_burst_test.v を書いので、シミュレーションをしてみた。
DDR2_burst_test.v の上にテストベンチとして、DDR2_burst_test_tb.v を作って、Veritakでシミュレーションしてみた。
シミュレーションしてみたところ、コントローラのバグを発見した。テストベンチのバグもたくさんあったが、修正していったところシミュレーションも50us位の間、エラーなく通るようになった。
シミュレーションの一部を紹介する。下の図がシミュレーション波形だ。

1.最初のM1マーカー(最初の緑の縦線)はプリチャージをあらわしている。前のREADやWRITEとこれから行うWRITEやREADのROWアドレスとバンクが合わないのでプリチャージをおこなう。
2.M2マーカー(2番目の緑の線)は、これから使用するROWアドレスとバンクをアクティベートする。これでセンスアンプにキャッシュされた。
3.M3マーカー(3番目の緑の線)でWRITEコマンドを発行している。ddr2_dq に書き込むデータが、ddr2_dqs, ddr2_dqs_n にサンプルクロックが出力されている。
4.M4マーカー(4番目の緑の線)でREADコマンドが発行されている。CASレイテンシー3クロック後にddr2_dqにリードデータが、ddr2_dqsにクロックが出力される。なお、コマンドレジスタ設定時にDQS#はディスエーブルしてあるので、ddr2_dqs_nにクロックは出力されない。
5.黒のカーソルと赤のカーソルの間にRAEDで受け取ったデータが出力されるので、期待値と照合する。
1.~5.をランダムなバースト長で繰り返しテストする。LED0がついている間はエラーなしで、エラーが起こるとLED0は消え、LED1が点灯する。

シミュレーションは大丈夫そうなので、UCFファイルを作って実際にインプリメントしてやってみることにする。
- 2008年08月13日 11:24 |
- DDR SDRAMコントローラ
-
| トラックバック:0
-
| コメント:0