Figure 24. Simulation Testbench Block Diagram for 25GE-1 Base Variant with AN/LT Enabled
Figure 25. Simulation Testbench Block Diagram for 100GE-4 Base Variant with AN/LT Enabled
Figure 26. Simulation Testbench Block Diagram for 400GE-8 Base Variant with AN/LT Enabled
Figure 27. Simulation Testbench Block Diagram for 400G-4 FHT Base Variant with AN/LT Enabled
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 Auto-Negotiation and Link Training.
- Enable the Auto-Negotiation and Link Training IP. User logic reads AN results and triggers dynamic reconfiguration flow.
- Once the Dynamic Reconfiguration completes, you can program seq_force_mode AN/LT CSR to notify about the Dynamic Reconfigured profile; otherwise, AN/LT IP is expected to follow the AN result.
- Disable the AN/LT IP.
- Move to data or Ethernet mode and start transmitting packets.
- Check the testbench error flag to determine whether the testbench passed or failed. The error flag is set to 1 when the AN/LT with Dynamic reconfiguration and Ethernet flow is successfully completed.
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-4 > 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_1X100GE_4 = 6'b00_00_00;
localparam DR_MODE_1X100GE_4_NOFEC = 6'b00_00_01;
localparam DR_MODE_1X100GE_2 = 6'b00_00_11;
localparam DR_MODE_2x50GE_1 = 6'b01_01_00;
localparam DR_MODE_4X25GE_1 = 6'b10_00_00;
localparam DR_MODE_4X25GE_1_NOFEC = 6'b10_00_01;
// Dynamic Reconfiguration setting
localparam DR_NUM = 2;
localparam [6:0] DR_SEQ [DR_NUM - 1 : 0] = {DR_MODE_4X25GE_1, DR_MODE_2X50GE_1}