diff --git a/litex/build/generic_platform.py b/litex/build/generic_platform.py index a5a12fe12..d96e3d761 100644 --- a/litex/build/generic_platform.py +++ b/litex/build/generic_platform.py @@ -161,10 +161,14 @@ class ConstraintManager: def request(self, name, number=None): resource = _lookup(self.available, name, number) rt = _resource_type(resource) - if isinstance(rt, int): - obj = Signal(rt, name_override=resource[0]) + if number is None: + resource_name = name else: - obj = Record(rt, name=resource[0]) + resource_name = name + str(number) + if isinstance(rt, int): + obj = Signal(rt, name_override=resource_name) + else: + obj = Record(rt, name=resource_name, use_name_override=True) for element in resource[2:]: if isinstance(element, PlatformInfo): diff --git a/litex/gen/genlib/record.py b/litex/gen/genlib/record.py index 0038b0697..f31a2c24a 100644 --- a/litex/gen/genlib/record.py +++ b/litex/gen/genlib/record.py @@ -86,7 +86,7 @@ def layout_partial(layout, *elements): class Record: - def __init__(self, layout, name=None): + def __init__(self, layout, name=None, use_name_override=False): self.name = get_obj_var_name(name, "") self.layout = layout @@ -100,7 +100,10 @@ class Record: fname, fsize, fdirection = f else: fname, fsize = f - finst = Signal(fsize, name=prefix + fname) + if use_name_override: + finst = Signal(fsize, name_override=prefix + fname) + else: + finst = Signal(fsize, name=prefix + fname) elif isinstance(f[1], list): # case 3 fname, fsublayout = f finst = Record(fsublayout, prefix + fname)