From b49eb433c86b9a2503b35eb241fe918697b40270 Mon Sep 17 00:00:00 2001 From: Vadzim Dambrouski Date: Mon, 4 Mar 2024 20:51:51 +0100 Subject: [PATCH] Add support for custom attributes on Signals --- litex/build/generic_toolchain.py | 17 +++++++++++++++++ litex/build/xilinx/platform.py | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/litex/build/generic_toolchain.py b/litex/build/generic_toolchain.py index 488b92178f..a584220a41 100644 --- a/litex/build/generic_toolchain.py +++ b/litex/build/generic_toolchain.py @@ -182,3 +182,20 @@ def add_false_path_constraint(self, platform, from_, to, keep=True): to.attr.add("keep") if (to, from_) not in self.false_paths: self.false_paths.add((from_, to)) + + def custom_attributes(self): + return CustomAttributes(self.attr_translate) + +class CustomAttributes: + def __init__(self, attributes): + self.attributes = attributes + + def get(self, k, v=None): + if k in self.attributes: + return self.attributes[k] + elif "=" in k: + parts = k.split("=", 1) + return parts[0].strip(), parts[1].strip() + elif v is not None: + return k, v + return None diff --git a/litex/build/xilinx/platform.py b/litex/build/xilinx/platform.py index 6c20f0c492..72a83c0616 100644 --- a/litex/build/xilinx/platform.py +++ b/litex/build/xilinx/platform.py @@ -87,7 +87,7 @@ def get_verilog(self, *args, special_overrides=dict(), **kwargs): so.update(special_overrides) return GenericPlatform.get_verilog(self, *args, special_overrides = so, - attr_translate = self.toolchain.attr_translate, + attr_translate = self.toolchain.custom_attributes(), **kwargs )