Skip to content

Commit 8af9fe2

Browse files
wanda-phiwhitequark
authored andcommitted
lib.memory: Add missing __eq__ to signature types.
1 parent c6bc9b4 commit 8af9fe2

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

amaranth/lib/memory.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,12 @@ def shape(self):
110110
def granularity(self):
111111
return self._granularity
112112

113+
def __eq__(self, other):
114+
return (type(self) is type(other) and
115+
self.addr_width == other.addr_width and
116+
self.shape == other.shape and
117+
self.granularity == other.granularity)
118+
113119
def __repr__(self):
114120
granularity = f", granularity={self.granularity}" if self.granularity is not None else ""
115121
return f"WritePort.Signature(addr_width={self.addr_width}, shape={self.shape}{granularity})"
@@ -213,6 +219,11 @@ def addr_width(self):
213219
def shape(self):
214220
return self._shape
215221

222+
def __eq__(self, other):
223+
return (type(self) is type(other) and
224+
self.addr_width == other.addr_width and
225+
self.shape == other.shape)
226+
216227
def __repr__(self):
217228
return f"ReadPort.Signature(addr_width={self.addr_width}, shape={self.shape})"
218229

tests/test_lib_memory.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,16 @@ def test_signature_wrong(self):
8383
"^Granularity must divide data array length$"):
8484
WritePort.Signature(addr_width=2, shape=ArrayLayout(8, 8), granularity=3)
8585

86+
def test_signature_eq(self):
87+
sig = WritePort.Signature(addr_width=2, shape=8)
88+
self.assertEqual(sig, WritePort.Signature(addr_width=2, shape=8))
89+
self.assertNotEqual(sig, WritePort.Signature(addr_width=2, shape=7))
90+
self.assertNotEqual(sig, WritePort.Signature(addr_width=1, shape=8))
91+
self.assertNotEqual(sig, WritePort.Signature(addr_width=2, shape=8, granularity=8))
92+
sig = WritePort.Signature(addr_width=2, shape=8, granularity=4)
93+
self.assertEqual(sig, WritePort.Signature(addr_width=2, shape=8, granularity=4))
94+
self.assertNotEqual(sig, WritePort.Signature(addr_width=2, shape=8, granularity=8))
95+
8696
def test_constructor(self):
8797
signature = WritePort.Signature(shape=MyStruct, addr_width=4)
8898
port = WritePort(signature, memory=None, domain="sync")
@@ -171,6 +181,13 @@ def test_signature_wrong(self):
171181
"^`addr_width` must be a non-negative int, not -2$"):
172182
ReadPort.Signature(addr_width=-2, shape=8)
173183

184+
def test_signature_eq(self):
185+
sig = ReadPort.Signature(addr_width=2, shape=8)
186+
self.assertEqual(sig, ReadPort.Signature(addr_width=2, shape=8))
187+
self.assertNotEqual(sig, ReadPort.Signature(addr_width=2, shape=7))
188+
self.assertNotEqual(sig, ReadPort.Signature(addr_width=1, shape=8))
189+
self.assertNotEqual(sig, WritePort.Signature(addr_width=2, shape=8))
190+
174191
def test_constructor(self):
175192
signature = ReadPort.Signature(shape=MyStruct, addr_width=4)
176193
port = ReadPort(signature, memory=None, domain="sync")

0 commit comments

Comments
 (0)