E-Tile Transceiver PHY User Guide

ID 683723
Date 4/01/2024
Public
Document Table of Contents

3.1.10.1. Unused Transceiver Channels in a Used Tile

For unused channels in a transceiver tile that also includes channels that are used in the design, a single reference clock must be provided for all protected channels in the tile. Therefore, you must ensure that a stable reference clock is available for the protected channels in the tile. This reference clock must be driven into one of the reference clock inputs of the tile. You can select the reference clock input using QSF assignments (see below).

This reference clock must not change dynamically. This is true for both global and instance QSF assignments (see below). In other words, to protect a channel in a used tile, you must specify a stable, not dynamically changing reference clock for the design along with the QSF assignment for each channel, or else Quartus® Prime errors out. The reference clock frequency must be between 125 and 500 MHz.

The reference clock must be either:

  • One of the existing clocks in the design if it is stable and does not change dynamically or
  • An additional, new reference clock

If you choose the additional, new reference clock option, you must add one port per reference clock for each tile in which you want to preserve unused transceiver channels to the top level design file. For example, if you have three tiles in which you want to preserve unused transceiver channels, add three ports in your top-level design and leave these ports unconnected to any internal logic in the design except for QSF purposes (these port names are just examples; you can name the ports anything you want provided that the port names in the top-level design match the port names specified in the QSF assignments):

input wire refclk_preserve_ch0, refclk_preserve_ch1, refclk_preserve_ch2

Then, use these ports in the QSF assignments as shown below.

To create the transceiver activity needed for preservation on unused channels, specify the following QSF assignments in the Quartus® Prime Settings File (.qsf), and specify the reference clock needed to protect these channels:

  • Make a global assignment (this QSF assignment preserves all unused transceiver channels in all tiles; you must select one reference clock for each tile that has at least one unused channel):
    set_global_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL ON
    
    #instance assignments for 3 tiles
    set_location_assignment <REFCLK_PIN_1> -to <REFCLK_PORT_1>
    set_instance_assignment -name HSSI_PARAMETER "refclk_divider_use_as_bti_clock=true" -to <REFCLK_PORT_1>
    set_instance_assignment -name HSSI_PARAMETER “refclk_divider_input_freq=<frequency in Hz>" -to <REFCLK_PORT_1>
    
    set_location_assignment <REFCLK_PIN_2> -to <REFCLK_PORT_2>
    set_instance_assignment -name HSSI_PARAMETER "refclk_divider_use_as_bti_clock=true" -to <REFCLK_PORT_2>
    set_instance_assignment -name HSSI_PARAMETER "refclk_divider_input_freq=<frequency in Hz>" -to <REFCLK_PORT_2> 
    
    set_location_assignment <REFCLK_PIN_3> -to <REFCLK_PORT_3>
    set_instance_assignment -name HSSI_PARAMETER "refclk_divider_use_as_bti_clock=true" -to <REFCLK_PORT_3>
    set_instance_assignment -name HSSI_PARAMETER "refclk_divider_input_freq=<frequency in Hz>" -to <REFCLK_PORT_3>
    

    Example messages seen in Quartus® Prime when using this assignment:

    Info: Global preservation of unused transceiver channels is enabled. All unused transceiver channels will be preserved.
    Info: Preserved 136 unused RX channel(s).
    Info: Preserved 136 unused TX channel(s).
    
  • You can also do channel protection with a QSF-based, per-pin assignment:
    set_instance_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL ON -to <CHANNEL_PIN1>
    set_instance_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL ON -to <CHANNEL_PIN2>
    set_location_assignment <REFCLK_PIN>  -to <REFCLK_PORT> // <REFCLK_PORT> is used for preserve above two specific channels in same tile
    set_instance_assignment -name HSSI_PARAMETER "refclk_divider_use_as_bti_clock=TRUE" -to <REFCLK_PORT>
    set_instance_assignment -name HSSI_PARAMETER "refclk_divider_input_freq=<frequency in Hz>" -to <REFCLK_PORT>
    

    Here is an example:

    set_instance_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL ON -to R51
    set_instance_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL ON -to M48
    set_location_assignment PIN_AA40  -to refclk_preserve_ch1 // refclk_preserve_ch1 is used for above two channels
    set_instance_assignment -name HSSI_PARAMETER "refclk_divider_use_as_bti_clock=TRUE" -to refclk_preserve_ch1
    set_instance_assignment -name HSSI_PARAMETER "refclk_divider_input_freq=200000000" -to refclk_preserve_ch1
              

    Example messages seen in Quartus® Prime when using this QSF assignment:

    Info: Channel-specific preservation of unused transceiver channels is enabled
    Info: Unused transceiver channel at location 'R51' will be preserved
    Info: Unused transceiver channel at location 'M48' will be preserved
    Info: Unused transceiver channel at location 'BM13' will be preserved
    Info: Unused transceiver channel at location 'BP7' will be preserved
    Info: Unused transceiver channel at location 'BD7' will be preserved
    Info: Preserved 5 unused RX channel(s).
    Info: Preserved 5 unused TX channel(s).
    

The pin name can be either a transmit or receive serial pin of the channel you want to preserve.

Both options give you the following error messages when more than one reference clock is specified in QSF file:

Error: Two reference clocks (refclk_preserve_ch0, refclk_preserve_ch1) have been specified for preserving unused transceiver channels in HSSI IO BANK 8B.
       Only one reference clock is allowed to be specified using the QSF assignment set_instance_assignment -name HSSI_PARAMETER "refclk_divider_use_as_bti_clock=TRUE" -to inst_name. See E-tile User Guide for more information.

Quartus® Prime gives a critical warning if there are unused transceiver channels in the design if the global or per-pin QSF assignment is not specified:

Critical Warning (19527): There are xx unused RX channels and yy unused TX channels in the design. 
Add the QSF assignment 'set_instance_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL ON -to <pin_name>' for each unused channel you want to preserve.
The above QSF assignment preserves the performance of specified channels over time.