FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP

Agilex5: XVCR Toolkit

K606
新分销商 III
1,281 次查看

I am trying to use the XVCR Toolkit on the Atum A5 by following the user guide

 

SPEC:

In Section 3.7.2 the clock connections are defined:

Screenshot 2025-07-29 143414.png

I am using PMA clocking, with a Phase Compensation FIFO and 2x Width transfer, which implies the use of o_tx/rx_clkout2, the Word clock and a 2x division factor. Table 61 also suggests we do not need custom cadence gen.

 

In Section 3.9.6 the reset sequence is defined:

Screenshot 2025-07-29 140006.png

Which implies this snippet should be used at the top level HDL:

always @(posedge system_clk_100) begin
      if (system_reset) begin
            gts_i_tx_reset <= 1'b1;
            gts_i_rx_reset <= 1'b1;
      end else begin
            if((gts_o_tx_reset_ack==1'b1) && (gts_o_rx_reset_ack==1'b1)) begin
                  gts_i_tx_reset <= 1'b0;
                  gts_i_rx_reset <= 1'b0;
            end
      end
end

 

In Section 3.11.1, the JTAG connection to the GTS is defined:

Screenshot 2025-07-29 141624.png

Screenshot 2025-07-29 132608.png

Which suggests to define the following snippet in the HPS definition:

.intel_directphy_gts_0_reconfig_address                           (address_bridge[17:0])

 

DESIGN:

All of this combines into the following GTS configuration and system definition:

GTS PMA/FEC PHY settings changed from default:
------------------------------
Datapath clocking mode                      : PMA
TX/RX PMA interface FIFO mode               : Register
TX/RX clock clock source                    : Word Clock
Enable TX/RX_clkout2 port                   : YES
TX/RX clkout_2 clock source                 : Word Clock
TX/RX _clkout2 div by                       : 2
Enable Avalon Memory Mapped interface       : YES
Enable Direct PHY soft CSR                  : YES
Enable Debug Ednpoint on Avalon interface   : YES

With the following Qsys connections, and top level RTL connections:

Screenshot 2025-07-29 171808.png

module golden_top(...);
...
// GTS signals
reg gts_i_tx_reset, gts_i_rx_reset;
wire gts_o_tx_reset_ack, gts_o_rx_reset_ack;
wire gts_o_tx_clkout, gts_o_rx_clkout;
wire [79:0] gts_i_tx_parallel_data;
wire [79:0] gts_o_rx_parallel_data;

// jtag bridge
wire write_bridge, read_bridge;
wire [31:0] address_bridge;
wire [31:0] writedata_bridge;
wire [31:0] readdata_bridge;
wire [3:0] byteenable_bridge;
wire waitrequest_bridge;
wire readdatavalid_bridge;

// reset
always @(posedge system_clk_100) begin
      if (system_reset) begin
            gts_i_tx_reset <= 1'b1;
            gts_i_rx_reset <= 1'b1;
      end else begin
            if((gts_o_tx_reset_ack==1'b1) && (gts_o_rx_reset_ack==1'b1)) begin
                  gts_i_tx_reset <= 1'b0;
                  gts_i_rx_reset <= 1'b0;
            end
      end
end

qsys_top soc_inst (
...
.intel_directphy_gts_0_i_rx_cdr_refclk_p_clk                      (REFCLK),
.intel_directphy_gts_0_i_tx_pll_refclk_p_clk                      (REFCLK),
.intel_directphy_gts_0_i_tx_reset_tx_reset                        (gts_i_tx_reset),
.intel_directphy_gts_0_i_rx_reset_rx_reset                        (gts_i_rx_reset),
.intel_directphy_gts_0_o_tx_reset_ack_tx_reset_ack                (gts_o_tx_reset_ack),
.intel_directphy_gts_0_o_rx_reset_ack_rx_reset_ack                (gts_o_rx_reset_ack),
.intel_directphy_gts_0_i_tx_parallel_data_i_tx_parallel_data      (gts_i_tx_parallel_data),
.intel_directphy_gts_0_o_rx_parallel_data_o_rx_parallel_data      (gts_o_rx_parallel_data),
.intel_directphy_gts_0_reconfig_write                             (write_bridge),
.intel_directphy_gts_0_reconfig_read                              (read_bridge),
.intel_directphy_gts_0_reconfig_address                           (address_bridge[17:0]),
.intel_directphy_gts_0_reconfig_byteenable                        (byteenable_bridge),
.intel_directphy_gts_0_reconfig_writedata                         (writedata_bridge),
.intel_directphy_gts_0_reconfig_readdata                          (readdata_bridge),
.intel_directphy_gts_0_reconfig_waitrequest                       (waitrequest_bridge),
.intel_directphy_gts_0_reconfig_readdatavalid                     (readdatavalid_bridge),
.gts_jtag_master_0_master_address                                 (address_bridge),
.gts_jtag_master_0_master_readdata                                (readdata_bridge),
.gts_jtag_master_0_master_read                                    (read_bridge),
.gts_jtag_master_0_master_write                                   (write_bridge),
.gts_jtag_master_0_master_writedata                               (writedata_bridge),
.gts_jtag_master_0_master_waitrequest                             (waitrequest_bridge),
.gts_jtag_master_0_master_readdatavalid                           (readdatavalid_bridge),
.gts_jtag_master_0_master_byteenable                              (byteenable_bridge),
...
);
...
endmodule

 

The boot output:

TFTP from server **bleep**.**bleep**.xx.x; our IP address is **bleep**.**bleep**.xx.x
Filename 'fpga/soc_system_base.rbf'.
Load address: 0x90000000
Loading: #################################################################
         #################################################################
         #########
         2 MiB/s
done
Bytes transferred = 2031616 (1f0000 hex)
...
FPGA reconfiguration failed!Command 'load' failed: Error -110
FPGA not ready. Bridge reset aborted!

 

Did I overlook something? Any help would be greatly appreciated!

Many thanks!

 

标签 (1)
0 项奖励
4 回复数
Ash_R_Intel
员工
982 次查看

Hi,

As I understand, you need to make the XCVR toolkit work. You've enabled options and made connections as per the following method:

3.12.2. Using JTAG to Avalon Master Bridge Intel FPGA IP


May I know how are you handling the reconfig_clk and reconfig_reset signals? I don't see them in the code snippet.


Regards


0 项奖励
K606
新分销商 III
824 次查看

Hi,

I have connected them to the HPS system clock and the system reset.

Thanks.

0 项奖励
Ash_R_Intel
员工
523 次查看

Hi,

From the error message I think the FPGA is not fully configured that why it throws error. Can you try configuring the FPGA with a simpler code, without XCVRs first? Also, make sure that the XCVR reference clock is running and stable before and during configuration.


Regards


0 项奖励
Ash_R_Intel
员工
131 次查看

As recommended please check the FPGA configuration first for the issue. I am closing the case now. However, it will still be open for community members to comment on. Please feel free to open a new case if you need more support.


Regards


0 项奖励
回复