E-Tile Transceiver PHY User Guide

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

3.1.10.2. Unused Transceiver Channels in Completely Unused Tiles

If an entire tile is completely unused, all of its transceiver channels are unused and are not present in the design netlist. They are not configured using the Native PHY IP GUI or other transceiver protocol IP GUI. These channels are present in the physical device, however, and you may want to preserve them. Preserving unused channels is necessary for all channels that you want to enable in the future.

If an entire tile is completely unused, meaning that none of the transceivers in the tile are part of the design, a reference clock must still be provided to the tile to preserve the unused transceiver channels. The reference clock frequency must be between 125 and 500 MHz.

A port for the reference clock must be added to the top level design file. The port must not be connected to anything in the design. It must be included just to establish a name for the reference clock port which can then be assigned to the desired physical reference clock pin using a QSF assignment. 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 as long as 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.

You have to select a reference clock for each tile that requires preserving unused channels, specifying one reference clock per tile.

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 unused tile):
    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).