Refactoring milestone: the full module package is ranked 10.0/10.0 by Pylint

parent 87521299
...@@ -69,7 +69,7 @@ class GenerateRemoteSynthesisMakefile(Action): ...@@ -69,7 +69,7 @@ class GenerateRemoteSynthesisMakefile(Action):
sff = SourceFileFactory() sff = SourceFileFactory()
files.add(sff.new(top_mod.syn_project, module=self.top_module)) files.add(sff.new(top_mod.syn_project, module=self.top_module))
tool_object.generate_remote_synthesis_makefile(files=files, name=top_mod.syn_name, tool_object.generate_remote_synthesis_makefile(files=files, name=top_mod.syn_project[:-5],
cwd=top_mod.url, user=self.env["rsynth_user"], cwd=top_mod.url, user=self.env["rsynth_user"],
server=self.env["rsynth_server"]) server=self.env["rsynth_server"])
logging.info("Remote synthesis makefile generated.") logging.info("Remote synthesis makefile generated.")
......
...@@ -37,13 +37,13 @@ class GenerateSynthesisProject(Action): ...@@ -37,13 +37,13 @@ class GenerateSynthesisProject(Action):
if not self.modules_pool.get_top_module().syn_tool: if not self.modules_pool.get_top_module().syn_tool:
logging.error("syn_tool variable must be set in the top manifest.") logging.error("syn_tool variable must be set in the top manifest.")
sys.exit("Exiting") sys.exit("Exiting")
if not self.modules_pool.get_top_module().syn_device: if not self.modules_pool.get_top_module().manifest_dict["syn_device"]:
logging.error("syn_device variable must be set in the top manifest.") logging.error("syn_device variable must be set in the top manifest.")
sys.exit("Exiting") sys.exit("Exiting")
if not self.modules_pool.get_top_module().syn_grade: if not self.modules_pool.get_top_module().manifest_dict["syn_grade"]:
logging.error("syn_grade variable must be set in the top manifest.") logging.error("syn_grade variable must be set in the top manifest.")
sys.exit("Exiting") sys.exit("Exiting")
if not self.modules_pool.get_top_module().syn_package: if not self.modules_pool.get_top_module().manifest_dict["syn_package"]:
logging.error("syn_package variable must be set in the top manifest.") logging.error("syn_package variable must be set in the top manifest.")
sys.exit("Exiting") sys.exit("Exiting")
if not self.modules_pool.get_top_module().syn_top: if not self.modules_pool.get_top_module().syn_top:
......
...@@ -55,7 +55,6 @@ class ManifestParser(ConfigParser): ...@@ -55,7 +55,6 @@ class ManifestParser(ConfigParser):
self.add_option('fetch_post_cmd', default='', help="Command to be executed after fetch", type='') self.add_option('fetch_post_cmd', default='', help="Command to be executed after fetch", type='')
self.add_delimiter() self.add_delimiter()
self.add_option('syn_name', default=None, help="Name of the folder at remote synthesis machine", type='')
self.add_option('syn_tool', default=None, help="Tool to be used in the synthesis", type='') self.add_option('syn_tool', default=None, help="Tool to be used in the synthesis", type='')
self.add_option('syn_device', default=None, help="Target FPGA device", type='') self.add_option('syn_device', default=None, help="Target FPGA device", type='')
self.add_option('syn_family', default=None, help="Target FPGA family", type='') self.add_option('syn_family', default=None, help="Target FPGA family", type='')
......
"""Package providing the Module functionality to HDLMake"""
from .core import ModuleCore from .core import ModuleCore
from .synthesis import ModuleSynthesis from .synthesis import ModuleSynthesis
from .simulation import ModuleSimulation from .simulation import ModuleSimulation
......
"""This Python module is where the synthesis stuff is processed and stored"""
from .core import ModuleCore from .core import ModuleCore
class ModuleSynthesis(ModuleCore): class ModuleSynthesis(ModuleCore):
"""This class provides the container for the synthesis sub-module"""
def __init__(self): def __init__(self):
# Manifest Synthesis Properties # Device constructor
self.syn_device = None
self.syn_family = None
self.syn_grade = None
self.syn_package = None
self.syn_project = None self.syn_project = None
self.syn_top = None self.syn_top = None
self.syn_tool = None self.syn_tool = None
self.syn_ise_version = None self.syn_ise_version = None
self.syn_pre_script = None
self.syn_post_script = None
# Manifest Included Makefiles # Manifest Included Makefiles
self.incl_makefiles = [] self.incl_makefiles = []
super(ModuleSynthesis, self).__init__() super(ModuleSynthesis, self).__init__()
def process_manifest(self): def process_manifest(self):
"""Process the synthesis section of the manifest dict"""
self._process_manifest_synthesis() self._process_manifest_synthesis()
self._process_manifest_included_makefiles() self._process_included_makefiles()
super(ModuleSynthesis, self).process_manifest() super(ModuleSynthesis, self).process_manifest()
def _process_manifest_synthesis(self): def _process_manifest_synthesis(self):
# Synthesis properties """Init generic synthesis properties"""
self.syn_pre_cmd = self.manifest_dict["syn_pre_cmd"] # Synthesis tool
self.syn_pre_synthesize_cmd = self.manifest_dict["syn_pre_synthesize_cmd"]
self.syn_post_synthesize_cmd = self.manifest_dict["syn_post_synthesize_cmd"]
self.syn_pre_translate_cmd = self.manifest_dict["syn_pre_translate_cmd"]
self.syn_post_translate_cmd = self.manifest_dict["syn_post_translate_cmd"]
self.syn_pre_map_cmd = self.manifest_dict["syn_pre_map_cmd"]
self.syn_post_map_cmd = self.manifest_dict["syn_post_map_cmd"]
self.syn_pre_par_cmd = self.manifest_dict["syn_pre_par_cmd"]
self.syn_post_par_cmd = self.manifest_dict["syn_post_par_cmd"]
self.syn_pre_bitstream_cmd = self.manifest_dict["syn_pre_bitstream_cmd"]
self.syn_post_bitstream_cmd = self.manifest_dict["syn_post_bitstream_cmd"]
self.syn_post_cmd = self.manifest_dict["syn_post_cmd"]
if self.manifest_dict["syn_name"] is None and self.manifest_dict["syn_project"] is not None:
self.syn_name = self.manifest_dict["syn_project"][:-5] # cut out .xise from the end
else:
self.syn_name = self.manifest_dict["syn_name"]
self.syn_tool = self.manifest_dict["syn_tool"] self.syn_tool = self.manifest_dict["syn_tool"]
self.syn_device = self.manifest_dict["syn_device"]
self.syn_family = self.manifest_dict["syn_family"] # Project parameters
self.syn_grade = self.manifest_dict["syn_grade"]
self.syn_package = self.manifest_dict["syn_package"]
self.syn_project = self.manifest_dict["syn_project"] self.syn_project = self.manifest_dict["syn_project"]
self.syn_top = self.manifest_dict["syn_top"] self.syn_top = self.manifest_dict["syn_top"]
# This is a Xilinx ISE specific value
if self.manifest_dict["syn_ise_version"] is not None: if self.manifest_dict["syn_ise_version"] is not None:
version = self.manifest_dict["syn_ise_version"] version = self.manifest_dict["syn_ise_version"]
self.syn_ise_version = str(version) self.syn_ise_version = str(version)
def _process_manifest_included_makefiles(self):
def _process_included_makefiles(self):
"""Get the extra makefiles defined in the HDLMake module"""
# Included Makefiles # Included Makefiles
mkFileList = [] included_makefiles_aux = []
if isinstance(self.manifest_dict["incl_makefiles"], basestring): if isinstance(self.manifest_dict["incl_makefiles"], basestring):
mkFileList.append(self.manifest_dict["incl_makefiles"]) included_makefiles_aux.append(self.manifest_dict["incl_makefiles"])
else: # list else: # list
mkFileList = self.manifest_dict["incl_makefiles"][:] included_makefiles_aux = self.manifest_dict["incl_makefiles"][:]
makefiles_paths = self._make_list_of_paths(mkFileList) makefiles_paths = self._make_list_of_paths(included_makefiles_aux)
self.incl_makefiles.extend(makefiles_paths) self.incl_makefiles.extend(makefiles_paths)
...@@ -88,16 +88,17 @@ mrproper: ...@@ -88,16 +88,17 @@ mrproper:
.PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool .PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool
""") """)
if top_mod.syn_pre_cmd: if top_mod.manifest_dict["syn_pre_cmd"]:
syn_pre_cmd = top_mod.syn_pre_cmd syn_pre_cmd = top_mod.manifest_dict["syn_pre_cmd"]
else: else:
syn_pre_cmd = '' syn_pre_cmd = ''
if top_mod.syn_post_cmd: if top_mod.manifest_dict["syn_post_cmd"]:
syn_post_cmd = top_mod.syn_post_cmd syn_post_cmd = top_mod.manifest_dict["syn_post_cmd"]
else: else:
syn_post_cmd = '' syn_post_cmd = ''
if top_mod.force_tool: if top_mod.force_tool:
ft = top_mod.force_tool ft = top_mod.force_tool
check_tool = """python $(HDLMAKE_HDLMAKE_PATH)/hdlmake _conditioncheck --tool {tool} --reference {reference} --condition "{condition}"\\ check_tool = """python $(HDLMAKE_HDLMAKE_PATH)/hdlmake _conditioncheck --tool {tool} --reference {reference} --condition "{condition}"\\
...@@ -137,9 +138,9 @@ mrproper: ...@@ -137,9 +138,9 @@ mrproper:
if update is True: if update is True:
self.update_project() self.update_project()
else: else:
self.create_project(top_mod.syn_device, self.create_project(top_mod.manifest_dict["syn_device"],
top_mod.syn_grade, top_mod.manifest_dict["syn_grade"],
top_mod.syn_package, top_mod.manifest_dict["syn_package"],
top_mod.syn_top) top_mod.syn_top)
self.add_files(fileset) self.add_files(fileset)
self.emit(update=update) self.emit(update=update)
......
...@@ -350,18 +350,18 @@ mrproper: ...@@ -350,18 +350,18 @@ mrproper:
project_name=top_mod.syn_project, project_name=top_mod.syn_project,
ise_path=tool_path, ise_path=tool_path,
check_tool=check_tool, check_tool=check_tool,
syn_pre_cmd=top_mod.syn_pre_cmd, syn_pre_cmd=top_mod.manifest_dict["syn_pre_cmd"],
syn_pre_synthesize_cmd=top_mod.syn_pre_synthesize_cmd, syn_post_cmd=top_mod.manifest_dict["syn_post_cmd"],
syn_post_synthesize_cmd=top_mod.syn_post_synthesize_cmd, syn_pre_synthesize_cmd=top_mod.manifest_dict["syn_pre_synthesize_cmd"],
syn_pre_translate_cmd=top_mod.syn_pre_translate_cmd, syn_post_synthesize_cmd=top_mod.manifest_dict["syn_post_synthesize_cmd"],
syn_post_translate_cmd=top_mod.syn_post_translate_cmd, syn_pre_translate_cmd=top_mod.manifest_dict["syn_pre_translate_cmd"],
syn_pre_map_cmd=top_mod.syn_pre_map_cmd, syn_post_translate_cmd=top_mod.manifest_dict["syn_post_translate_cmd"],
syn_post_map_cmd=top_mod.syn_post_map_cmd, syn_pre_map_cmd=top_mod.manifest_dict["syn_pre_map_cmd"],
syn_pre_par_cmd=top_mod.syn_pre_par_cmd, syn_post_map_cmd=top_mod.manifest_dict["syn_post_map_cmd"],
syn_post_par_cmd=top_mod.syn_post_par_cmd, syn_pre_par_cmd=top_mod.manifest_dict["syn_pre_par_cmd"],
syn_pre_bitstream_cmd=top_mod.syn_pre_bitstream_cmd, syn_post_par_cmd=top_mod.manifest_dict["syn_post_par_cmd"],
syn_post_bitstream_cmd=top_mod.syn_post_bitstream_cmd, syn_pre_bitstream_cmd=top_mod.manifest_dict["syn_pre_bitstream_cmd"],
syn_post_cmd=top_mod.syn_post_cmd, syn_post_bitstream_cmd=top_mod.manifest_dict["syn_post_bitstream_cmd"],
xtclsh_path=os.path.join(tool_path, "xtclsh")) xtclsh_path=os.path.join(tool_path, "xtclsh"))
self.write(makefile_text) self.write(makefile_text)
for f in top_mod.incl_makefiles: for f in top_mod.incl_makefiles:
...@@ -452,15 +452,15 @@ mrproper: ...@@ -452,15 +452,15 @@ mrproper:
def _set_values_from_manifest(self): def _set_values_from_manifest(self):
tm = self.top_mod tm = self.top_mod
if tm.syn_family == None: if tm.manifest_dict["syn_family"] == None:
tm.syn_family = FAMILY_NAMES.get(tm.syn_device[0:4].upper()) tm.manifest_dict["syn_family"] = FAMILY_NAMES.get(tm.manifest_dict["syn_device"][0:4].upper())
if tm.syn_family == None: if tm.manifest_dict["syn_family"] == None:
logging.error("syn_family is not definied in Manifest.py and can not be guessed!") logging.error("syn_family is not definied in Manifest.py and can not be guessed!")
quit(-1) quit(-1)
self.add_property("Device", tm.syn_device) self.add_property("Device", tm.manifest_dict["syn_device"])
self.add_property("Device Family", tm.syn_family) self.add_property("Device Family", tm.manifest_dict["syn_family"])
self.add_property("Speed Grade", tm.syn_grade) self.add_property("Speed Grade", tm.manifest_dict["syn_grade"])
self.add_property("Package", tm.syn_package) self.add_property("Package", tm.manifest_dict["syn_package"])
self.add_property("Implementation Top", "Architecture|"+tm.syn_top) self.add_property("Implementation Top", "Architecture|"+tm.syn_top)
self.add_property("Implementation Top Instance Path", "/"+tm.syn_top) self.add_property("Implementation Top Instance Path", "/"+tm.syn_top)
......
...@@ -90,16 +90,18 @@ mrproper: ...@@ -90,16 +90,18 @@ mrproper:
.PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool .PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool
""") """)
if top_mod.syn_pre_cmd:
syn_pre_cmd = top_mod.syn_pre_cmd if top_mod.manifest_dict["syn_pre_cmd"]:
syn_pre_cmd = top_mod.manifest_dict["syn_pre_cmd"]
else: else:
syn_pre_cmd = '' syn_pre_cmd = ''
if top_mod.syn_post_cmd: if top_mod.manifest_dict["syn_post_cmd"]:
syn_post_cmd = top_mod.syn_post_cmd syn_post_cmd = top_mod.manifest_dict["syn_post_cmd"]
else: else:
syn_post_cmd = '' syn_post_cmd = ''
if top_mod.force_tool: if top_mod.force_tool:
ft = top_mod.force_tool ft = top_mod.force_tool
check_tool = """python $(HDLMAKE_HDLMAKE_PATH)/hdlmake _conditioncheck --tool {tool} --reference {reference} --condition "{condition}"\\ check_tool = """python $(HDLMAKE_HDLMAKE_PATH)/hdlmake _conditioncheck --tool {tool} --reference {reference} --condition "{condition}"\\
...@@ -130,9 +132,9 @@ mrproper: ...@@ -130,9 +132,9 @@ mrproper:
def generate_synthesis_project(self, update=False, tool_version='', top_mod=None, fileset=None): def generate_synthesis_project(self, update=False, tool_version='', top_mod=None, fileset=None):
self.files = [] self.files = []
self.filename = top_mod.syn_project self.filename = top_mod.syn_project
self.syn_device = top_mod.syn_device self.syn_device = top_mod.manifest_dict["syn_device"]
self.syn_grade = top_mod.syn_grade self.syn_grade = top_mod.manifest_dict["syn_grade"]
self.syn_package = top_mod.syn_package self.syn_package = top_mod.manifest_dict["syn_package"]
self.syn_top = top_mod.syn_top self.syn_top = top_mod.syn_top
self.header = None self.header = None
self.tclname = 'temporal.tcl' self.tclname = 'temporal.tcl'
......
...@@ -99,13 +99,14 @@ mrproper: ...@@ -99,13 +99,14 @@ mrproper:
.PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool .PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool
""") """)
if top_mod.syn_pre_cmd:
syn_pre_cmd = top_mod.syn_pre_cmd if top_mod.manifest_dict["syn_pre_cmd"]:
syn_pre_cmd = top_mod.manifest_dict["syn_pre_cmd"]
else: else:
syn_pre_cmd = '' syn_pre_cmd = ''
if top_mod.syn_post_cmd: if top_mod.manifest_dict["syn_post_cmd"]:
syn_post_cmd = top_mod.syn_post_cmd syn_post_cmd = top_mod.manifest_dict["syn_post_cmd"]
else: else:
syn_post_cmd = '' syn_post_cmd = ''
...@@ -148,9 +149,9 @@ mrproper: ...@@ -148,9 +149,9 @@ mrproper:
else: else:
logging.info("No previous project: creating a new one...") logging.info("No previous project: creating a new one...")
self.create_project() self.create_project()
self.add_initial_properties(top_mod.syn_device, self.add_initial_properties(top_mod.manifest_dict["syn_device"],
top_mod.syn_grade, top_mod.manifest_dict["syn_grade"],
top_mod.syn_package, top_mod.manifest_dict["syn_package"],
top_mod.syn_top) top_mod.syn_top)
self.add_files(fileset) self.add_files(fileset)
self.emit() self.emit()
......
...@@ -102,13 +102,14 @@ mrproper: ...@@ -102,13 +102,14 @@ mrproper:
.PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool .PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool
""") """)
if top_mod.syn_pre_cmd:
syn_pre_cmd = top_mod.syn_pre_cmd if top_mod.manifest_dict["syn_pre_cmd"]:
syn_pre_cmd = top_mod.manifest_dict["syn_pre_cmd"]
else: else:
syn_pre_cmd = '' syn_pre_cmd = ''
if top_mod.syn_post_cmd: if top_mod.manifest_dict["syn_post_cmd"]:
syn_post_cmd = top_mod.syn_post_cmd syn_post_cmd = top_mod.manifest_dict["syn_post_cmd"]
else: else:
syn_post_cmd = '' syn_post_cmd = ''
...@@ -151,10 +152,10 @@ mrproper: ...@@ -151,10 +152,10 @@ mrproper:
if update is True: if update is True:
self.read() self.read()
else: else:
self.add_initial_properties(top_mod.syn_device, self.add_initial_properties(top_mod.manifest_dict["syn_device"],
top_mod.syn_family, top_mod.manifest_dict["syn_family"],
top_mod.syn_grade, top_mod.manifest_dict["syn_grade"],
top_mod.syn_package, top_mod.manifest_dict["syn_package"],
top_mod.syn_top) top_mod.syn_top)
self.add_files(fileset) self.add_files(fileset)
self.emit() self.emit()
......
...@@ -96,13 +96,14 @@ mrproper: ...@@ -96,13 +96,14 @@ mrproper:
.PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool .PHONY: mrproper clean syn_pre_cmd syn_post_cmd synthesis local check_tool
""") """)
if top_mod.syn_pre_cmd:
syn_pre_cmd = top_mod.syn_pre_cmd if top_mod.manifest_dict["syn_pre_cmd"]:
syn_pre_cmd = top_mod.manifest_dict["syn_pre_cmd"]
else: else:
syn_pre_cmd = '' syn_pre_cmd = ''
if top_mod.syn_post_cmd: if top_mod.manifest_dict["syn_post_cmd"]:
syn_post_cmd = top_mod.syn_post_cmd syn_post_cmd = top_mod.manifest_dict["syn_post_cmd"]
else: else:
syn_post_cmd = '' syn_post_cmd = ''
...@@ -145,9 +146,9 @@ mrproper: ...@@ -145,9 +146,9 @@ mrproper:
else: else:
logging.info("No previous project: creating a new one...") logging.info("No previous project: creating a new one...")
self.create_project() self.create_project()
self.add_initial_properties(top_mod.syn_device, self.add_initial_properties(top_mod.manifest_dict["syn_device"],
top_mod.syn_grade, top_mod.manifest_dict["syn_grade"],
top_mod.syn_package, top_mod.manifest_dict["syn_package"],
top_mod.syn_top) top_mod.syn_top)
self.add_files(fileset) self.add_files(fileset)
self.emit() self.emit()
......
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