[util] Add version requirement for Xilinx Vivado
This commit adds a minimum version requirement for Xilinx Vivado
(currently set to 2020.1). We do not yet enforce a specific Vivado
version but maybe will do that soon. At the moment, having a specified
version allows us to more easily keep the documentation up to date.
Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
diff --git a/util/check_tool_requirements.py b/util/check_tool_requirements.py
index 5c1d386..f706625 100755
--- a/util/check_tool_requirements.py
+++ b/util/check_tool_requirements.py
@@ -223,6 +223,21 @@
return '.'.join(m.group(1, 2, 3))
+class VivadoToolReq(ToolReq):
+ tool_cmd = ['vivado', '-version']
+ version_regex = re.compile(r'Vivado v(.*)\s')
+
+ def to_semver(self, version, from_req):
+ # Regular Vivado releases just have a major and minor version.
+ # In this case, we set the patch level to 0.
+ m = re.fullmatch(r'([0-9]+)\.([0-9]+)(?:\.([0-9]+))?', version)
+ if m is None:
+ raise ValueError("{} has invalid version string format."
+ .format(version))
+
+ return '.'.join((m.group(1), m.group(2), m.group(3) or '0'))
+
+
class VcsToolReq(ToolReq):
tool_cmd = ['vcs', '-full64', '-ID']
tool_env = {'VCS_ARCH_OVERRIDE': 'linux'}
@@ -308,7 +323,8 @@
'edalize': PyModuleToolReq,
'vcs': VcsToolReq,
'verible': VeribleToolReq,
- 'verilator': VerilatorToolReq
+ 'verilator': VerilatorToolReq,
+ 'vivado': VivadoToolReq,
}
cls = classes.get(tool, ToolReq)