lib.data: return View from .const()

This commit is contained in:
Vegard Storheil Eriksen 2023-10-10 11:44:27 +02:00 committed by Catherine
parent 7582ec301c
commit 392ead8d00
2 changed files with 9 additions and 9 deletions

View file

@ -229,7 +229,7 @@ class Layout(ShapeCastable, metaclass=ABCMeta):
mask = ((1 << cast_field_shape.width) - 1) << field.offset mask = ((1 << cast_field_shape.width) - 1) << field.offset
int_value &= ~mask int_value &= ~mask
int_value |= (key_value.value << field.offset) & mask int_value |= (key_value.value << field.offset) & mask
return Const(int_value, self.as_shape()) return View(self, Const(int_value, self.as_shape()))
class StructLayout(Layout): class StructLayout(Layout):

View file

@ -382,22 +382,22 @@ class LayoutTestCase(FHDLTestCase):
"a": unsigned(1), "a": unsigned(1),
"b": unsigned(2) "b": unsigned(2)
}) })
self.assertRepr(sl.const(None), "(const 3'd0)") self.assertRepr(sl.const(None).as_value(), "(const 3'd0)")
self.assertRepr(sl.const({"a": 0b1, "b": 0b10}), "(const 3'd5)") self.assertRepr(sl.const({"a": 0b1, "b": 0b10}).as_value(), "(const 3'd5)")
fl = FlexibleLayout(2, { fl = FlexibleLayout(2, {
"a": Field(unsigned(1), 0), "a": Field(unsigned(1), 0),
"b": Field(unsigned(2), 0) "b": Field(unsigned(2), 0)
}) })
self.assertRepr(fl.const({"a": 0b11}), "(const 2'd1)") self.assertRepr(fl.const({"a": 0b11}).as_value(), "(const 2'd1)")
self.assertRepr(fl.const({"b": 0b10}), "(const 2'd2)") self.assertRepr(fl.const({"b": 0b10}).as_value(), "(const 2'd2)")
self.assertRepr(fl.const({"a": 0b1, "b": 0b10}), "(const 2'd2)") self.assertRepr(fl.const({"a": 0b1, "b": 0b10}).as_value(), "(const 2'd2)")
sls = StructLayout({ sls = StructLayout({
"a": signed(4), "a": signed(4),
"b": signed(4) "b": signed(4)
}) })
self.assertRepr(sls.const({"b": 0, "a": -1}), "(const 8'd15)") self.assertRepr(sls.const({"b": 0, "a": -1}).as_value(), "(const 8'd15)")
def test_const_wrong(self): def test_const_wrong(self):
sl = StructLayout({"f": unsigned(1)}) sl = StructLayout({"f": unsigned(1)})
@ -418,7 +418,7 @@ class LayoutTestCase(FHDLTestCase):
return int(init, 16) return int(init, 16)
sl = StructLayout({"f": CastableFromHex()}) sl = StructLayout({"f": CastableFromHex()})
self.assertRepr(sl.const({"f": "aa"}), "(const 8'd170)") self.assertRepr(sl.const({"f": "aa"}).as_value(), "(const 8'd170)")
with self.assertRaisesRegex(ValueError, with self.assertRaisesRegex(ValueError,
r"^Constant returned by <.+?CastableFromHex.+?>\.const\(\) must have the shape " r"^Constant returned by <.+?CastableFromHex.+?>\.const\(\) must have the shape "
@ -427,7 +427,7 @@ class LayoutTestCase(FHDLTestCase):
def test_const_field_const(self): def test_const_field_const(self):
sl = StructLayout({"f": unsigned(1)}) sl = StructLayout({"f": unsigned(1)})
self.assertRepr(sl.const({"f": Const(1)}), "(const 1'd1)") self.assertRepr(sl.const({"f": Const(1)}).as_value(), "(const 1'd1)")
def test_signal_reset(self): def test_signal_reset(self):
sl = StructLayout({ sl = StructLayout({