Skip to content
Snippets Groups Projects
Commit 1ed119c8 authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Use class Hdl_args to parse command line arguments for HDL library usage.

parent e2e04b9b
Branches
No related tags found
No related merge requests found
......@@ -67,6 +67,10 @@ class HdlConfig:
The libRootDir parameter is defined in the hdltool_<toolset>.cfg file and is the root directory from where the hdllib.cfg
files are searched for.
In parallel to the self.libs.dicts list of dictionaries a list of self.lib_names is created to be able to identify
a HDL library dict also by its library name. Iherefore it is important that the indexing of parallel lists remains
intact at all times.
The technologyNames parameter is defined in the hdltool_<toolset>.cfg file. All generic HDL libraries and these
technology specific libraries are kept. If technologyNames is:
[] : Keep all HDL libraries that were found.
......@@ -327,6 +331,28 @@ class HdlConfig:
copy_tree(sourcePathName, destinationPath) # copy directory tree (will create new destinationPath directory)
class Hdl_args:
""" Parse command line arguments
"""
def __init__(self, toolsetSelect):
# Parse command line arguments
argparser = argparse.ArgumentParser(description='HDL config command line parser arguments')
argparser.add_argument('-t','--toolset', help='choose toolset %s (default: %s)' % (toolsetSelect,toolsetSelect[0]), default=toolsetSelect[0], required=False)
argparser.add_argument('-v','--verbosity', help='verbosity >= 0 for more info', type=int, default=0, required=False)
args = vars(argparser.parse_args())
# Keep arguments in class record
self.toolset = args['toolset']
if self.toolset not in toolsetSelect:
print 'Toolset %s is not supported' % self.toolset
print 'Hint: give argument -h for possible options'
sys.exit(1)
self.toolFileName = 'hdltool_' + self.toolset + '.cfg'
self.verbosity = args['verbosity']
if __name__ == '__main__':
# Mode
# 0 = Read dictionary info from all HDL tool and library configuration files and derive the compile order
......@@ -338,25 +364,12 @@ if __name__ == '__main__':
mode = 0
# Parse command line arguments
toolsetSelect = ['unb1', 'unb2', 'unb2a']
hdl_args = Hdl_args(toolsetSelect=['unb1', 'unb2', 'unb2a'])
argparser = argparse.ArgumentParser(description='Derive HDL library dictionary from hdllib.cfg')
argparser.add_argument('-t','--toolset', help='choose toolset %s (default: %s)' % (toolsetSelect,toolsetSelect[0]), default=toolsetSelect[0], required=False)
argparser.add_argument('-v','--verbosity', help='verbosity >= 0 for more info', type=int, default=0, required=False)
args = vars(argparser.parse_args())
arg_toolset = args['toolset']
if arg_toolset not in toolsetSelect:
print 'Toolset %s is not supported' % arg_toolset
print 'Hint: give argument -h for possible options'
sys.exit(1)
arg_toolFileName = 'hdltool_' + arg_toolset + '.cfg'
arg_verbosity = args['verbosity']
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
hdl = HdlConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=hdl_args.toolFileName)
if mode==0:
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
hdl = HdlConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=arg_toolFileName)
print '#'
print '# HdlConfig:'
print '#'
......@@ -422,8 +435,6 @@ if __name__ == '__main__':
if mode==1:
key = 'build_dir'
new_value = '$HDL_BUILD_DIR'
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
hdl = HdlConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=arg_toolFileName)
for p in hdl.libs.filePathNames:
hdl.libs.change_key_value_in_dict_file(p, key, new_value)
......@@ -431,8 +442,6 @@ if __name__ == '__main__':
insert_key = 'hdl_lib_technology'
insert_value = ''
insertLineNr = 4
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
hdl = HdlConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=arg_toolFileName)
for p in hdl.libs.filePathNames:
hdl.libs.insert_key_in_dict_file_at_line_number(p, insert_key, insert_value, insertLineNr)
......@@ -440,22 +449,16 @@ if __name__ == '__main__':
insert_key = '[quartus_project_file]'
insert_value = '\n'
insert_beforeKey = 'synth_files'
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
hdl = HdlConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=arg_toolFileName)
for p in hdl.libs.filePathNames:
hdl.libs.insert_key_in_dict_file_before_another_key(p, insert_key, insert_value, insert_beforeKey)
if mode==4:
old_key = 'hdl_lib_uses'
new_key = 'hdl_lib_uses_synth'
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
hdl = HdlConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=arg_toolFileName)
for p in hdl.libs.filePathNames:
hdl.libs.rename_key_in_dict_file(p, old_key, new_key)
if mode==5:
remove_key = 'modelsim_search_libraries'
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
hdl = HdlConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=arg_toolFileName)
for p in hdl.libs.filePathNames:
hdl.libs.remove_key_from_dict_file(p, remove_key)
......@@ -309,29 +309,14 @@ if __name__ == '__main__':
mode = 0
# Parse command line arguments
toolsetSelect = ['unb1', 'unb2', 'unb2a']
hdl_args = hdl_config.Hdl_args(toolsetSelect=['unb1', 'unb2', 'unb2a'])
argparser = argparse.ArgumentParser(description='Create Modelsim mpf files for all hdllib.cfg')
argparser.add_argument('-t','--toolset', help='choose toolset %s (default: %s)' % (toolsetSelect,toolsetSelect[0]), default=toolsetSelect[0], required=False)
argparser.add_argument('-v','--verbosity', help='verbosity >= 0 for more info', type=int, default=0, required=False)
args = vars(argparser.parse_args())
arg_toolset = args['toolset']
if arg_toolset not in toolsetSelect:
print 'Toolset %s is not supported' % arg_toolset
print 'Hint: give argument -h for possible options'
sys.exit(1)
arg_toolFileName = 'hdltool_' + arg_toolset + '.cfg'
arg_verbosity = args['verbosity']
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
msim = ModelsimConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=hdl_args.toolFileName)
if mode==0:
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
# Create and use msim object
msim = ModelsimConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=arg_toolFileName)
if arg_verbosity>=2:
if hdl_args.verbosity>=2:
print '#'
print '# ModelsimConfig:'
print '#'
......@@ -340,11 +325,11 @@ if __name__ == '__main__':
for p in msim.libs.filePaths:
print ' ', p
if arg_verbosity>=1:
if hdl_args.verbosity>=1:
print ''
print 'Derive library compile order = ', msim.derive_lib_order('sim')
if arg_verbosity>=2:
if hdl_args.verbosity>=2:
print ''
print 'get_lib_build_dirs for simulation:'
for sim_dir in msim.get_lib_build_dirs('sim'):
......
......@@ -228,29 +228,13 @@ class QuartusConfig(hdl_config.HdlConfig):
if __name__ == '__main__':
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
# Parse command line arguments
toolsetSelect = ['unb1', 'unb2', 'unb2a']
argparser = argparse.ArgumentParser(description='Create Quartus project files for hdllib.cfg')
argparser.add_argument('-t','--toolset', help='choose toolset %s (default: %s)' % (toolsetSelect,toolsetSelect[0]), default=toolsetSelect[0], required=False)
argparser.add_argument('-v','--verbosity', help='verbosity >= 0 for more info', type=int, default=0, required=False)
args = vars(argparser.parse_args())
hdl_args = hdl_config.Hdl_args(toolsetSelect=['unb1', 'unb2', 'unb2a'])
arg_toolset = args['toolset']
if arg_toolset not in toolsetSelect:
print 'Toolset %s is not supported' % arg_toolset
print 'Hint: give argument -h for possible options'
sys.exit(1)
arg_toolFileName = 'hdltool_' + arg_toolset + '.cfg'
arg_verbosity = args['verbosity']
# Create and use qsyn object
qsyn = QuartusConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=arg_toolFileName)
# Read the dictionary info from all HDL tool and library configuration files in the current directory and the sub directories
qsyn = QuartusConfig(toolRootDir=os.path.expandvars('$RADIOHDL/tools'), libFileName='hdllib.cfg', toolFileName=hdl_args.toolFileName)
if arg_verbosity>=2:
if hdl_args.verbosity>=2:
print '#'
print '# QuartusConfig:'
print '#'
......@@ -259,7 +243,7 @@ if __name__ == '__main__':
for p in qsyn.libs.filePaths:
print ' ', p
if arg_verbosity>=1:
if hdl_args.verbosity>=1:
print ''
print 'HDL libraries with a top level entity for synthesis that are found in $%s:' % qsyn.libRootDir
print ' %-40s' % 'HDL library', ': Top level entity'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment