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

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