|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
请教一个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)
...
谢谢指点~ |
|