# Workaround for https://github.com/YosysHQ/yosys/issues/4349. # # Signal renaming in Yosys sometimes causes name conflicts when both signals foo and foo[0] exist in the original design, which happens when we use data.ArrayLayout. # We can work around this by monkeypatching Format.Array to generate struct suffixes for array fields, i.e. foo.0 instead of foo[0]. from amaranth import Format def Array(value, /, fields): return Format.Struct(value, {str(i): f for i, f in enumerate(fields)}) Format.Array = Array