def im_netname(obj: OrderedDict, suffix: str = "") -> str: """return top signal name with index """ # Floating signals # TODO: Check logic type too # TODO: Find smarter way to assign default? if "top_signame" not in obj: if obj["act"] == "req" and suffix == "req": return "" if obj["act"] == "rsp" and suffix == "rsp": return "" if obj["act"] == "req" and suffix == "rsp": return "{package}::{struct}_RSP_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) if obj["act"] == "rsp" and suffix == "req": return "{package}::{struct}_REQ_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) if obj["act"] == "rcv" and suffix == "": return "{package}::{struct}_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) return "" # Connected signals assert suffix in ["", "req", "rsp"] suffix_s = "_{suffix}".format(suffix=suffix) if suffix != "" else suffix return "{top_signame}{suffix}{index}".format( top_signame=obj["top_signame"], suffix=suffix_s, index=lib.index(obj["index"]))
def im_netname(obj: OrderedDict, suffix: str = "") -> str: """return top signal name with index """ # sanity check and add missing fields check_intermodule_field(obj) # Floating signals # TODO: Find smarter way to assign default? if "top_signame" not in obj: if obj["act"] == "req" and suffix == "req": return "" if obj["act"] == "rsp" and suffix == "rsp": return "" if obj["act"] == "req" and suffix == "rsp": # custom default has been specified if obj["default"]: return obj["default"] return "{package}::{struct}_RSP_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) if obj["act"] == "rsp" and suffix == "req": # custom default has been specified if obj["default"]: return obj["default"] return "{package}::{struct}_REQ_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) if obj["act"] == "rcv" and suffix == "" and obj["struct"] == "logic": # custom default has been specified if obj["default"]: return obj["default"] return "'0" if obj["act"] == "rcv" and suffix == "": # custom default has been specified if obj["default"]: return obj["default"] return "{package}::{struct}_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) return "" # Connected signals assert suffix in ["", "req", "rsp"] suffix_s = "_{suffix}".format(suffix=suffix) if suffix != "" else suffix return "{top_signame}{suffix}{index}".format( top_signame=obj["top_signame"], suffix=suffix_s, index=lib.index(obj["index"]))
def im_netname(obj: OrderedDict, suffix: str = "") -> str: """return top signal name with index It also adds suffix for external signal """ # sanity check and add missing fields check_intermodule_field(obj) # Floating signals # TODO: Find smarter way to assign default? if "top_signame" not in obj: if obj["act"] == "req" and suffix == "req": return "" if obj["act"] == "rsp" and suffix == "rsp": return "" if obj["act"] == "req" and suffix == "rsp": # custom default has been specified if obj["default"]: return obj["default"] if obj["package"] == "tlul_pkg" and obj["struct"] == "tl": return "{package}::{struct}_D2H_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) return "{package}::{struct}_RSP_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) if obj["act"] == "rsp" and suffix == "req": # custom default has been specified if obj["default"]: return obj["default"] if obj["package"] == "tlul_pkg" and obj["struct"] == "tl": return "{package}::{struct}_H2D_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) return "{package}::{struct}_REQ_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) if obj["act"] == "rcv" and suffix == "" and obj["struct"] == "logic": # custom default has been specified if obj["default"]: return obj["default"] return "'0" if obj["act"] == "rcv" and suffix == "": # custom default has been specified if obj["default"]: return obj["default"] return "{package}::{struct}_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) return "" # Connected signals assert suffix in ["", "req", "rsp"] suffix_s = "_{suffix}".format(suffix=suffix) if suffix != "" else suffix # External signal handling if "external" in obj and obj["external"]: pairs = { # act , suffix: additional suffix ("req", "req"): "_o", ("req", "rsp"): "_i", ("rsp", "req"): "_i", ("rsp", "rsp"): "_o", ("req", ""): "_o", ("rcv", ""): "_i" } suffix_s += pairs[(obj['act'], suffix)] return "{top_signame}{suffix}{index}".format( top_signame=obj["top_signame"], suffix=suffix_s, index=lib.index(obj["index"]))
def im_netname(sig: OrderedDict, suffix: str = "", default_name=False) -> str: """return top signal name with index It also adds suffix for external signal. The default name input forces function to return default name, even if object has a connection. """ # Basic check and add missing fields err, obj = check_intermodule_field(sig) assert not err # Floating signals # TODO: Find smarter way to assign default? if "top_signame" not in obj or default_name: if obj["act"] == "req" and suffix == "req": return "" if obj["act"] == "rsp" and suffix == "rsp": return "" if obj["act"] == "req" and suffix == "rsp": # custom default has been specified if obj["default"]: return obj["default"] if obj["package"] == "tlul_pkg" and obj["struct"] == "tl": return "{package}::{struct}_D2H_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) return "{package}::{struct}_RSP_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) if obj["act"] == "rsp" and suffix == "req": # custom default has been specified if obj["default"]: return obj["default"] if obj.get("package") == "tlul_pkg" and obj["struct"] == "tl": return "{package}::{struct}_H2D_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) # default is used for dangling ports in definitions. # the struct name already has `_req` suffix return "{package}::{struct}_REQ_DEFAULT".format( package=obj.get("package", ''), struct=obj["struct"].upper()) if obj["act"] == "rcv" and suffix == "" and obj["struct"] == "logic": # custom default has been specified if obj["default"]: return obj["default"] return "'0" if obj["act"] == "rcv" and suffix == "": # custom default has been specified if obj["default"]: return obj["default"] return "{package}::{struct}_DEFAULT".format( package=obj["package"], struct=obj["struct"].upper()) return "" # Connected signals assert suffix in ["", "req", "rsp"] suffix_s = "_{suffix}".format(suffix=suffix) if suffix != "" else suffix # External signal handling if "external" in obj and obj["external"]: pairs = { # act , suffix: additional suffix ("req", "req"): "_o", ("req", "rsp"): "_i", ("rsp", "req"): "_i", ("rsp", "rsp"): "_o", ("req", ""): "_o", ("rcv", ""): "_i" } suffix_s += pairs[(obj['act'], suffix)] return "{top_signame}{suffix}{index}".format( top_signame=obj["top_signame"], suffix=suffix_s, index=lib.index(obj["index"]))