Article ID: 000079563 Content Type: Troubleshooting Last Reviewed: 09/12/2012

Why does my Arria V or Cyclone V PCI Express core fail to downtrain to a x2 or x1 configuration?

Environment

    Quartus® II Subscription Edition
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Description

The Arria® V and Cyclone® V Hard IP for PCI Express® IP Cores do not downtrain to x1 or x2 from a x4 or x8 configurations.

Resolution

The workaround is to correct the Verilog HDL code in altpcie_av_hip_128_bit_atom.v that sets the number of lanes. This correction should be made to the file located in the Quartus® II installation directory <quartus12.0_install_path>\ip\altera\altera_pcie\altera_pcie_av_hip_ast.  Be sure that any copy of this file located in the project folder due to the MegaWizard™ or Qsys tools are deleted and the PCIe variant regenerated.

Replace this incorrect code:

wire rxstatus_err;

assign rxstatus_err = (pld8grxstatus0[2] | pld8grxstatus1[2] | pld8grxstatus2[2] | pld8grxstatus3[2] | pld8grxstatus4[2] | pld8grxstatus5[2] | pld8grxstatus6[2] | pld8grxstatus7[2]);

assign rxstatus_err = pld8grxstatus0[2];

With this corrected version:

wire rxstatus_err rxstatus_err_x1, rxstatus_err_x4, rxstatus_err_x8;

assign rxstatus_err_x8 = (pld8grxstatus0[2] | pld8grxstatus1[2] | pld8grxstatus2[2] | pld8grxstatus3[2] | pld8grxstatus4[2] | pld8grxstatus5[2] | pld8grxstatus6[2] | pld8grxstatus7[2]);

assign rxstatus_err_x4 = (pld8grxstatus0[2] | pld8grxstatus1[2] | pld8grxstatus2[2] | pld8grxstatus3[2] );

assign rxstatus_err_x1 = pld8grxstatus0[2] ;

assign rxstatus_err = (lane_act==4\'b1000)?rxstatus_err_x8:(lane_act==4\'b0100)?rxstatus_err_x4:rxstatus_err_x1;

This issue will be fixed in future version of the Arria V and Cyclone V Hard IP for PCI Express IP Cores.

Related Products

This article applies to 2 products

Cyclone® V GX FPGA
Arria® V GX FPGA

1