Synthesis tools are now a set of classes inherited by synthesis action

parent a76999c2
......@@ -31,7 +31,32 @@ from hdlmake.util import path
from .action import Action
class ActionSynthesis(Action):
from hdlmake.tools import (
ToolISE, ToolPlanAhead, ToolVivado,
ToolQuartus, ToolDiamond, ToolLibero)
class ActionSynthesis(Action,
ToolISE, ToolPlanAhead, ToolVivado,
ToolQuartus, ToolDiamond, ToolLibero):
def _load_synthesis_tool(self):
tool_name = self.get_top_module().manifest_dict["syn_tool"]
if tool_name is "ise":
tool_object = ToolISE()
elif tool_name is "planahead":
tool_object = ToolPlanAhead()
elif tool_name is "vivado":
tool_object = ToolVivado()
elif tool_name is "quartus":
tool_object = ToolQuartus()
elif tool_name is "diamond":
tool_object = ToolDiamond()
elif tool_name is "libero":
tool_object = ToolLibero()
else:
logging.error("Synthesis tool not recognized: %s", tool_name)
return tool_object
def _check_synthesis_makefile(self):
# NOTE: top_module is not used in synthesis!!
......@@ -49,9 +74,7 @@ class ActionSynthesis(Action):
def _generate_synthesis_makefile(self):
tool_name = self.get_top_module().manifest_dict["syn_tool"]
tool_module = importlib.import_module("hdlmake.tools.%s.%s" % (tool_name, tool_name))
tool_object = tool_module.ToolControls()
tool_object = self._load_synthesis_tool()
tool_info = tool_object.get_keys()
if sys.platform == 'cygwin':
bin_name = tool_info['windows_bin']
......@@ -173,9 +196,7 @@ end sdb_meta_pkg;""")
def _generate_synthesis_project(self):
tool_name = self.get_top_module().manifest_dict["syn_tool"]
tool_module = importlib.import_module("hdlmake.tools.%s.%s" % (tool_name, tool_name))
tool_object = tool_module.ToolControls()
tool_object = self._load_synthesis_tool()
tool_info = tool_object.get_keys()
if sys.platform == 'cygwin':
bin_name = tool_info['windows_bin']
......@@ -248,9 +269,7 @@ end sdb_meta_pkg;""")
def _generate_remote_synthesis_makefile(self):
tool_name = self.get_top_module().manifest_dict["syn_tool"]
tool_module = importlib.import_module("hdlmake.tools.%s.%s" % (tool_name, tool_name))
tool_object = tool_module.ToolControls()
tool_object = self._load_synthesis_tool()
logging.info("Generating makefile for remote synthesis.")
top_mod = self.get_top_module()
......
......@@ -5,3 +5,11 @@ from .active_hdl import ToolActiveHDL
from .riviera import ToolRiviera
from .ghdl import ToolGHDL
from .sim_makefile_support import VsimMakefileWriter
from .ise import ToolISE
from .planahead import ToolPlanAhead
from .vivado import ToolVivado
from .quartus import ToolQuartus
from .diamond import ToolDiamond
from .libero import ToolLibero
......@@ -32,7 +32,10 @@ from hdlmake.makefile_writer import MakefileWriter
DIAMOND_STANDARD_LIBS = ['ieee', 'std']
class ToolControls(MakefileWriter):
class ToolDiamond(MakefileWriter):
def __init__(self):
super(ToolDiamond, self).__init__()
def detect_version(self, path):
return 'unknown'
......
......@@ -49,7 +49,10 @@ FAMILY_NAMES = {
"XC7A": "Artix7"}
class ToolControls(MakefileWriter):
class ToolISE(MakefileWriter):
def __init__(self):
super(ToolISE, self).__init__()
def get_keys(self):
tool_info = {
......
......@@ -33,8 +33,10 @@ from hdlmake.makefile_writer import MakefileWriter
LIBERO_STANDARD_LIBS = ['ieee', 'std']
class ToolControls(MakefileWriter):
class ToolLibero(MakefileWriter):
def __init__(self):
super(ToolLibero, self).__init__()
def detect_version(self, path):
return 'unknown'
......
......@@ -34,8 +34,10 @@ from hdlmake.makefile_writer import MakefileWriter
PLANAHEAD_STANDARD_LIBS = ['ieee', 'std']
class ToolControls(MakefileWriter):
class ToolPlanAhead(MakefileWriter):
def __init__(self):
super(ToolPlanAhead, self).__init__()
def detect_version(self, path):
return 'unknown'
......
......@@ -34,8 +34,10 @@ from hdlmake.makefile_writer import MakefileWriter
QUARTUS_STANDARD_LIBS = ['altera', 'altera_mf', 'lpm', 'ieee', 'std']
class ToolControls(MakefileWriter):
class ToolQuartus(MakefileWriter):
def __init__(self):
super(ToolQuartus, self).__init__()
def detect_version(self, path):
return 'unknown'
......
......@@ -33,8 +33,10 @@ from hdlmake.makefile_writer import MakefileWriter
VIVADO_STANDARD_LIBS = ['ieee', 'std']
class ToolControls(MakefileWriter):
class ToolVivado(MakefileWriter):
def __init__(self):
super(ToolVivado, self).__init__()
def detect_version(self, path):
return 'unknown'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment