AR# 46966

MIG v3.91 Spartan-6 MCB - Suspend does not exit

描述

In MIG v3.91 available in ISE 14.1 or earlier versions, the MCB can get stuck in self-refresh mode and operation does not resume.

解决方案

Version Fixed: ISE14.2(v3.92)

 

This is due to an issue in the "mcb_soft_calibration.v/vhd" rtl.  

To work around this issue, do the following:

Locate this section of RTL within the "mcb_soft_calibration.v/.vhd":

 

/ SELFREFRESH should only be deasserted after PLL_LOCK is asserted.
// This is to make sure MCB get a locked sys_2x_clk before exiting
// SELFREFRESH mode.

always @ ( posedge UI_CLK) begin
  if (RST)
    SELFREFRESH_MCB_REQ <= 1'b0;
  else if (PLL_LOCK_R2 && ~SELFREFRESH_REQ_R3 && STATE == START_DYN_CAL)//
    SELFREFRESH_MCB_REQ <=  1'b0;
  else if (STATE == START_DYN_CAL && SELFREFRESH_REQ_R3) 
    SELFREFRESH_MCB_REQ <= 1'b1;
end

 

Modify this section to the following:

 

// SELFREFRESH should only be deasserted after PLL_LOCK is asserted.
// This is to make sure MCB get a locked sys_2x_clk before exiting
// SELFREFRESH mode.

always @ ( posedge UI_CLK) begin
  if (RST)
    SELFREFRESH_MCB_REQ <= 1'b0;
  else if (PLL_LOCK_R2 && ~SELFREFRESH_REQ_R3 )//
    SELFREFRESH_MCB_REQ <=  1'b0;
  else if (STATE == START_DYN_CAL && SELFREFRESH_REQ_R3) 
    SELFREFRESH_MCB_REQ <= 1'b1;
end

 

 The issue arises if the RTL was coded to wait for START_DYN_CAL state when SELFREFRSH_MCB_REQ is deasserted, which causes the calibration state machine to get stuck at either the INCREMENT or DECREMENT state.

 If you use the self-refresh mode, you should integrate this RTL code change.

 

Revision History

9/5/2014 - Initial Release

AR# 46966
日期 04/01/2016
状态 Active
Type 综合文章
器件
Tools More Less
IP