From 08adbd8ede8c89b2dd6e493d75d3ffd5de0e57a3 Mon Sep 17 00:00:00 2001 From: Fischer Moseley <42497969+fischermoseley@users.noreply.github.com> Date: Sun, 3 Mar 2024 19:10:06 -0800 Subject: [PATCH] switch to wiring.Component instead of Elaboratable --- src/manta/ethernet/__init__.py | 4 +++- src/manta/ethernet/sink_bridge.py | 4 +++- src/manta/ethernet/source_bridge.py | 4 +++- src/manta/logic_analyzer/__init__.py | 2 ++ src/manta/logic_analyzer/fsm.py | 5 +++-- src/manta/logic_analyzer/playback.py | 4 +++- src/manta/logic_analyzer/trigger_block.py | 6 ++++-- src/manta/manta.py | 7 ++++--- src/manta/memory_core.py | 2 ++ src/manta/uart/__init__.py | 4 +++- src/manta/uart/receive_bridge.py | 4 +++- src/manta/uart/receiver.py | 4 +++- src/manta/uart/transmit_bridge.py | 4 +++- src/manta/uart/transmitter.py | 4 +++- src/manta/utils.py | 6 ++++-- test/test_io_core_hw.py | 2 +- test/test_logic_analyzer_hw.py | 2 +- test/test_mem_core_hw.py | 2 +- 18 files changed, 49 insertions(+), 21 deletions(-) diff --git a/src/manta/ethernet/__init__.py b/src/manta/ethernet/__init__.py index dc5ca69..cb79c4a 100644 --- a/src/manta/ethernet/__init__.py +++ b/src/manta/ethernet/__init__.py @@ -1,4 +1,6 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from manta.utils import * from manta.ethernet.source_bridge import UDPSourceBridge from manta.ethernet.sink_bridge import UDPSinkBridge @@ -6,7 +8,7 @@ from random import randint import socket -class EthernetInterface(Elaboratable): +class EthernetInterface(wiring.Component): """ A module for communicating with Manta over Ethernet, using UDP. diff --git a/src/manta/ethernet/sink_bridge.py b/src/manta/ethernet/sink_bridge.py index 621d8b9..bec5761 100644 --- a/src/manta/ethernet/sink_bridge.py +++ b/src/manta/ethernet/sink_bridge.py @@ -1,8 +1,10 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from manta.utils import * -class UDPSinkBridge(Elaboratable): +class UDPSinkBridge(wiring.Component): """ A module for bridging Manta's internal bus to an AXI stream of UDP packet data. Connects to the LiteEth core's "sink" port. diff --git a/src/manta/ethernet/source_bridge.py b/src/manta/ethernet/source_bridge.py index 4ed8765..504ddb2 100644 --- a/src/manta/ethernet/source_bridge.py +++ b/src/manta/ethernet/source_bridge.py @@ -1,8 +1,10 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from manta.utils import * -class UDPSourceBridge(Elaboratable): +class UDPSourceBridge(wiring.Component): """ A module for bridging the AXI-stream of incoming UDP packet data to Manta's internal bus. Connects to the LiteEth core's "source" port. diff --git a/src/manta/logic_analyzer/__init__.py b/src/manta/logic_analyzer/__init__.py index 2276a6a..11b9c95 100644 --- a/src/manta/logic_analyzer/__init__.py +++ b/src/manta/logic_analyzer/__init__.py @@ -1,4 +1,6 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from manta.utils import * from manta.memory_core import MemoryCore from manta.logic_analyzer.trigger_block import LogicAnalyzerTriggerBlock diff --git a/src/manta/logic_analyzer/fsm.py b/src/manta/logic_analyzer/fsm.py index 4853963..26f9aa7 100644 --- a/src/manta/logic_analyzer/fsm.py +++ b/src/manta/logic_analyzer/fsm.py @@ -1,6 +1,7 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from amaranth.lib.enum import IntEnum -from math import ceil, log2 from manta.io_core import IOCore @@ -18,7 +19,7 @@ class TriggerModes(IntEnum): IMMEDIATE = 2 -class LogicAnalyzerFSM(Elaboratable): +class LogicAnalyzerFSM(wiring.Component): """ A module containing the state machine for a LogicAnalyzerCore. Primarily responsible for controlling the write port of the Logic Analyzer's sample diff --git a/src/manta/logic_analyzer/playback.py b/src/manta/logic_analyzer/playback.py index 5ddb6d9..b4b7175 100644 --- a/src/manta/logic_analyzer/playback.py +++ b/src/manta/logic_analyzer/playback.py @@ -1,7 +1,9 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out -class LogicAnalyzerPlayback(Elaboratable): +class LogicAnalyzerPlayback(wiring.Component): """ A synthesizable module that plays back data captured by a LogicAnalyzerCore. Takes a list of all the samples captured by a core, diff --git a/src/manta/logic_analyzer/trigger_block.py b/src/manta/logic_analyzer/trigger_block.py index 9db01a2..626fc34 100644 --- a/src/manta/logic_analyzer/trigger_block.py +++ b/src/manta/logic_analyzer/trigger_block.py @@ -1,9 +1,11 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from amaranth.lib.enum import IntEnum from manta.io_core import IOCore -class LogicAnalyzerTriggerBlock(Elaboratable): +class LogicAnalyzerTriggerBlock(wiring.Component): """ A module containing an instance of a LogicAnalyzerTrigger for each input probe. The operations and arguments of these LogicAnalyzerTriggers are set @@ -86,7 +88,7 @@ class Operations(IntEnum): NEQ = 9 -class LogicAnalyzerTrigger(Elaboratable): +class LogicAnalyzerTrigger(wiring.Component): """ A module containing a programmable "trigger" for a given input signal, which asserts its output when the programmed "trigger condition" is met. diff --git a/src/manta/manta.py b/src/manta/manta.py index b5ea59e..b2aa899 100644 --- a/src/manta/manta.py +++ b/src/manta/manta.py @@ -1,13 +1,14 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from manta.uart import UARTInterface - from manta.ethernet import EthernetInterface from manta.io_core import IOCore from manta.memory_core import MemoryCore from manta.logic_analyzer import LogicAnalyzerCore -class Manta(Elaboratable): +class Manta(wiring.Component): def __init__(self, config): # Load config from either a configuration file or a dictionary. # Users primarily use the config file, but the dictionary is @@ -157,7 +158,7 @@ class Manta(Elaboratable): ports = self.interface.get_top_level_ports() for name, instance in self._cores.items(): - ports += instance.get_top_level_ports() + ports += instance.top_level_ports return ports diff --git a/src/manta/memory_core.py b/src/manta/memory_core.py index edcbb74..556d142 100644 --- a/src/manta/memory_core.py +++ b/src/manta/memory_core.py @@ -1,4 +1,6 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from manta.utils import * from math import ceil diff --git a/src/manta/uart/__init__.py b/src/manta/uart/__init__.py index 2e38cf4..cf88122 100644 --- a/src/manta/uart/__init__.py +++ b/src/manta/uart/__init__.py @@ -1,4 +1,6 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from manta.utils import * from manta.uart.receiver import UARTReceiver from manta.uart.receive_bridge import ReceiveBridge @@ -7,7 +9,7 @@ from manta.uart.transmit_bridge import TransmitBridge from serial import Serial -class UARTInterface(Elaboratable): +class UARTInterface(wiring.Component): """ A module for communicating with Manta over UART. diff --git a/src/manta/uart/receive_bridge.py b/src/manta/uart/receive_bridge.py index d78c4bd..5d75dfa 100644 --- a/src/manta/uart/receive_bridge.py +++ b/src/manta/uart/receive_bridge.py @@ -1,4 +1,6 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out from amaranth.lib.enum import IntEnum from amaranth.lib.data import ArrayLayout @@ -9,7 +11,7 @@ class States(IntEnum): WRITE = 2 -class ReceiveBridge(Elaboratable): +class ReceiveBridge(wiring.Component): """ A module for bridging the stream of bytes from the UARTReceiver module to Manta's internal bus. diff --git a/src/manta/uart/receiver.py b/src/manta/uart/receiver.py index 2fe65df..8c9f918 100644 --- a/src/manta/uart/receiver.py +++ b/src/manta/uart/receiver.py @@ -1,7 +1,9 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out -class UARTReceiver(Elaboratable): +class UARTReceiver(wiring.Component): """ A module for receiving bytes on a 8N1 UART at a configurable baudrate. Outputs bytes as a stream. diff --git a/src/manta/uart/transmit_bridge.py b/src/manta/uart/transmit_bridge.py index abb1c82..a288414 100644 --- a/src/manta/uart/transmit_bridge.py +++ b/src/manta/uart/transmit_bridge.py @@ -1,7 +1,9 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out -class TransmitBridge(Elaboratable): +class TransmitBridge(wiring.Component): """ A module for bridging Manta's internal bus to the stream of bytes expected by the UARTTransmitter module. diff --git a/src/manta/uart/transmitter.py b/src/manta/uart/transmitter.py index cea5764..c71fd8b 100644 --- a/src/manta/uart/transmitter.py +++ b/src/manta/uart/transmitter.py @@ -1,7 +1,9 @@ from amaranth import * +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out -class UARTTransmitter(Elaboratable): +class UARTTransmitter(wiring.Component): """ A module for transmitting bytes on a 8N1 UART at a configurable baudrate. Accepts bytes as a stream. diff --git a/src/manta/utils.py b/src/manta/utils.py index b9bfba8..7a75ac9 100644 --- a/src/manta/utils.py +++ b/src/manta/utils.py @@ -1,11 +1,13 @@ from amaranth import * -from amaranth.sim import Simulator from amaranth.lib import data +from amaranth.lib import wiring +from amaranth.lib.wiring import In, Out +from amaranth.sim import Simulator from abc import ABC, abstractmethod import os -class MantaCore(ABC, Elaboratable): +class MantaCore(ABC, wiring.Component): @property @abstractmethod diff --git a/test/test_io_core_hw.py b/test/test_io_core_hw.py index 6715728..25edac1 100644 --- a/test/test_io_core_hw.py +++ b/test/test_io_core_hw.py @@ -7,7 +7,7 @@ import pytest from random import randint -class IOCoreLoopbackTest(Elaboratable): +class IOCoreLoopbackTest(wiring.Component): def __init__(self, platform, port): self.platform = platform self.port = port diff --git a/test/test_logic_analyzer_hw.py b/test/test_logic_analyzer_hw.py index 8a25335..7521c0a 100644 --- a/test/test_logic_analyzer_hw.py +++ b/test/test_logic_analyzer_hw.py @@ -6,7 +6,7 @@ from manta.utils import * import pytest -class LogicAnalyzerCounterTest(Elaboratable): +class LogicAnalyzerCounterTest(wiring.Component): def __init__(self, platform, port): self.platform = platform self.port = port diff --git a/test/test_mem_core_hw.py b/test/test_mem_core_hw.py index 18070ee..185eff1 100644 --- a/test/test_mem_core_hw.py +++ b/test/test_mem_core_hw.py @@ -14,7 +14,7 @@ configuration, or a standard one. """ -class MemoryCoreLoopbackTest(Elaboratable): +class MemoryCoreLoopbackTest(wiring.Component): def __init__(self, platform, width, depth, port): self.platform = platform self.width = width