From 09537523a68ebe67d6b128017d62ac907c61ade4 Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Wed, 28 Jan 2015 10:25:33 +0100 Subject: [PATCH] test: add PHY model skeleton --- liteeth/test/Makefile | 11 ++++------- liteeth/test/common.py | 7 +++++++ liteeth/test/model/phy.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 liteeth/test/model/phy.py diff --git a/liteeth/test/Makefile b/liteeth/test/Makefile index 77414619..31b69ebe 100644 --- a/liteeth/test/Makefile +++ b/liteeth/test/Makefile @@ -3,11 +3,8 @@ PYTHON = python3 CMD = PYTHONPATH=$(MSCDIR) $(PYTHON) -mac_crc_tb: - $(CMD) mac_crc_tb.py +mac_core_tb: + $(CMD) mac_core_tb.py -mac_preamble_tb: - $(CMD) mac_preamble_preamble_tb.py - -ethmac_tb: - $(CMD) ethmac_tb.py +mac_wishbone_tb: + $(CMD) mac_wishbone_tb.py diff --git a/liteeth/test/common.py b/liteeth/test/common.py index 13123700..32e2aaea 100644 --- a/liteeth/test/common.py +++ b/liteeth/test/common.py @@ -6,6 +6,13 @@ from migen.genlib.record import * from misoclib.ethmac.common import * +def print_with_prefix(s, prefix=""): + if not isinstance(s, str): + s = s.__repr__() + s = s.split("\n") + for l in s: + print(prefix + l) + def seed_to_data(seed, random=True): if random: return (seed * 0x31415979 + 1) & 0xffffffff diff --git a/liteeth/test/model/phy.py b/liteeth/test/model/phy.py new file mode 100644 index 00000000..2708ed4c --- /dev/null +++ b/liteeth/test/model/phy.py @@ -0,0 +1,31 @@ +from liteeth.common import * +from liteeth.mac.common import * +from liteeth.test.common import * + +# PHY model +class PHYSource(PacketStreamer): + def __init__(self, dw): + PacketStreamer.__init__(self, eth_phy_description(dw)) + +class PHYSink(PacketLogger): + def __init__(self, dw): + PacketLogger.__init__(self, eth_phy_description(dw)) + +class PHY(Module): + def __init__(self, dw, debug): + self.dw = dw + self.debug = debug + + self.phy_source = PHYSource(dw) + self.phy_sink = PHYSink(dw) + + self.source = self.phy_source.source + self.sink = self.phy_sink.sink + + def send(self, datas, blocking=True): + packet = Packet(datas) + yield from self.phy_source.send(packet, blocking) + + def receive(self): + yield from self.phy_sink.receive() + self.packet = self.phy_sink.packet -- 2.30.2