FC2カウンター FPGAの部屋 XUPV5-LX110T Development SystemでMIGを試す3(ISimでシミュレーション)
FC2ブログ

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

FPGAの部屋

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

XUPV5-LX110T Development SystemでMIGを試す3(ISimでシミュレーション)

XUPV5-LX110T Development SystemでMIGを試す2”の続きで、シミュレーションを試みた。

ModelSimでシミュレーションを行うらしく、sim.do があったが、ISimでシミュレーションをやってみようということで、example_design\sim フォルダのddr_model.v, ddr2_model_parameters.vh, sim_tb_top.v, wiredly.v をプロジェクトに入れて、Simulationを試みた。
しかし、Activateコマンドを実行したところで止まってしまった。エラーログを下に示す。

sim_tb_top.\gen_cs[0].gen[0].u_mem0 .cmd_task: at time 20718860.0 ps ERROR: Activate Failure. Initialization sequence is not complete.


初期化シーケンスが悪いのか?と思い調べた。調査結果を下に示す。

1.    9129.485 ns     All banks PRECHARGE
2.    10111.985 ns        LOAD MODE        
    BA=2, EMR2 値は0000、1X refresh rate
3.    11094.485 ns    LOAD MODE
    BA=3, EMR3 値は0000
4.    12076.985 ns    LOAD MODE
    BA=1, EMR1 値は0004、Outputs Enable, RDQS Disable, DQS# Enable, OCD exit, Rtt=75Ω, Posted CAS# = 0, Output Drive Strength Full, DLL Enable
5.    13059.485 ns    LOAD MODE
    BA=0, MR 値は0742、Fast exit, Write Recovery = 4, DLL Reast = Yes, CAS Latency = 4, Sequential, Burst Length = 4
6.    14821.985 ns    All banks PRECHARGE
7.    15804.485 ns    REFRESH
8.    16786.985 ns    REFRESH
9.    17769.485 ns    LOAD MODE
    BA=0, MR 値は0642、Fast exit, Write Recovery = 4, DLL Reast = No, CAS Latency = 4, Sequential, Burst Length = 4
10.    18751.985 ns    LOAD MODE
    BA=1, EMR1 値は0384、Outputs Enable, RDQS Disable, DQS# Enable, Enable OCD defaults, Rtt=75Ω, Posted CAS# = 0, Output Drive Strength Full, DLL Enable
11.    19734.485 ns    LOAD MODE
    BA=1, EMR1 値は0004、Outputs Enable, RDQS Disable, DQS# Enable, OCD exit, Rtt=75Ω, Posted CAS# = 0, Output Drive Strength Full, DLL Enable
12.    20716.985 ns    Activate ここでエラーになる。ERROR: Activate Failure. Initialization sequence is not complete.
    BA=0, address=0000
13.    21691.985 ns    Write 当然、ここでもエラー。ERROR: Write Failure. Initialization sequence is not complete.
    BA=0, address=0000、データはFFFFFFFFFFFFFFFFと0000000000000000の繰り返し
14.    21699.485 ns    Write 当然、ここでもエラー。ERROR: Write Failure. Initialization sequence is not complete.
    BA=0, address=0004、データはFFFFFFFFFFFFFFFFと0000000000000000の繰り返し


問題なく初期化シーケンスが実行されている。

原因は何かと探ったら、ddr2_model.vのbaのインスタンスが3ビット、addrのインスタンスが14ビットだった。正しくはbaが2ビット、addrが13ビットで両方共最上位の1ビットの接続がなく、Xとなってしまった。これで、比較演算がうまくいかなくてDDR2 SDRAMモデル(ddr2_model.v)の初期化の認識がうまく行かなかったようだ。

sim.doを見ると、下のようにdefineされていた。

vlog +incdir+. +define+x512Mb +define+sg37E +define+x16 ddr2_model.v



Project NavigatorのDesignのSimulationラジオボタンをクリックして、シミュレーションモードに移行する。Simulation Behavioral Modelを右クリックして、右クリックメニューからProcess Properties...を選択して、ISim Propertiesダイアログを表示する。
-d オプションの欄にx512Mb sg37E x16 を書いてコンパイルし、シミュレーションしてみたが、ba, addrのビット数に変化はなかった。
XPUV5-LX110T_MIG_1_110512.png

次に、ddr2_model_parameters.vh に直接記述した。

`define x512Mb
`define sg37E
`define x16


その結果、ba=2ビット幅、addr=13ビット幅になって正常にシミュレーションが進むようになった。(図を追加)
XPUV5-LX110T_MIG_2_110513.png

Micron社のメモリモデルはdefineする必要があるのを忘れていた。

#ModelSimはdoファイルでwhen を使ってエラーテストも出来るみたいですね?同じようなことをISimでTCLでできないか?と思って、Helpを見てみたところ、isim condition コマンドで、できそうです。そのうちに試してみようと思います。
  1. 2011年05月12日 16:39 |
  2. XUPV5-LX110T
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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