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.
This commit is contained in:
Sergiusz Bazanski 2018-01-23 00:23:20 +00:00
parent 67f8718b26
commit 21bd26dcdd
1 changed files with 12 additions and 5 deletions

View 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