F-Tile Dynamic Reconfiguration Design Example User Guide

ID 710582
Date 3/28/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

3.1.1. Ethernet Multirate Design Example: Simulation Testbench

Figure 8. Simulation Testbench Block Diagram for 25GE-1 Base Variant
Figure 9. Simulation Testbench Block Diagram for 100GE-4 Base VariantThe packet client block is available for each of the Ethernet rates.
Figure 10. Simulation Testbench Block Diagram for 400GE-8 Base VariantThe packet client block is available for each of the Ethernet rates.

The testbench program controls the testbench components via Avalon® memory-mapped interface access, status and control signals. The Avalon® memory-mapped interface arbiter decodes the Avalon® memory-mapped interface access from testbench program into multiple Avalon® memory-mapped interface slaves.

Simulation Flow:
  • Ethernet Multirate IP DUT is power-up based on base profile.
  • Initialize the testbench variables based on power-up profile. The parameter settings, located in the basic_avl_tb_top.sv file, are:
    • DR_NUM: To indicate the number of dynamic reconfiguration transitions.
    • DR_SEQ: To indicate the dynamic reconfiguration sequence.
  • Perform dynamic reconfiguration.
  • Check the testbench error flag and determine whether testbench passed or failed. The error flag is set to 1 if there is any error after dynamic reconfiguration traffic tests.

For customization, you can modify the DR_NUM and DR_SEQ localparam to configure the test flow. The profile ID is passed to the IP to configure the intended dynamic reconfiguration task.

Dynamic Reconfiguration Sequence Example: 100GE-1 > 2x 50GE-1 > 4x 25GE-1

To achieve this dynamic reconfiguration sequence, you must perform two dynamic reconfiguration transitions and specify the reconfiguration sequence. You update the local parameter settings file:
// Available Modes
localparam DR_MODE_25GE_1    = 6'b000000;
localparam DR_MODE_10GE_1    = 6'b000001;
localparam DR_MODE_1X100GE_4 = 6'b000010;
localparam DR_MODE_1X40GE_4  = NOT SUPPORTED;
localparam DR_MODE_1X100GE_2 = NOT SUPPORTED;
localparam DR_MODE_2x50GE_2  = NOT SUPPORTED;
localparam DR_MODE_2X50GE_1  = 6'b010100;
localparam DR_MODE_4X25GE_1  = 6'b100000;

// Dynamic Reconfiguration setting
localparam DR_NUM = 2;
localparam [6:0] DR_SEQ [DR_NUM - 1 : 0] = {DR_MODE_4X25GE_1, DR_MODE_2X50GE_1}