F-Tile Dynamic Reconfiguration Design Example User Guide

ID 710582
Date 12/19/2022

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

Document Table of Contents

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

Ethernet to CPRI Dynamic Reconfiguration example design simulation testbench block diagram is shown in the following figure:
Figure 28. Simulation Testbench Block Diagram for Ethernet to CPRI Dynamic Reconfiguration Design Example
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};