fhdl/special: add optional synthesis directive (needed by Synplify Pro)
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Tue, 17 Mar 2015 13:59:05 +0000 (14:59 +0100)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Tue, 17 Mar 2015 13:59:05 +0000 (14:59 +0100)
migen/fhdl/specials.py

index ca0df99fb8a924c736a9ea384f869eb207a17008..78098dd11dd26fa7a84ed15f1c1d303dfb1d2b4a 100644 (file)
@@ -89,7 +89,7 @@ class Instance(Special):
        class PreformattedParam(str):
                pass
 
-       def __init__(self, of, *items, name="", **kwargs):
+       def __init__(self, of, *items, name="", synthesis_directive=None, **kwargs):
                Special.__init__(self)
                self.of = of
                if name:
@@ -97,6 +97,7 @@ class Instance(Special):
                else:
                        self.name_override = of
                self.items = list(items)
+               self.synthesis_directive = synthesis_directive
                for k, v in sorted(kwargs.items(), key=itemgetter(0)):
                        item_type, item_name = k.split("_", maxsplit=1)
                        item_class = {
@@ -159,7 +160,11 @@ class Instance(Special):
                                r += "\t." + name_inst + "(" + name_design + ")"
                if not firstp:
                        r += "\n"
-               r += ");\n\n"
+               if instance.synthesis_directive is not None:
+                       synthesis_directive = "/* synthesis {} */".format(instance.synthesis_directive)
+                       r += ")" + synthesis_directive + ";\n\n"
+               else:
+                       r += ");\n\n"
                return r
 
 (READ_FIRST, WRITE_FIRST, NO_CHANGE) = range(3)