From 47a3a50b655150300ebc188fc1a714a15cadef16 Mon Sep 17 00:00:00 2001 From: Alex Forencich Date: Tue, 3 Mar 2015 23:47:27 -0800 Subject: [PATCH] Move preamble out of gmii endpoint --- tb/gmii_ep.py | 7 +++---- tb/test_eth_mac_1g.py | 6 ++++-- tb/test_eth_mac_1g_rx.py | 10 +++++----- tb/test_eth_mac_1g_tx.py | 18 ++++++++++++++---- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/tb/gmii_ep.py b/tb/gmii_ep.py index c4b13d3b7..82123c2fe 100644 --- a/tb/gmii_ep.py +++ b/tb/gmii_ep.py @@ -58,7 +58,6 @@ def GMIISource(clk, rst, frame = fifo.get() if name is not None: print("[%s] Sending frame %s" % (name, repr(frame))) - frame = '\x55\x55\x55\x55\x55\x55\x55\xD5'+bytearray(frame) txd.next = frame.pop(0) tx_en.next = 1 else: @@ -85,12 +84,12 @@ def GMIISink(clk, rst, frame = None else: if rx_dv: - if frame is None and rxd == 0xD5: + if frame is None: frame = [] - elif frame is not None: - frame.append(int(rxd)) + frame.append(int(rxd)) elif frame is not None: if len(frame) > 0: + frame = bytearray(frame) if fifo is not None: fifo.put(frame) if name is not None: diff --git a/tb/test_eth_mac_1g.py b/tb/test_eth_mac_1g.py index 8e07f6cf1..9399be2de 100755 --- a/tb/test_eth_mac_1g.py +++ b/tb/test_eth_mac_1g.py @@ -265,7 +265,7 @@ def bench(): axis_frame = test_frame.build_axis_fcs() - gmii_source_queue.put(axis_frame) + gmii_source_queue.put(b'\x55\x55\x55\x55\x55\x55\x55\xD5'+bytearray(axis_frame)) yield clk.posedge yield clk.posedge @@ -314,8 +314,10 @@ def bench(): if not gmii_sink_queue.empty(): rx_frame = gmii_sink_queue.get() + assert rx_frame[0:8] == bytearray(b'\x55\x55\x55\x55\x55\x55\x55\xD5') + eth_frame = eth_ep.EthFrame() - eth_frame.parse_axis_fcs(bytearray(rx_frame)) + eth_frame.parse_axis_fcs(rx_frame[8:]) print(hex(eth_frame.eth_fcs)) print(hex(eth_frame.calc_fcs())) diff --git a/tb/test_eth_mac_1g_rx.py b/tb/test_eth_mac_1g_rx.py index 1f05e43c3..71089f1d9 100755 --- a/tb/test_eth_mac_1g_rx.py +++ b/tb/test_eth_mac_1g_rx.py @@ -179,7 +179,7 @@ def bench(): axis_frame = test_frame.build_axis_fcs() - source_queue.put(axis_frame) + source_queue.put(b'\x55\x55\x55\x55\x55\x55\x55\xD5'+bytearray(axis_frame)) yield clk.posedge yield clk.posedge @@ -224,8 +224,8 @@ def bench(): axis_frame1 = test_frame1.build_axis_fcs() axis_frame2 = test_frame2.build_axis_fcs() - source_queue.put(axis_frame1) - source_queue.put(axis_frame2) + source_queue.put(b'\x55\x55\x55\x55\x55\x55\x55\xD5'+bytearray(axis_frame1)) + source_queue.put(b'\x55\x55\x55\x55\x55\x55\x55\xD5'+bytearray(axis_frame2)) yield clk.posedge yield clk.posedge @@ -290,8 +290,8 @@ def bench(): error_bad_frame_asserted.next = 0 error_bad_fcs_asserted.next = 0 - source_queue.put(axis_frame1) - source_queue.put(axis_frame2) + source_queue.put(b'\x55\x55\x55\x55\x55\x55\x55\xD5'+bytearray(axis_frame1)) + source_queue.put(b'\x55\x55\x55\x55\x55\x55\x55\xD5'+bytearray(axis_frame2)) yield clk.posedge yield clk.posedge diff --git a/tb/test_eth_mac_1g_tx.py b/tb/test_eth_mac_1g_tx.py index 9629c9fab..124309eff 100755 --- a/tb/test_eth_mac_1g_tx.py +++ b/tb/test_eth_mac_1g_tx.py @@ -190,8 +190,10 @@ def bench(): if not sink_queue.empty(): rx_frame = sink_queue.get() + assert rx_frame[0:8] == bytearray(b'\x55\x55\x55\x55\x55\x55\x55\xD5') + eth_frame = eth_ep.EthFrame() - eth_frame.parse_axis_fcs(bytearray(rx_frame)) + eth_frame.parse_axis_fcs(rx_frame[8:]) print(hex(eth_frame.eth_fcs)) print(hex(eth_frame.calc_fcs())) @@ -243,8 +245,10 @@ def bench(): if not sink_queue.empty(): rx_frame = sink_queue.get() + assert rx_frame[0:8] == bytearray(b'\x55\x55\x55\x55\x55\x55\x55\xD5') + eth_frame = eth_ep.EthFrame() - eth_frame.parse_axis_fcs(bytearray(rx_frame)) + eth_frame.parse_axis_fcs(rx_frame[8:]) print(hex(eth_frame.eth_fcs)) print(hex(eth_frame.calc_fcs())) @@ -260,8 +264,10 @@ def bench(): if not sink_queue.empty(): rx_frame = sink_queue.get() + assert rx_frame[0:8] == bytearray(b'\x55\x55\x55\x55\x55\x55\x55\xD5') + eth_frame = eth_ep.EthFrame() - eth_frame.parse_axis_fcs(bytearray(rx_frame)) + eth_frame.parse_axis_fcs(rx_frame[8:]) print(hex(eth_frame.eth_fcs)) print(hex(eth_frame.calc_fcs())) @@ -315,14 +321,18 @@ def bench(): if not sink_queue.empty(): rx_frame = sink_queue.get() + assert rx_frame[0:8] == bytearray(b'\x55\x55\x55\x55\x55\x55\x55\xD5') + # bad packet rx_frame = None if not sink_queue.empty(): rx_frame = sink_queue.get() + assert rx_frame[0:8] == bytearray(b'\x55\x55\x55\x55\x55\x55\x55\xD5') + eth_frame = eth_ep.EthFrame() - eth_frame.parse_axis_fcs(bytearray(rx_frame)) + eth_frame.parse_axis_fcs(rx_frame[8:]) print(hex(eth_frame.eth_fcs)) print(hex(eth_frame.calc_fcs()))