F-Tile Dynamic Reconfiguration Design Example User Guide

ID 710582
Date 4/11/2024
Public
Document Table of Contents

6.1.1. Ethernet to CPRI Dynamic Reconfiguration Design Example: Simulation Testbench

The Ethernet to CPRI Dynamic Reconfiguration example design simulation testbench block diagrams are shown in the following figures:
Figure 36. Simulation Testbench Block Diagram for Ethernet to CPRI Dynamic Reconfiguration Design Example
Figure 37. Simulation Testbench Block Diagram for Ethernet to CPRI Dynamic Reconfiguration Design Example (with 1GE)
Figure 38. Simulation Testbench Block Diagram for Ethernet to CPRI Dynamic Reconfiguration Design Example (with 1GE PTP)
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 the 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.
  • Start traffic test.
  • 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 dynamic reconfiguration IP to configure the intended dynamic reconfiguration task.

For example, you want to achieve this Dynamic Reconfiguration sequence: Ethernet 25G-1 > CPRI 24G with RS-FEC > Ethernet 10G-1.

The localparams changes are:
  • Localparam DR_NUM = 2
  • Localparam [6:0] DR_SEQ [DR_NUM-1:0] = {ETH_DR_MODE_10GE-1, CPRI_DR_MODE_24G_RSFEC};
The below RTL snippet shows the Ethernet – CPRI Protocols testbench localparams to customize:
localparam ETH_DR_MODE_25GE_1	 = 6'b00_00_00;
localparam ETH_DR_MODE_10GE_1     = 6'b00_00_01;
localparam CPRI_DR_MODE_24G_RSFEC = 6'b00_00_10;
localparam CPRI_DR_MODE_24G  	 = 6'b00_00_11;
localparam CPRI_DR_MODE_12G_RSFEC = 6'b00_01_00;
localparam CPRI_DR_MODE_12G   	= 6'b00_01_01;
localparam CPRI_DR_MODE_10G_RSFEC = 6'b00_01_10;
localparam CPRI_DR_MODE_10G       = 6'b00_01_11;
localparam CPRI_DR_MODE_9P8G      = 6'b00_10_00;
localparam CPRI_DR_MODE_6G        = 6'b00_10_01;
localparam CPRI_DR_MODE_4P9G      = 6'b00_10_10;
localparam CPRI_DR_MODE_3G        = 6'b00_10_11;
localparam CPRI_DR_MODE_2P4G      = 6'b00_11_00;
localparam CPRI_DR_MODE_1G        = 6'b00_11_01;

localparam DR_NUM = 3;
localparam [6:0] DR_SEQ [DR_NUM-1 : 0] = {CPRI_DR_MODE_4P9G,CPRI_DR_MODE_24G_RSFEC,ETH_DR_MODE_10GE_1};

The below RTL snippet shows the Ethernet – CPRI Protocols (with 1GE) testbench localparams to customize:

localparam ETH_DR_MODE_25GE_1      = 6'b00_00_00;
localparam ETH_DR_MODE_10GE_1      = 6'b00_00_01;
localparam CPRI_DR_MODE_24G_RSFEC  = 6'b00_00_10;
localparam CPRI_DR_MODE_24G        = 6'b00_00_11;
localparam CPRI_DR_MODE_12G_RSFEC  = 6'b00_01_00;
localparam CPRI_DR_MODE_12G        = 6'b00_01_01;
localparam CPRI_DR_MODE_10G_RSFEC  = 6'b00_01_10;
localparam CPRI_DR_MODE_10G        = 6'b00_01_11;
localparam CPRI_DR_MODE_9P8G       = 6'b00_10_00;
localparam CPRI_DR_MODE_6G         = 6'b00_10_01;
localparam CPRI_DR_MODE_4P9G       = 6'b00_10_10;
localparam CPRI_DR_MODE_3G         = 6'b00_10_11;
localparam CPRI_DR_MODE_2P4G       = 6'b00_11_00;
localparam CPRI_DR_MODE_1G         = 6'b00_11_01;
localparam ETH_DR_MODE_1GE_1       = 6'b00_11_10;

localparam DR_NUM = 3;
localparam [6:0] DR_SEQ [DR_NUM-1 : 0] = {ETH_DR_MODE_25GE_1,CPRI_DR_MODE_24G_RSFEC,ETH_DR_MODE_1GE_1};