Allow for multiple synthesis directives in specials.
authorSergiusz Bazanski <q3k@q3k.org>
Tue, 23 Jan 2018 00:23:20 +0000 (00:23 +0000)
committerSergiusz Bazanski <q3k@q3k.org>
Tue, 23 Jan 2018 00:27:49 +0000 (00:27 +0000)
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

index 4b7ab38698673c699813ee9ba63a688008012819..e3fdafdf8a919c74bd60af5cc71a480df9f4ca7b 100644 (file)
@@ -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