Article ID: 000097527 Content Type: Troubleshooting Last Reviewed: 12/11/2023

Why does Intel Agilex® 7 R-Tile Compute Express Link* (CXL) 1.1/2.0 FPGA IP not include the ATS capability?

Environment

  • Intel® Quartus® Prime Pro Edition
  • OS Independent family

    BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Description

    Due to a problem in the Intel® Quartus® Prime Pro Edition Software version 23.4 and earlier, there are no ATS (Address Translation Service) Capability Registers in the Intel Agilex® 7 R-Tile Compute Express Link* (CXL) 1.1/2.0 FPGA IP, which is a required feature for the CXL.io path to translate virtual address to physical address according to the Compute Express Link* (CXL) specification.

    Resolution

    This problem will not be fixed in future releases of the Intel® Quartus® Prime Edition Software. 

    To work around this problem, implement additional RTL code by following the description in Intel Agilex® 7 R-Tile Compute Express Link* (CXL) 1.1/2.0 FPGA IP User Guide as below:

    IP allows you to add extended capabilities to PF1 starting at address 0xE00. The design example includes a null extended capability configuration register at offset 0xE00, which terminates the extended capability chain.

    Refer to the following code example:

    1. Open  /hardware_test_design/common/ex_default_csr/ex_default_csr_avmm_slave.sv.

    2. Add the ATS capability registers:

    //ATS 00E00+00E04
    reg [4:0] ats_stu;
    reg       ats_en;

    //00E00 Capability Header
    localparam EX_CAP_HEADER_ATS = 32'hE101000f;
    //00E04 Control
    //{ats_en,10'h0,ats_stu,16'h0020}

    always @(posedge clk ) 
        if (!reset_n) begin
            ats_stu      <=  5'b0;
            ats_en       <=  1'b0;
        end else if (write && config_access)begin
               case(address[20:0])
               21'h00E04 : begin
                           ats_stu      <=  writedata[20:16];
                           ats_en       <=  writedata[31];
                           end            
               default ;
               endcase
        end

    always @(posedge clk ) 
        if (!reset_n) begin
            readdata  <= 32'h0;
        end else if(read&&config_access)begin
               case(address[20:0])
                 21'h00E00 : readdata <= EX_CAP_HEADER_ATS;
                 21'h00E04 : readdata <= {ats_en,10'b0,ats_stu,16'h0020} ;
                 default   : readdata <= 32'hffff_ffff;
               endcase
        end

     

    Related Products

    This article applies to 1 products

    Intel Agilex® 7 FPGAs and SoC FPGAs I-Series