Article ID: 000080836 Content Type: Troubleshooting Last Reviewed: 12/28/2022

Why does the Intel® Stratix® 10 PCI Express* Avalon®-MM Hard IP with External descriptor controller example design hang when more than 8 descriptors are programmed?

Environment

    Intel® Quartus® Prime Pro Edition
    Avalon-MM Intel® Stratix® 10 Hard IP for PCI Express
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Description

Due to incorrect address mapping of the router logic generated by the Intel® Quartus® Prime Pro Platform Designer tool, the Intel® Stratix® 10 PCIe* Avalon®-MM Hard IP with External descriptor controller example design will hang when more than 8 descriptors are programmed.

Resolution

To work around this problem, manually correct the RTL files generated by the Intel® Quartus® Prime Pro Platform Designer tool:

1.   Search *altera_merlin_router*.sv under the project workspace and find the files shown below:

../altera_merlin_router_xxx/sim/altera_merlin_router_xxx (simulation flow)

../altera_merlin_router_xxx/syn/altera_merlin_router_xxx (implementation flow) 

2.   Open each file to confirm if the following lines exist, then modify them accordingly:

Original lines should be:       

        //-------------------------------------------------------       

        // Figure out the number of bits to mask off for each slave span       

        // during address decoding       

        //-------------------------------------------------------       

        localparam PAD0 = log2ceil(64'h2000 - 64'h0);       

        localparam PAD1 = log2ceil(64'h1000100 - 64'h1000000);       

        localparam PAD2 =log2ceil(64'h1002100 - 64'h1002000);

Change to:       

        //-------------------------------------------------------       

        // Figure out the number of bits to mask off for each slave span       

        // during address decoding       

        //-------------------------------------------------------       

        localparam PAD0 = log2ceil(64'h2000 - 64'h0);       

        localparam PAD1 = log2ceil(64'h1001000 - 64'h1000000);   

        localparam PAD2 = log2ceil(64'h1003000 - 64'h1002000);

3.     Run the simulation or compilation flow again.

Related Products

This article applies to 1 products

Intel® Stratix® 10 FPGAs and SoC FPGAs

1