from amaranth import * from amaranth.lib.data import StructLayout # from amaranth.lib.enum import Enum from enum import Enum class Foo(Enum): FOO = 1 BAR = 2 MyLayout = StructLayout({ "bar": unsigned(1), "foo": Foo }) class MyElab(Elaboratable): def __init__(self): self.data_all = Signal(MyLayout) # No reset-value required... why? # Shouldn't it complain about 0 not being a valid Foo variant? # Works with either amaranth.lib.enum or enum. # self.data_foo = Signal(Foo) # TypeError: Reset value must be a # constant initializer of ? Only errors with # amaranth.lib.enum. self.data_foo = Signal(Foo) def elaborate(self, plat): m = Module() # 'Slice' object has no attribute 'FOO'? with m.If(self.data_foo == self.data_all.shape()["foo"].shape.FOO): pass MyElab().elaborate(None)