微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > ddr2,由于init_done未拉高,ISE前仿真在24us停止

ddr2,由于init_done未拉高,ISE前仿真在24us停止

时间:10-02 整理:3721RD 点击:
请教一个DDR2的仿真问题,非常感谢!
ISE 13.2
MIG 3.6
FPGA XC5VLX50T
DDR2: MT4HTF3264HY-667F1
ddr2_model.v 中有如下语句
                        if (!init_done) begin
                            $display ("%m: at time %t ERROR: %s Failure.  Initialization sequence is not complete.", $time, cmd_string[cmd]);
                            if (STOP_ON_ERROR) $stop(0);
完整的ACTIVATE部分如下:
ACTIVATE : begin
                        if (`BANKS == 8) begin
                            tfaw_cntr = 0;
                            for (i=0; i<`BANKS; i=i+1) begin
                                if ($time - tm_bank_activate[i] < TFAW) begin
                                    tfaw_cntr = tfaw_cntr + 1;
                                end
                            end
                            if (tfaw_cntr > 3) begin
                                $display ("%m: at time %t ERROR:  tFAW violation during %s to bank %d", $time, cmd_string[cmd], bank);
                            end
                        end
                        if (!init_done) begin
                            $display ("%m: at time %t ERROR: %s Failure.  Initialization sequence is not complete.", $time, cmd_string[cmd]);
                            if (STOP_ON_ERROR) $stop(0);
                        end else if (active_bank[bank]) begin
                            $display ("%m: at time %t ERROR: %s Failure.  Bank %d must be Precharged.", $time, cmd_string[cmd], bank);
                            if (STOP_ON_ERROR) $stop(0);
                        end else begin
                            if (addr >= 1<<ROW_BITS) begin
                                $display ("%m: at time %t WARNING: row = %h does not exist.  Maximum row = %h", $time, addr, (1<<ROW_BITS)-1);
                            end
                            if (DEBUG) $display ("%m: at time %t INFO: %s bank %d row %h", $time, cmd_string[cmd], bank, addr);
                            active_bank[bank] = 1'b1;
                            active_row[bank] = addr;
                            tm_bank_activate[bank] <= $time;
                            tm_activate <= $time;
                        end
                    end

因此,由于在Activate时,init_done仍未拉高,因此仿真停止,过程和提示信息如下:
1.用user_design/rtl 中的文件 + user_design/sim 中的文件,进行ISE仿真时,
 由于在Activate时,init_done仍未拉高,因此仿真停止,提示信息如下
  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.
2.用example_design/rtl 中的文件 + example_design/rtl 中的文件,进行ISE仿真时,出现同样的问题
仿真目录如下:
Automatic `include`
ddr2_model_parameters.vh
sim_tb_top.v
u_delay_dq - WireDelay (wiredly.v)
u_delay_dqs - WireDelay (wiredly.v)
u_delay_dqs_n - WireDelay (wiredly.v)
u_mem_controller - tt_mig_beta (tt_mig_beta.v)
u_ddr2_delay
u_ddr2_infrastructure
...
...
u_mem0 -ddr2_model (ddr2_model.v)
u_mem1 -ddr2_model (ddr2_model.v)
...

谢谢指点~

xilinx生成mig核时不是有,仿真的例子,你试了吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top