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

Added fileSections argument to specifiy target specific section headers in the...

Added fileSections argument to specifiy target specific section headers in the config dictionary file. Support multiple technologyNames. Issue warning instead of error when duplicate HDL library config files is found and removed from the dictionary list.
parent 14b150bc
No related branches found
No related tags found
No related merge requests found
......@@ -58,7 +58,7 @@ import argparse
class HdlConfig:
def __init__(self, toolRootDir, libFileName='hdllib.cfg', toolFileName='hdltool_<toolset>.cfg'):
def __init__(self, toolRootDir, libFileName='hdllib.cfg', libFileSections=None, toolFileName='hdltool_<toolset>.cfg'):
"""Get tool dictionary info from toolRootDir and all HDL library dictionary info for it
- self.tool.dicts = single dictionary that contains the tool info (only one tool dict in dicts list)
......@@ -76,27 +76,24 @@ class HdlConfig:
self.toolRootDir = toolRootDir
# HDL tool config file
self.tool = common_dict_file.CommonDictFile(toolRootDir, toolFileName) # tool dict file
self.tool = common_dict_file.CommonDictFile(toolRootDir, toolFileName) # tool dict filedupkc
if self.tool.nof_dicts==0: sys.exit('Error : No HDL tool config file found')
if self.tool.nof_dicts >1: sys.exit('Error : Multiple HDL tool config files found')
self.tool_dict = self.tool.dicts[0] # there is only one tool dict in dicts list so for convenience make it also accessible as self.tool_dict
# HDL library config files
self.libRootDir = os.path.expandvars(self.tool_dict['lib_root_dir'])
self.libs = common_dict_file.CommonDictFile(self.libRootDir, libFileName) # library dict files
self.libs = common_dict_file.CommonDictFile(self.libRootDir, libFileName, libFileSections) # library dict files
if self.libs.nof_dicts==0: sys.exit('Error : No HDL library config file found')
# Keep the generic HDL libraries and remove those that do not match the specified IP technologies
self.technologyNames = os.path.expandvars(self.tool_dict['technology_names'])
self.technologyNames = self.tool_dict['technology_names'].split()
self.removed_dicts = []
print 'self.technologyNames=',self.technologyNames
if len(self.technologyNames)>0:
for d in self.libs.dicts:
#if not(d['hdl_lib_technology']=='' or d['hdl_lib_technology'] in self.technologyNames):
#print 'd[hdl_lib_technology]=',d['hdl_lib_technology']
if not(d['hdl_lib_technology']=='' or d['hdl_lib_technology'] == self.technologyNames):
if not(d['hdl_lib_technology']=='' or d['hdl_lib_technology'] in self.technologyNames):
self.removed_dicts.append(d)
#print 'remove=',d
for d in self.removed_dicts:
self.libs.remove_dict_from_list(d)
......@@ -105,7 +102,15 @@ class HdlConfig:
# Check that there are no duplicate library names (eg. due to copying a hdlib.cfg without modifying the hdl_lib_name value)
duplicate_lib_names = cm.list_duplicates(self.lib_names)
if len(duplicate_lib_names)>0: sys.exit('Error : Duplicate HDL library config file found %s' % duplicate_lib_names)
if len(duplicate_lib_names)>0:
for dup_name in duplicate_lib_names:
dup_dicts = self.libs.get_dicts('hdl_lib_name', values=dup_name)
for d in dup_dicts:
self.libs.remove_dict_from_list(d)
print 'Warning : Duplicate HDL library config files found and removed from list %s' % duplicate_lib_names
# Update list of HDL library names
self.lib_names = self.libs.get_key_values('hdl_lib_name')
def get_used_libs(self, build_type, lib_dict, arg_exclude_libs=[]):
"""Get the list of used HDL libraries from the lib_dict and remove the excluded libs.
......@@ -152,7 +157,6 @@ class HdlConfig:
# use recursion to include all used libs
use_libs, exclude_libs = self.get_used_libs(build_type, lib_dict, exclude_libs)
try:
use_libs
for use_lib in use_libs:
if use_lib in self.lib_names:
all_use_libs.append(use_lib)
......@@ -337,7 +341,7 @@ if __name__ == '__main__':
# Parse command line arguments
toolsetSelect = ['unb1', 'unb2', 'unb2a']
argparser = argparse.ArgumentParser(description='Create Modelsim mpf files for all hdllib.cfg')
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())
......@@ -364,22 +368,30 @@ if __name__ == '__main__':
print ''
print ''
print 'tool = ', hdl.tool.filePathNames[0]
print 'Toolset file = ', hdl.tool.filePathNames[0]
print ''
print 'lib paths'
print 'Library paths :'
for p in hdl.libs.filePaths:
print ' ', p
print ''
print 'lib paths names'
print 'Library paths names :"'
for p in hdl.libs.filePathNames:
print ' ', p
print ''
print 'lib_names = ', hdl.lib_names
print 'derive_lib_order for sim : ', hdl.derive_lib_order('sim')
print 'derive_lib_order for synth : ', hdl.derive_lib_order('synth')
print 'Library section headers :'
for lib_name in hdl.lib_names:
lib_dict = hdl.libs.dicts[hdl.lib_names.index(lib_name)]
print ' %-52s :' % lib_name, lib_dict['section_headers']
print ''
print 'Library names = \n', hdl.lib_names
print ''
print 'derive_lib_order for sim :\n', hdl.derive_lib_order('sim')
print ''
print 'derive_lib_order for synth :\n', hdl.derive_lib_order('synth')
print ''
print 'get_lib_build_dirs for simulation:'
......@@ -393,15 +405,19 @@ if __name__ == '__main__':
#use_libs = hdl.derive_all_use_libs('sim', 'tech_xaui')
use_libs = hdl.derive_all_use_libs('sim', 'unb1_test_10GbE')
use_libs = hdl.derive_all_use_libs('sim', 'tech_ddr')
print 'derive_all_use_libs = ', use_libs
print ''
print 'derive_all_use_libs = \n', use_libs
lib_order = hdl.derive_lib_order('sim', use_libs)
print 'derive_lib_order = ', lib_order
print ''
print 'derive_lib_order = \n', lib_order
if hdl.libRootDir=='UNB':
use_libs = hdl.derive_all_use_libs('sim', 'unb_minimal')
use_libs = hdl.derive_all_use_libs('sim', 'dp')
print 'derive_all_use_libs = ', use_libs
print ''
print 'derive_all_use_libs = \n', use_libs
lib_order = hdl.derive_lib_order('sim', use_libs)
print 'derive_lib_order = ', lib_order
print ''
print 'derive_lib_order = \n', lib_order
if mode==1:
key = 'build_dir'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment