diff --git a/migen/genlib/record.py b/migen/genlib/record.py index 10e3a43cf..521dcb2c1 100644 --- a/migen/genlib/record.py +++ b/migen/genlib/record.py @@ -56,11 +56,21 @@ def layout_partial(layout, *elements): insert_ref.append(layout_get(copy_ref, last)) return r +class LayoutP: + def __init__(self, layout, **layout_dict): + self.layout = layout + self.layout_dict = layout_dict + class Record: def __init__(self, layout, name=None, **layout_dict): self.name = get_obj_var_name(name, "") - self.layout = layout - self.layout_dict = layout_dict + if isinstance(layout, LayoutP): + self.layout = layout.layout + self.layout_dict = layout.layout_dict + assert(not layout_dict) + else: + self.layout = layout + self.layout_dict = layout_dict if self.name: prefix = self.name + "_"