mirror of
https://github.com/fpganinja/taxi.git
synced 2026-06-27 01:01:19 -07:00
eth: Update timestamp handling in testbenches
Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
@@ -149,7 +149,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
assert rx_frame.tdata == test_data
|
||||
assert frame_error == 0
|
||||
if gbx_cfg is None:
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - tb.clk_period*1) < 0.01
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - tb.clk_period*2) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
assert rx_frame.tdata == test_data
|
||||
assert frame_error == 0
|
||||
if gbx_cfg is None:
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - tb.clk_period*0) < 0.01
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - tb.clk_period*1) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
assert rx_frame.check_fcs()
|
||||
assert rx_frame.ctrl is None
|
||||
if gbx_cfg is None:
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*4) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*3) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
assert rx_frame.check_fcs()
|
||||
assert rx_frame.ctrl is None
|
||||
if gbx_cfg is None:
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*3) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*2) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
@@ -224,7 +224,7 @@ async def run_test_alignment(dut, gbx_cfg=None, payload_data=None, ifg=12):
|
||||
assert rx_frame.check_fcs()
|
||||
assert rx_frame.ctrl is None
|
||||
if gbx_cfg is None:
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*3) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*2) < 0.01
|
||||
|
||||
start_lane.append(rx_frame.start_lane)
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
assert rx_frame.tdata == test_data
|
||||
assert frame_error == 0
|
||||
if gbx_cfg is None:
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - tb.clk_period*0) < 0.01
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - tb.clk_period*1) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
assert rx_frame.tdata == test_data
|
||||
assert frame_error == 0
|
||||
if gbx_cfg is None:
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - tb.clk_period*0) < 0.01
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - tb.clk_period*1) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
assert rx_frame.check_fcs()
|
||||
assert rx_frame.error is None
|
||||
if gbx_cfg is None:
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*1) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*0) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
assert rx_frame.check_fcs()
|
||||
assert rx_frame.error is None
|
||||
if gbx_cfg is None:
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*1) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - tb.clk_period*0) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12, enable_
|
||||
|
||||
assert rx_frame.tdata == test_data
|
||||
assert frame_error == 0
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - (32 if enable_gen else 8)) < 0.01
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - 8) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12, enable_
|
||||
assert rx_frame.get_payload() == test_data.ljust(60, b'\x00')
|
||||
assert rx_frame.check_fcs()
|
||||
assert rx_frame.error is None
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - (32 if enable_gen else 8)) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - (24 if enable_gen else 0)) < 0.01
|
||||
|
||||
assert tb.sink.empty()
|
||||
|
||||
|
||||
@@ -119,10 +119,6 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
tx_frame_sfd_ns = get_time_from_sim_steps(tx_frame.sim_time_sfd, "ns")
|
||||
|
||||
if tx_frame.start_lane == 4:
|
||||
# start in lane 4 reports 1 full cycle delay, so subtract half clock period
|
||||
tx_frame_sfd_ns -= 3.2
|
||||
|
||||
tb.log.info("RX frame PTP TS: %f ns", ptp_ts_ns)
|
||||
tb.log.info("TX frame SFD sim time: %f ns", tx_frame_sfd_ns)
|
||||
tb.log.info("Difference: %f ns", abs(ptp_ts_ns - tx_frame_sfd_ns))
|
||||
|
||||
@@ -112,10 +112,6 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
rx_frame_sfd_ns = get_time_from_sim_steps(rx_frame.sim_time_sfd, "ns")
|
||||
|
||||
if rx_frame.start_lane == 4:
|
||||
# start in lane 4 reports 1 full cycle delay, so subtract half clock period
|
||||
rx_frame_sfd_ns -= 3.2
|
||||
|
||||
tb.log.info("TX frame PTP TS: %f ns", ptp_ts_ns)
|
||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||
@@ -184,10 +180,6 @@ async def run_test_alignment(dut, payload_data=None, ifg=12):
|
||||
|
||||
rx_frame_sfd_ns = get_time_from_sim_steps(rx_frame.sim_time_sfd, "ns")
|
||||
|
||||
if rx_frame.start_lane == 4:
|
||||
# start in lane 4 reports 1 full cycle delay, so subtract half clock period
|
||||
rx_frame_sfd_ns -= 3.2
|
||||
|
||||
tb.log.info("TX frame PTP TS: %f ns", ptp_ts_ns)
|
||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||
|
||||
@@ -173,7 +173,7 @@ async def run_test_rx(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
tb.log.info("Wait for PTP CDC lock")
|
||||
while not int(dut.rx_ptp_locked.value):
|
||||
await RisingEdge(dut.rx_clk)
|
||||
for k in range(2000):
|
||||
for k in range(4000):
|
||||
await RisingEdge(dut.rx_clk)
|
||||
|
||||
test_frames = [payload_data(x) for x in payload_lengths()]
|
||||
@@ -193,10 +193,6 @@ async def run_test_rx(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
tx_frame_sfd_ns = get_time_from_sim_steps(tx_frame.sim_time_sfd, "ns")
|
||||
|
||||
if tx_frame.start_lane == 4:
|
||||
# start in lane 4 reports 1 full cycle delay, so subtract half clock period
|
||||
tx_frame_sfd_ns -= tb.clk_period/2
|
||||
|
||||
tb.log.info("RX frame PTP TS: %f ns", ptp_ts_ns)
|
||||
tb.log.info("TX frame SFD sim time: %f ns", tx_frame_sfd_ns)
|
||||
tb.log.info("Difference: %f ns", abs(ptp_ts_ns - tx_frame_sfd_ns))
|
||||
@@ -231,7 +227,7 @@ async def run_test_tx(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
tb.log.info("Wait for PTP CDC lock")
|
||||
while not int(dut.tx_ptp_locked.value):
|
||||
await RisingEdge(dut.tx_clk)
|
||||
for k in range(2000):
|
||||
for k in range(4000):
|
||||
await RisingEdge(dut.tx_clk)
|
||||
|
||||
test_frames = [payload_data(x) for x in payload_lengths()]
|
||||
@@ -247,10 +243,6 @@ async def run_test_tx(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
rx_frame_sfd_ns = get_time_from_sim_steps(rx_frame.sim_time_sfd, "ns")
|
||||
|
||||
if rx_frame.start_lane == 4:
|
||||
# start in lane 4 reports 1 full cycle delay, so subtract half clock period
|
||||
rx_frame_sfd_ns -= tb.clk_period/2
|
||||
|
||||
tb.log.info("TX frame PTP TS: %f ns", ptp_ts_ns)
|
||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||
@@ -290,7 +282,7 @@ async def run_test_tx_alignment(dut, payload_data=None, ifg=12):
|
||||
tb.log.info("Wait for PTP CDC lock")
|
||||
while not int(dut.tx_ptp_locked.value):
|
||||
await RisingEdge(dut.tx_clk)
|
||||
for k in range(2000):
|
||||
for k in range(4000):
|
||||
await RisingEdge(dut.tx_clk)
|
||||
|
||||
for length in range(60, 92):
|
||||
@@ -312,10 +304,6 @@ async def run_test_tx_alignment(dut, payload_data=None, ifg=12):
|
||||
|
||||
rx_frame_sfd_ns = get_time_from_sim_steps(rx_frame.sim_time_sfd, "ns")
|
||||
|
||||
if rx_frame.start_lane == 4:
|
||||
# start in lane 4 reports 1 full cycle delay, so subtract half clock period
|
||||
rx_frame_sfd_ns -= tb.clk_period/2
|
||||
|
||||
tb.log.info("TX frame PTP TS: %f ns", ptp_ts_ns)
|
||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||
|
||||
@@ -127,7 +127,7 @@ async def run_test_rx(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
tb.log.info("Wait for PTP CDC lock")
|
||||
while not int(dut.rx_ptp_locked.value):
|
||||
await RisingEdge(dut.rx_clk)
|
||||
for k in range(2000):
|
||||
for k in range(4000):
|
||||
await RisingEdge(dut.rx_clk)
|
||||
|
||||
test_frames = [payload_data(x) for x in payload_lengths()]
|
||||
@@ -147,10 +147,6 @@ async def run_test_rx(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
tx_frame_sfd_ns = get_time_from_sim_steps(tx_frame.sim_time_sfd, "ns")
|
||||
|
||||
if tx_frame.start_lane == 4:
|
||||
# start in lane 4 reports 1 full cycle delay, so subtract half clock period
|
||||
tx_frame_sfd_ns -= tb.clk_period/2
|
||||
|
||||
tb.log.info("RX frame PTP TS: %f ns", ptp_ts_ns)
|
||||
tb.log.info("TX frame SFD sim time: %f ns", tx_frame_sfd_ns)
|
||||
tb.log.info("Difference: %f ns", abs(ptp_ts_ns - tx_frame_sfd_ns))
|
||||
@@ -184,7 +180,7 @@ async def run_test_tx(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
tb.log.info("Wait for PTP CDC lock")
|
||||
while not int(dut.tx_ptp_locked.value):
|
||||
await RisingEdge(dut.tx_clk)
|
||||
for k in range(2000):
|
||||
for k in range(4000):
|
||||
await RisingEdge(dut.tx_clk)
|
||||
|
||||
test_frames = [payload_data(x) for x in payload_lengths()]
|
||||
@@ -200,10 +196,6 @@ async def run_test_tx(dut, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
rx_frame_sfd_ns = get_time_from_sim_steps(rx_frame.sim_time_sfd, "ns")
|
||||
|
||||
if rx_frame.start_lane == 4:
|
||||
# start in lane 4 reports 1 full cycle delay, so subtract half clock period
|
||||
rx_frame_sfd_ns -= tb.clk_period/2
|
||||
|
||||
tb.log.info("TX frame PTP TS: %f ns", ptp_ts_ns)
|
||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||
@@ -242,7 +234,7 @@ async def run_test_tx_alignment(dut, payload_data=None, ifg=12):
|
||||
tb.log.info("Wait for PTP CDC lock")
|
||||
while not int(dut.tx_ptp_locked.value):
|
||||
await RisingEdge(dut.tx_clk)
|
||||
for k in range(2000):
|
||||
for k in range(4000):
|
||||
await RisingEdge(dut.tx_clk)
|
||||
|
||||
for length in range(60, 92):
|
||||
@@ -264,10 +256,6 @@ async def run_test_tx_alignment(dut, payload_data=None, ifg=12):
|
||||
|
||||
rx_frame_sfd_ns = get_time_from_sim_steps(rx_frame.sim_time_sfd, "ns")
|
||||
|
||||
if rx_frame.start_lane == 4:
|
||||
# start in lane 4 reports 1 full cycle delay, so subtract half clock period
|
||||
rx_frame_sfd_ns -= tb.clk_period/2
|
||||
|
||||
tb.log.info("TX frame PTP TS: %f ns", ptp_ts_ns)
|
||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||
|
||||
@@ -215,7 +215,7 @@ async def run_test_rx(dut, payload_lengths=None, payload_data=None, ifg=12, enab
|
||||
|
||||
assert rx_frame.tdata == test_data
|
||||
assert frame_error == 0
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - (32 if enable_gen else 8)) < 0.01
|
||||
assert abs(ptp_ts_ns - tx_frame_sfd_ns - 8) < 0.01
|
||||
|
||||
assert tb.axis_sink.empty()
|
||||
|
||||
@@ -263,7 +263,7 @@ async def run_test_tx(dut, payload_lengths=None, payload_data=None, ifg=12, enab
|
||||
assert rx_frame.get_payload() == test_data
|
||||
assert rx_frame.check_fcs()
|
||||
assert rx_frame.error is None
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - (32 if enable_gen else 8)) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - (24 if enable_gen else 0)) < 0.01
|
||||
|
||||
assert tb.gmii_sink.empty()
|
||||
|
||||
|
||||
@@ -226,11 +226,11 @@ async def run_test_tx(dut, payload_lengths=None, payload_data=None, ifg=12, spee
|
||||
assert rx_frame.check_fcs()
|
||||
assert rx_frame.error is None
|
||||
if speed == 10e6:
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 800) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 400) < 0.01
|
||||
elif speed == 100e6:
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 80) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 40) < 0.01
|
||||
else:
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 12) < 0.01
|
||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 4) < 0.01
|
||||
|
||||
assert tb.gmii_phy.tx.empty()
|
||||
|
||||
|
||||
@@ -176,9 +176,9 @@ class TB:
|
||||
async def run_test_rx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 64:
|
||||
pipe_delay = 3
|
||||
else:
|
||||
pipe_delay = 4
|
||||
else:
|
||||
pipe_delay = 5
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
@@ -244,9 +244,9 @@ async def run_test_rx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None
|
||||
async def run_test_tx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 64:
|
||||
pipe_delay = 6
|
||||
pipe_delay = 5
|
||||
else:
|
||||
pipe_delay = 7
|
||||
pipe_delay = 6
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
@@ -307,9 +307,9 @@ async def run_test_tx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None
|
||||
async def run_test_tx_alignment(dut, gbx_cfg=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 64:
|
||||
pipe_delay = 6
|
||||
pipe_delay = 5
|
||||
else:
|
||||
pipe_delay = 7
|
||||
pipe_delay = 6
|
||||
|
||||
dic_en = int(cocotb.top.DIC_EN.value)
|
||||
|
||||
|
||||
@@ -144,9 +144,9 @@ class TB:
|
||||
async def run_test_rx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 64:
|
||||
pipe_delay = 3
|
||||
else:
|
||||
pipe_delay = 4
|
||||
else:
|
||||
pipe_delay = 5
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
@@ -208,9 +208,9 @@ async def run_test_rx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None
|
||||
async def run_test_tx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 64:
|
||||
pipe_delay = 6
|
||||
pipe_delay = 5
|
||||
else:
|
||||
pipe_delay = 7
|
||||
pipe_delay = 6
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
@@ -266,9 +266,9 @@ async def run_test_tx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None
|
||||
async def run_test_tx_alignment(dut, gbx_cfg=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 64:
|
||||
pipe_delay = 6
|
||||
pipe_delay = 5
|
||||
else:
|
||||
pipe_delay = 7
|
||||
pipe_delay = 6
|
||||
|
||||
dic_en = int(cocotb.top.DIC_EN.value)
|
||||
|
||||
|
||||
@@ -175,9 +175,9 @@ class TB:
|
||||
async def run_test_rx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 16:
|
||||
pipe_delay = 3
|
||||
pipe_delay = 4
|
||||
else:
|
||||
pipe_delay = 3
|
||||
pipe_delay = 4
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
@@ -243,9 +243,9 @@ async def run_test_rx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None
|
||||
async def run_test_tx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 16:
|
||||
pipe_delay = 4
|
||||
pipe_delay = 3
|
||||
else:
|
||||
pipe_delay = 4
|
||||
pipe_delay = 3
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
|
||||
@@ -143,9 +143,9 @@ class TB:
|
||||
async def run_test_rx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 64:
|
||||
pipe_delay = 3
|
||||
pipe_delay = 4
|
||||
else:
|
||||
pipe_delay = 3
|
||||
pipe_delay = 4
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
@@ -207,9 +207,9 @@ async def run_test_rx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None
|
||||
async def run_test_tx(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12):
|
||||
|
||||
if len(dut.serdes_tx_data) == 16:
|
||||
pipe_delay = 4
|
||||
pipe_delay = 3
|
||||
else:
|
||||
pipe_delay = 4
|
||||
pipe_delay = 3
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user