def METHOD_NAME(self, sig, without_index=False):
    if sig is None:
        return None
    assert len(sig) == 1
    idx = 0
    slc = False
    while isinstance(sig, _Slice) and hasattr(sig, "value"):
        slc = True
        idx = sig.start
        sig = sig.value
    sc = self.constraint_manager.get_sig_constraints()
    for s, pins, others, resource in sc:
        if s == sig:
            if resource[2]:
                name = resource[0] + "_" + resource[2]
                if without_index is False:
                    name = name + (f"{idx}" if slc else "")
                return name
            else:
                return resource[0] + (f"{idx}" if slc else "")
    return None