Article ID: 000077043 Content Type: Troubleshooting Last Reviewed: 08/07/2023

Why does my Hard IP for PCI Express remain in the hot reset state for more than 2ms after the Host exits?

Environment

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Description

Due to a problem with the Altera® Hard IP for PCI® Express variants which use the Soft Reset Controller (SRC), it might not leave the hot reset state within the required time.

Note:  Gen2 designs in Quartus release 13.1 or later, and all Gen 3 designs, for the Stratix® V and Arria® V GZ devices, require using the SRC. Other devices do not use the SRC.

The sequence for hot reset is as follows:

  • The PCIe host initiates a hot reset and enters its hot reset state.
  • The Hard IP enters it\'s hot reset state.
  • Once the PCIe host leaves it\'s hot reset state, the Hard IP should remain in hot reset for an additional 2ms and then exit to Detect.Quiet, per the PCIe specification. 

However, in designs that use the SRC, the 2ms timeout will be restarted if the receivers toggle locked_to_data on any of the active lanes.  If excessive noise exists on any of the lanes, the receivers might toggle locked_to_data. Each toggle of locked_to_data causes the 2ms counter to be restarted, potentially forever, leaving the Hard IP in a constant hot reset state.

Resolution

To work around this issue, perform the following steps.

Open the file altpcie_rs_serdes.v,

Find and comment out the code below

dl_ltssm_r  <= ltssm;
dl_ltssm_rr <= dl_ltssm_r; 
if ((dl_ltssm_r == 5\'h14) && (rx_signaldetect_sync[7:0]==8\'h0) && (hotreset_cnt>20\'h0)) begin
     hotreset_cnt <= hotreset_cnt-20\'h1; 
end
else begin

hotreset_cnt  <= (test_sim==1\'b1)?20\'h10:(rc_inclk_eq_125mhz==1\'b1)?20\'h3D091:20\'h7A121;

end
hotreset_2ms  <= (hotreset_cnt==20\'h1)?1\'b1:1\'b0;

 

Insert the following lines:

dl_ltssm_r  <= ltssm;
dl_ltssm_rr <= dl_ltssm_r;
if((dl_ltssm_r == 5\'h14) && (dl_ltssm_rr != 5\'h14)) begin

hotreset_cnt  <= (test_sim==1\'b1)?20\'h10:(rc_inclk_eq_125mhz==1\'b1)?20\'h3D091:20\'h7A121;

end
if(hotreset_2ms == 1\'b1) begin
    exits_hotreset <= 1\'b0;
end
else if ((dl_ltssm_r == 5\'h14) && (rx_signaldetect_sync[7:0]==8\'h0)) begin
    exits_hotreset <= 1\'b1;
end
if ((exits_hotreset == 1\'b1) && (hotreset_cnt > 20\'h0)) begin
    hotreset_cnt <= hotreset_cnt-20\'h1;
end
hotreset_2ms  <= (hotreset_cnt==20\'h1)?1\'b1:1\'b0;

Related Products

This article applies to 4 products

Arria® V GZ FPGA
Stratix® V GS FPGA
Stratix® V GT FPGA
Stratix® V GX FPGA