mirror of
https://github.com/fpganinja/taxi.git
synced 2026-07-29 19:41:34 -07:00
eth: Improve truncated preamble tests for 1000BASE-X/SGMII
Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
@@ -139,6 +139,7 @@ class BaseXSerdesSource():
|
||||
|
||||
self.enable_dic = True
|
||||
self.ifg = 12
|
||||
self.truncate_preamble = False
|
||||
|
||||
self.bit_offset = 0
|
||||
|
||||
@@ -434,6 +435,11 @@ class BaseXSerdesSource():
|
||||
# /S/
|
||||
d_val = XgmiiCtrl.START # /K27.7/
|
||||
k_val = True
|
||||
if self.truncate_preamble:
|
||||
if self.gmii_rep_count:
|
||||
rep_cnt = self.gmii_rep_count
|
||||
else:
|
||||
frame_offset += 1
|
||||
elif frame_offset >= len(frame.data):
|
||||
# /T/
|
||||
d_val = XgmiiCtrl.TERM # /K29.7/
|
||||
@@ -483,7 +489,7 @@ class BaseXSerdesSource():
|
||||
|
||||
if rep_cnt > 0:
|
||||
rep_cnt -= 1
|
||||
elif self.gmii_rep_count and odd:
|
||||
elif self.gmii_rep_count and (odd or frame is not None):
|
||||
rep_cnt = self.gmii_rep_count
|
||||
|
||||
# if self.slip is not None and self.slip.value:
|
||||
|
||||
@@ -109,11 +109,12 @@ class TB:
|
||||
self.stats[stat] += int(getattr(self.dut, stat).value)
|
||||
|
||||
|
||||
async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12, pre_len=8):
|
||||
async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12, pre_trunc=False):
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
tb.source.ifg = ifg
|
||||
tb.source.truncate_preamble = pre_trunc
|
||||
tb.dut.cfg_rx_max_pkt_len.value = 9218-1
|
||||
tb.dut.cfg_rx_enable.value = 1
|
||||
|
||||
@@ -127,7 +128,6 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
|
||||
for test_data in test_frames:
|
||||
test_frame = GmiiFrame.from_payload(test_data, tx_complete=tx_frames.append)
|
||||
test_frame.data = test_frame.data[8-pre_len:]
|
||||
await tb.source.send(test_frame)
|
||||
total_bytes += len(test_data)+4
|
||||
total_pkts += 1
|
||||
@@ -320,7 +320,7 @@ if getattr(cocotb, 'top', None) is not None:
|
||||
factory.add_option("payload_lengths", [size_list])
|
||||
factory.add_option("payload_data", [incrementing_payload])
|
||||
# factory.add_option("ifg", list(range(0, 13)))
|
||||
factory.add_option("pre_len", [8, 7])
|
||||
factory.add_option("pre_trunc", [False, True])
|
||||
factory.add_option("gbx_cfg", gbx_cfgs)
|
||||
factory.generate_tests()
|
||||
|
||||
|
||||
@@ -124,11 +124,12 @@ class TB:
|
||||
self.stats[stat] += int(getattr(self.dut, stat).value)
|
||||
|
||||
|
||||
async def run_test(dut, gbx_cfg=None, sgmii_speed=None, payload_lengths=None, payload_data=None, ifg=12, pre_len=8):
|
||||
async def run_test(dut, gbx_cfg=None, sgmii_speed=None, payload_lengths=None, payload_data=None, ifg=12, pre_trunc=False):
|
||||
|
||||
tb = TB(dut, gbx_cfg, sgmii_speed)
|
||||
|
||||
tb.source.ifg = ifg
|
||||
tb.source.truncate_preamble = pre_trunc
|
||||
tb.dut.cfg_rx_max_pkt_len.value = 9218-1
|
||||
tb.dut.cfg_rx_enable.value = 1
|
||||
|
||||
@@ -142,7 +143,6 @@ async def run_test(dut, gbx_cfg=None, sgmii_speed=None, payload_lengths=None, pa
|
||||
|
||||
for test_data in test_frames:
|
||||
test_frame = GmiiFrame.from_payload(test_data, tx_complete=tx_frames.append)
|
||||
test_frame.data = test_frame.data[8-pre_len:]
|
||||
await tb.source.send(test_frame)
|
||||
total_bytes += max(len(test_data), 60)+4
|
||||
total_pkts += 1
|
||||
@@ -335,7 +335,7 @@ if getattr(cocotb, 'top', None) is not None:
|
||||
factory.add_option("payload_lengths", [size_list])
|
||||
factory.add_option("payload_data", [incrementing_payload])
|
||||
factory.add_option("ifg", [0, 1, 11, 12])
|
||||
factory.add_option("pre_len", [8, 7])
|
||||
factory.add_option("pre_trunc", [False, True])
|
||||
factory.add_option("sgmii_speed", [None, 1, 2])
|
||||
factory.add_option("gbx_cfg", gbx_cfgs)
|
||||
factory.generate_tests()
|
||||
|
||||
@@ -73,11 +73,12 @@ class TB:
|
||||
await RisingEdge(self.dut.clk)
|
||||
|
||||
|
||||
async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12, pre_len=8):
|
||||
async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, ifg=12, pre_trunc=8):
|
||||
|
||||
tb = TB(dut, gbx_cfg)
|
||||
|
||||
tb.source.ifg = ifg
|
||||
tb.source.truncate_preamble = pre_trunc
|
||||
|
||||
await tb.reset()
|
||||
|
||||
@@ -85,7 +86,6 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
||||
|
||||
for test_data in test_frames:
|
||||
test_frame = GmiiFrame.from_payload(test_data)
|
||||
test_frame.data = test_frame.data[8-pre_len:]
|
||||
await tb.source.send(test_frame)
|
||||
|
||||
for test_data in test_frames:
|
||||
@@ -147,7 +147,7 @@ if getattr(cocotb, 'top', None) is not None:
|
||||
factory.add_option("payload_lengths", [size_list])
|
||||
factory.add_option("payload_data", [incrementing_payload])
|
||||
factory.add_option("ifg", list(range(0, 13)))
|
||||
factory.add_option("pre_len", [8, 7])
|
||||
factory.add_option("pre_trunc", [False, True])
|
||||
factory.generate_tests()
|
||||
|
||||
factory = TestFactory(run_test_an)
|
||||
|
||||
Reference in New Issue
Block a user