From 21bd26dcdd68285bfbf9d78618002c674c56f734 Mon Sep 17 00:00:00 2001 From: Sergiusz Bazanski Date: Tue, 23 Jan 2018 00:23:20 +0000 Subject: [PATCH] Allow for multiple synthesis directives in specials. This is needed to specify timing constraints on some Lattice Diamond library specials, like the EHXPLLL. To keep backwards compatibility we allow the directive to still be a single string. If it's not, we assume it's an iterable. --- litex/gen/fhdl/specials.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/litex/gen/fhdl/specials.py b/litex/gen/fhdl/specials.py index 4b7ab3869..e3fdafdf8 100644 --- a/litex/gen/fhdl/specials.py +++ b/litex/gen/fhdl/specials.py @@ -181,11 +181,18 @@ class Instance(Special): r += "\t." + name_inst + "(" + name_design + ")" if not firstp: r += "\n" - if instance.synthesis_directive is not None: - synthesis_directive = "/* synthesis {} */".format(instance.synthesis_directive) - r += ")" + synthesis_directive + ";\n\n" - else: - r += ");\n\n" + + directives = instance.synthesis_directive + if directives is None: + directives = [] + elif type(directives) == str : + directives = [directives,] + + r += ")"; + for directive in directives: + r += "\n\t/* synthesis {} */".format(directive) + r += ";\n\n" + return r