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 26. 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.
Address Range | Mapping |
---|---|
0x1000_0000 – 0x1000_FFFF | P0 Ethernet Registers |
0x1080_0000 – 0x108F_FFFF | P0 Transceiver Registers |
0x1010_0000 – 0x1010_FFFF | 25G Packet Client |
0x0000_0000 – 0x0000_03FF | Dynamic Reconfiguration Controller |
0x2000_0000 – 0x2000_003F | CPRI Soft Registers |
0x2010_0000 – 0x2010_FFFF | CPRI PCS Registers |
0x2020_0000 – 0x202F_FFFF | CPRI Transceiver Registers |
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.
- DR_NUM: Number of Dynamic Reconfiguration transition
- DR_SEQ: Dynamic Reconfiguration sequence
For example, you want to achieve this Dynamic Reconfiguration sequence:
.
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};