xilinx DDR3仿真求教 ERROR: Load Mode Failure. All banks must be Precharged.
时间:10-02
整理:3721RD
点击:
最近学习MIG,仿真DDR3 已经在testbench里 将控制器于ddr3 model连接 但是仿真时出现以下情况
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39669621.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000020 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39670157.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000021 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39670693.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000022 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39671229.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000023 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39671765.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000024 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39672301.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000025 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39672837.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000026 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39673373.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000027 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39673909.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000020 data = a7
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39674445.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000021 data = a6
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39674981.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000022 data = a5
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39675517.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000023 data = a4
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39676053.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000024 data = a3
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39676589.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000025 data = a2
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39677125.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000026 data = a1
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39677661.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000027 data = a0
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.main: at time 39678733.0 ps INFO: Sync On Die Termination Rtt_NOM = 0 Ohm
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.cmd_task: at time 39699101.0 ps ERROR: Load Mode Failure. All banks must be Precharged.[/code]
以下是操作控制器的简单代码
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39669621.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000020 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39670157.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000021 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39670693.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000022 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39671229.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000023 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39671765.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000024 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39672301.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000025 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39672837.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000026 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39673373.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000027 data = xx
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39673909.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000020 data = a7
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39674445.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000021 data = a6
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39674981.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000022 data = a5
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39675517.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000023 data = a4
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39676053.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000024 data = a3
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39676589.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000025 data = a2
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39677125.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000026 data = a1
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.data_task: at time 39677661.0 ps INFO: WRITE @ DQS= bank = 0 row = 0001 col = 00000027 data = a0
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.main: at time 39678733.0 ps INFO: Sync On Die Termination Rtt_NOM = 0 Ohm
tb.mem_rnk[0].gen_mem[0].u_comp_ddr3.cmd_task: at time 39699101.0 ps ERROR: Load Mode Failure. All banks must be Precharged.[/code]
以下是操作控制器的简单代码
- always @(posedge ui_clk)
- begin
- if(init_calib_complete) begin
- cnt<=cnt+1'b1;
- if(cnt==4'b0101) begin
- cnt<=4'b0;
- // sig<=1'b1;
- end
- end
-
- end
-
- always @(posedge ui_clk)
- begin
- if( app_rdy &!sig) begin
- app_en<=1'b1;
- app_cmd<=3'b0;
- app_wdf_wren<=1'b1;
- app_wdf_end<=1'b1;
- app_wdf_mask<=0;
- app_wdf_data<={8'ha0,8'ha1,8'ha2,8'ha3,8'ha4,8'ha5,8'ha6,8'ha7};
- app_addr<={3'b000,15'b0,1'b1,10'b100000};
- sig<=1'b1;
- end
- end
-
- always @(posedge ui_clk)
- begin
- if(sig)begin
- app_en<=1'b0;
- app_wdf_wren<=1'b0;
- app_wdf_end<=1'b0;
- app_addr<=app_addr+8;
- sig<=1'b0;
- end
- end
ERROR: Load Mode Failure. All banks must be Precharged.[/code] 就是这个错误,而且不知道为什么 对地址写数据,先写的是XX 然后才是正确的
检查时钟。
Load Mode Failure. All banks must be Precharged.[/code]
请问这个也是时钟错误引起的么? sys_clk 给的 900m左右 ref_clk给的200m
系统时钟怎么会900M?你弄错了吧。参考时钟200M是正确的。 Load Mode Failure. All banks must be Precharged.[/code]----这个错误我没遇到过,基本可以确定是你弄错了时钟引起的。如果弄好时钟还有这个错误,说明你对引脚的操作没有符合数据手册给出的时序。首先必须等初始化完成信号拉起才能进行其他操作。不能上来就输入数据。
