Forum Discussion

ALega1's avatar
ALega1
Icon for New Contributor rankNew Contributor
3 years ago

PCIE CHANGE SPEED

Good morning, I've a design pcie For Arria 10 based on the IP PCIE SRV-IO gen3 x8. I would like to reconfigure the link speed to 5.0g after FPGA configuration. After some research, I've found the reg specification for hip_reconfig interface on the arria 10 pcie core. After booting we proceed with the access to this register us your timming specification on image :
"Figure 6.6 Hard IP Reconfiguration Bus Timing of Read-Only Registers"
of Arria 10 Avalon-MM Interface document paraph Hard IP Reconfiguration Interface.
After accesing to register, we read the content from address 0x8 and ahead instead from 0x89.

0x89 15:0 Vendor ID. 0x1172
0x8A 15:0 Device ID. 0x0001
7:00x8B Revision ID. 0x01
0x8C 15:0 Class code[23:8]. —
0x8D 15:0 Subsystem vendor ID. 0x1172
0x8E 15:0 Subsystem device ID. 0x0001
0x8F — Reserved. —
0 Advanced Error Reporting. b'0
0x90
3:1 Low Priority VC (LPVC). b'000
7:4 VC arbitration capabilities. b'00001
15:8 Reject Snoop Transaction. b'00000000

We also write the register 0x00 to '0' for enable the writes on that memory area.

After write any value the BIOS cant find the new value. (Including reseting BIOS without FPGA reconfiguration, the value on the bus is correctly written and readed).
This bus is doing nothing on the pcie enumeration, why??? Something missundertood. We need to do something with the (test_in signals??)

After some effords we find also an option on the core instanciation called: speed_change_hwtcl, and under the installation repository, appears to be the next files:

vlog "../../vhd/core_reconfiguration/altpcie_hip_eq_bypass_ph3.v" -work altera_pcie_a10_hip_180
vlog "../../vhd/core_reconfiguration/altpcie_sc_bitsync.v" -work altera_pcie_a10_hip_180
vlog "../../vhd/core_reconfiguration/altpcie_sc_dprio_rd_wr.v" -work altera_pcie_a10_hip_180
vlog "../../vhd/core_reconfiguration/altpcie_sc_dprio_seq.v" -work altera_pcie_a10_hip_180
vlog "../../vhd/core_reconfiguration/altpcie_sc_hip_vecsync2.v" -work altera_pcie_a10_hip_180
vlog "../../vhd/core_reconfiguration/altpcie_sc_lvlsync.v" -work altera_pcie_a10_hip_180
vlog "../../vhd/core_reconfiguration/altpcie_sc_lvlsync2.v" -work altera_pcie_a10_hip_180
vlog "../../vhd/core_reconfiguration/altpcie_sc_dprio_top.v" -work altera_pcie_a10_hip_180
vlog "../../vhd/core_reconfiguration/altpcie_sc_ctrl.v" -work altera_pcie_a10_hip_180

This core connects internally to the hip_reconfig_* interface, and also seams to we writting a new speed on the core but its done on an unspecified address d181???

localparam DPRIO_CTRL_REG_2_TLS = 10'h2;
localparam DPRIO_CTRL_REG_111_CSEB = 10'd111;
localparam DPRIO_CTRL_REG_181_EN_SPD_CHG = 10'd181;

could you please provide a memory map for that register on the hard pcie ip?? Is posible to renegotiate the speed after device is configured?. Thanks in advance and best regard.

8 Replies

  • skbeh's avatar
    skbeh
    Icon for Contributor rankContributor

    The Hard IP reconfiguration interface only can be used to reconfigure the read-only register. For instance, use this interface to modify the device ID register at run time. It cannot be used to change the pcie link speed from Gen3 to Gen2.
    Users need to set the intended link speed during IP parameterization, recompile Quartus to get the .sof, then reconfigure the device.