2.4.4. Test Case—Design Example with the IEEE 1588v2 Feature
Note: For 10G/25G Ethernet single-channel design example with IEEE 1588v2 feature simulation testbench, refer to Figure 7.
The simulation test case performs the following actions:
- Instantiates 25G Ethernet Intel® FPGA IP, ATX PLL, and IO PLL (sampling PLL).
- Starts up the design example with an operating speed of 25G.
- Waits for RX clock and PHY status signal to settle.
- Prints PHY status.
- Checks for 10 valid data on 25G speed.
- Switches to 10G speed.
- Waits for RX clock and PHY status signal to settle.
- Prints PHY status.
- Checks for another 10 valid data on 10G speed.
- Switches to 25G speed once all 10 valid data passes.
- Waits for RX clock and PHY status signal to settle.
- Prints PHY status.
- Checks for another 10 valid data on 25G speed.
- Analyzes the results. The successful testbench displays "Simulation PASSED." when the PTP delay and offset data is within the threshold value.
The following sample output illustrates a successful simulation test run:
# Running at 25G mode...
#
#
# Waiting for RX alignment...
# iatpg_pipeline_global_en is set
# iatpg_pipeline_global_en is set
# RX deskew locked.
# RX lane aligmnent locked.
#
# Sending packets...
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000064457
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000064bb4
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000fffffffff8a2
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000643b5
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000520
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000634fb
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000063f3b
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000063a1a
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x00000000000000000006445a
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000063e95
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000648d5
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000643b5
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000520
# Offset within tolerence range.
#
#
#
# Finished sending packets.
#
#
#
# Switching to 10G mode: 10G Reconfig starts...
# Switching to 10G mode: 10G Reconfig End.
#
# Waiting for RX alignment...
# RX deskew locked.
# RX lane aligmnent locked.
#
# Configuring 1588 period...
# Configuring 1588 period done.
#
# Sending packets...
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000e5a7d
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000002013
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000e0764
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000ffffffff99a0
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000e0764
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000ffffffffa66d
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000dfa97
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000006660
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000e1431
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000005993
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000e2db7
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000ffffffffccc0
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000e1431
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000ffffffff8006
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000e60e4
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000fffffffff320
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000dfa97
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000005993
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x0000000000000000000e874b
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000ce0
# Offset within tolerence range.
#
#
#
# Finished sending packets.
#
#
#
# Switching to 25G mode: 25G Reconfig start...
# Switching to 25G mode: 25G Reconfig end.
#
# Waiting for RX alignment...
# RX deskew locked.
# RX lane aligmnent locked.
#
# Configuring 1588 period...
# Configuring 1588 period done.
#
# Sending packets...
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000063c58
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000063c58
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x00000000000000000006502f
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x00000000000000000006502f
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x00000000000000000006554d
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000064b10
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000064b10
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000064bb4
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000064bb4
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
# Delay (sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000065a6c
# Offset(sec[95:48],ns[47:16],fns[15:0]): 0x000000000000000000000000
# Offset within tolerence range.
#
#
#
# Finished sending packets.
#
# **
# ** Testbench complete.
# **