在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3962|回复: 6

[求助] xilinx DDR3仿真求教 ERROR: Load Mode Failure. All banks must be Precharged.

[复制链接]
发表于 2014-10-30 09:16:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近学习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]




以下是操作控制器的简单代码




  1. always @(posedge ui_clk)
  2.       begin
  3.           if(init_calib_complete) begin
  4.           cnt<=cnt+1'b1;
  5.                if(cnt==4'b0101) begin
  6.                  cnt<=4'b0;
  7.               //   sig<=1'b1;
  8.                  end
  9.           end
  10.          
  11.       end
  12.               
  13.   always @(posedge ui_clk)
  14.       begin
  15.       if( app_rdy &!sig) begin
  16.             app_en<=1'b1;
  17.             app_cmd<=3'b0;
  18.             app_wdf_wren<=1'b1;
  19.             app_wdf_end<=1'b1;
  20.             app_wdf_mask<=0;
  21.             app_wdf_data<={8'ha0,8'ha1,8'ha2,8'ha3,8'ha4,8'ha5,8'ha6,8'ha7};
  22.             app_addr<={3'b000,15'b0,1'b1,10'b100000};  
  23.             sig<=1'b1;            
  24.        end              
  25.       end

  26.    always @(posedge ui_clk)
  27.         begin
  28.             if(sig)begin
  29.             app_en<=1'b0;
  30.             app_wdf_wren<=1'b0;
  31.             app_wdf_end<=1'b0;
  32.             app_addr<=app_addr+8;
  33.             sig<=1'b0;
  34.             end
  35.         end
  36.    


复制代码
 楼主| 发表于 2014-10-30 10:43:26 | 显示全部楼层
ERROR: Load Mode Failure.  All banks must be Precharged.[/code]     就是这个错误,而且不知道为什么 对地址写数据,先写的是XX  然后才是正确的
发表于 2014-10-30 14:22:05 | 显示全部楼层
检查时钟。
 楼主| 发表于 2014-10-30 14:38:54 | 显示全部楼层
回复 3# zyzfgpzgh


   Load Mode Failure.  All banks must be Precharged.[/code]



请问这个也是时钟错误引起的么?  sys_clk  给的 900m左右  ref_clk给的200m
发表于 2014-10-30 21:00:25 | 显示全部楼层
系统时钟怎么会900M?你弄错了吧。参考时钟200M是正确的。 Load Mode Failure.  All banks must be Precharged.[/code]----这个错误我没遇到过,基本可以确定是你弄错了时钟引起的。如果弄好时钟还有这个错误,说明你对引脚的操作没有符合数据手册给出的时序。首先必须等初始化完成信号拉起才能进行其他操作。不能上来就输入数据。
发表于 2022-5-11 22:01:38 | 显示全部楼层
请问你当时是怎么解决的,我现在卡在了同一个地方
发表于 2022-5-12 15:44:26 | 显示全部楼层
本帖最后由 Love24 于 2022-5-12 15:45 编辑

简单看了下你的代码,用户侧用的是xilinx的app接口,但是app接口在写操作时,有两个rdy信号,app_rdy是接收写地址和cmd的rdy,另一个是app_wdf_rdy,这个是接收写数据的rdy,你的激励只做了app_rdy的逻辑,实际上app_rdy时,app_wdf_rdy未必也有效。正确的做法是在app_rdy&app_en时发送写地址与写指令,在app_wdf_rdy&app_wdf_wren时发送写数据,且这两个事件的间隔app协议也是有具体要求的(印象里不能相差多于3个cycle,不像axi那样完全独立),简单的做法就是让写地址与写数据同时对齐传输,也就是说等待app_rdy&app_wdf_rdy时,同时发出app_en和app_wdf_wren;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 05:10 , Processed in 0.029280 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表