diff --git a/amaranth/lib/wiring.py b/amaranth/lib/wiring.py index b91a0e74c..4a08469af 100644 --- a/amaranth/lib/wiring.py +++ b/amaranth/lib/wiring.py @@ -5,6 +5,7 @@ from .. import tracer from ..hdl._ast import Shape, ShapeCastable, Const, Signal, Value, ValueCastable +from ..hdl._dsl import Module from ..hdl._ir import Elaboratable from .._utils import final from .meta import Annotation, InvalidAnnotation @@ -1401,6 +1402,9 @@ def connect(m, *args, **kwargs): a connection cannot be made. """ + if not isinstance(m, Module): + raise TypeError(f"The initial argument must be a module, not {m!r}") + objects = { **{index: arg for index, arg in enumerate(args)}, **{keyword: arg for keyword, arg in kwargs.items()} diff --git a/tests/test_lib_wiring.py b/tests/test_lib_wiring.py index 79f96e292..eb2639047 100644 --- a/tests/test_lib_wiring.py +++ b/tests/test_lib_wiring.py @@ -1045,6 +1045,15 @@ def test_connect_multi_some_in_pairs(self): a=Signal(), b=Signal())) + def test_bug_1435_missing_module(self): + sig = Signature({"a": Out(1)}) + p = sig.create() + q = sig.flip().create() + + with self.assertRaisesRegex(TypeError, + r"^The initial argument must be a module, not $"): + connect(p, q) + class ComponentTestCase(unittest.TestCase): def test_basic(self):