From f74beeeb71834c6cf7a68605a40e47888849f590 Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Mon, 10 Jul 2023 09:59:37 +0200 Subject: [PATCH] core/icmp: Switch to LiteXModule. --- liteeth/core/icmp.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/liteeth/core/icmp.py b/liteeth/core/icmp.py index ee1f7d4..27a9451 100644 --- a/liteeth/core/icmp.py +++ b/liteeth/core/icmp.py @@ -1,12 +1,14 @@ # # This file is part of LiteEth. # -# Copyright (c) 2015-2020 Florent Kermarrec +# Copyright (c) 2015-2023 Florent Kermarrec # SPDX-License-Identifier: BSD-2-Clause -from liteeth.common import * +from litex.gen import * from litex.soc.interconnect.packet import PacketFIFO + +from liteeth.common import * from liteeth.packet import Depacketizer, Packetizer # ICMP TX ------------------------------------------------------------------------------------------ @@ -16,10 +18,11 @@ class LiteEthICMPPacketizer(Packetizer): Packetizer.__init__(self, eth_icmp_description(dw), eth_ipv4_user_description(dw), - icmp_header) + icmp_header + ) -class LiteEthICMPTX(Module): +class LiteEthICMPTX(LiteXModule): def __init__(self, ip_address, dw=8): self.sink = sink = stream.Endpoint(eth_icmp_user_description(dw)) self.source = source = stream.Endpoint(eth_ipv4_user_description(dw)) @@ -27,7 +30,7 @@ class LiteEthICMPTX(Module): # # # # Packetizer. - self.submodules.packetizer = packetizer = LiteEthICMPPacketizer(dw) + self.packetizer = packetizer = LiteEthICMPPacketizer(dw) self.comb += sink.connect(packetizer.sink, keep={ "valid", "last", @@ -37,10 +40,11 @@ class LiteEthICMPTX(Module): "checksum", "quench", "data", - "last_be"}) + "last_be" + }) # FSM. - self.submodules.fsm = fsm = FSM(reset_state="IDLE") + self.fsm = fsm = FSM(reset_state="IDLE") fsm.act("IDLE", If(packetizer.source.valid, NextState("SEND") @@ -69,7 +73,7 @@ class LiteEthICMPDepacketizer(Depacketizer): icmp_header) -class LiteEthICMPRX(Module): +class LiteEthICMPRX(LiteXModule): def __init__(self, ip_address, dw=8): self.sink = sink = stream.Endpoint(eth_ipv4_user_description(dw)) self.source = source = stream.Endpoint(eth_icmp_user_description(dw)) @@ -77,11 +81,11 @@ class LiteEthICMPRX(Module): # # # # Depacketizer. - self.submodules.depacketizer = depacketizer = LiteEthICMPDepacketizer(dw) + self.depacketizer = depacketizer = LiteEthICMPDepacketizer(dw) self.comb += sink.connect(depacketizer.sink) # FSM. - self.submodules.fsm = fsm = FSM(reset_state="IDLE") + self.fsm = fsm = FSM(reset_state="IDLE") fsm.act("IDLE", If(depacketizer.source.valid, NextState("DROP"), @@ -124,14 +128,14 @@ class LiteEthICMPRX(Module): # ICMP Echo ---------------------------------------------------------------------------------------- -class LiteEthICMPEcho(Module): +class LiteEthICMPEcho(LiteXModule): def __init__(self, dw=8): self.sink = sink = stream.Endpoint(eth_icmp_user_description(dw)) self.source = source = stream.Endpoint(eth_icmp_user_description(dw)) # # # - self.submodules.buffer = PacketFIFO(eth_icmp_user_description(dw), + self.buffer = PacketFIFO(eth_icmp_user_description(dw), payload_depth = 128//(dw//8), param_depth = 1, buffered = True @@ -145,11 +149,11 @@ class LiteEthICMPEcho(Module): # ICMP --------------------------------------------------------------------------------------------- -class LiteEthICMP(Module): +class LiteEthICMP(LiteXModule): def __init__(self, ip, ip_address, dw=8): - self.submodules.tx = tx = LiteEthICMPTX(ip_address, dw) - self.submodules.rx = rx = LiteEthICMPRX(ip_address, dw) - self.submodules.echo = echo = LiteEthICMPEcho(dw) + self.tx = tx = LiteEthICMPTX(ip_address, dw) + self.rx = rx = LiteEthICMPRX(ip_address, dw) + self.echo = echo = LiteEthICMPEcho(dw) self.comb += [ rx.source.connect(echo.sink), echo.source.connect(tx.sink)