From d74f8fc93d5377a50f408310f8e032e6922c33fd Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Thu, 7 May 2020 11:34:26 +0200 Subject: [PATCH] build/xilinx: add disable_constraints parameter to Platform.add_ip. When integrate .xci, we don't necessarily want to apply the default timing/loc constrants generated by Vivado but our custom ones. Setting disable_constraints to True allow disabling .xdc generated by the IP. --- litex/build/xilinx/platform.py | 6 +++--- litex/build/xilinx/vivado.py | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/litex/build/xilinx/platform.py b/litex/build/xilinx/platform.py index d5e3d8f8..c2b769ff 100644 --- a/litex/build/xilinx/platform.py +++ b/litex/build/xilinx/platform.py @@ -15,7 +15,7 @@ class XilinxPlatform(GenericPlatform): def __init__(self, *args, toolchain="ise", **kwargs): GenericPlatform.__init__(self, *args, **kwargs) self.edifs = set() - self.ips = set() + self.ips = {} if toolchain == "ise": self.toolchain = ise.XilinxISEToolchain() elif toolchain == "vivado": @@ -26,8 +26,8 @@ class XilinxPlatform(GenericPlatform): def add_edif(self, filename): self.edifs.add((os.path.abspath(filename))) - def add_ip(self, filename): - self.ips.add((os.path.abspath(filename))) + def add_ip(self, filename, disable_constraints=False): + self.ips.update({os.path.abspath(filename): disable_constraints}) def get_verilog(self, *args, special_overrides=dict(), **kwargs): so = dict(common.xilinx_special_overrides) diff --git a/litex/build/xilinx/vivado.py b/litex/build/xilinx/vivado.py index 70cf5c80..ac43dfc7 100644 --- a/litex/build/xilinx/vivado.py +++ b/litex/build/xilinx/vivado.py @@ -155,7 +155,7 @@ class XilinxVivadoToolchain: # Add IPs tcl.append("\n# Add IPs\n") - for filename in platform.ips: + for filename, disable_constraints in platform.ips.items(): filename_tcl = "{" + filename + "}" ip = os.path.splitext(os.path.basename(filename))[0] tcl.append("read_ip " + filename_tcl) @@ -163,6 +163,8 @@ class XilinxVivadoToolchain: tcl.append("generate_target all [get_ips {}]".format(ip)) tcl.append("synth_ip [get_ips {}] -force".format(ip)) tcl.append("get_files -all -of_objects [get_files {}]".format(filename_tcl)) + if disable_constraints: + tcl.append("set_property is_enabled false [get_files -of_objects [get_files {}] -filter {{FILE_TYPE == XDC}}]".format(filename_tcl)) # Add constraints tcl.append("\n# Add constraints\n") -- 2.30.2