litex/liteeth/test/model/phy.py

37 lines
878 B
Python

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.submodules.phy_source = PHYSource(dw)
self.submodules.phy_sink = PHYSink(dw)
self.source = self.phy_source.source
self.sink = self.phy_sink.sink
self.mac_callback = None
def set_mac_callback(self, callback):
self.mac_callback = callback
def send(self, datas):
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