Skip to content
Snippets Groups Projects
Commit 7dced520 authored by dam1n19's avatar dam1n19
Browse files

Updated Filelist compile script to support TCL generation

parent 199f7300
No related branches found
No related tags found
No related merge requests found
......@@ -16,7 +16,7 @@ import os
verilog_extensions = (".v", ".sv", ".vh")
# Exclude paths including these strings
filelist_exclusions = ["cortex","dma"]
filelist_exclusions = ["cortex","pl230"]
filelist_header = """//-----------------------------------------------------------------------------
// AUTOGENERATED: Compiled Filelist
......@@ -34,14 +34,17 @@ filelist_header = """//---------------------------------------------------------
"""
def env_var_substitute(path):
def env_var_substitute(path, tcl=False):
# Interpret the path and remove brackets from path
sub_path = path.translate(str.maketrans('', '', '()'))
if tcl == False:
sub_path = path.translate(str.maketrans('', '', '()'))
else:
sub_path = path
# Expand environment variables in Path
sub_path = os.path.expandvars(sub_path)
return sub_path
def read_list(filelist):
def read_list(filelist, args):
# Create Filelist List Structure
compiled_filelist = []
# Open Filelist and Read Lines
......@@ -64,24 +67,53 @@ def read_list(filelist):
print(line_list[1]+" is in the exclusions list")
else:
print(line_list[1])
compiled_filelist += read_list(env_var_substitute(line_list[1]))
compiled_filelist += read_list(env_var_substitute(line_list[1]), args)
elif line_list[0] == "-y":
# Append to filelist
for file in os.listdir(env_var_substitute(line_list[1])):
if file.endswith(verilog_extensions):
compiled_filelist.append(env_var_substitute(line_list[1])+"/"+str(file))
# Append to filelist
if args.absolute == True:
if args.tcl == True:
compiled_filelist.append("read_verilog " + str(env_var_substitute(line_list[1], tcl=True)).replace("$","$env")+"/"+str(file))
else:
compiled_filelist.append(env_var_substitute(line_list[1])+"/"+str(file))
else:
if args.tcl == True:
compiled_filelist.append("read_verilog " + str(line_list[1])+"/"+str(file).replace("$","$env"))
else:
compiled_filelist.append(line_list[1]+"/"+str(file))
elif line_list[0].startswith("+incdir+"):
# Append to filelist
for file in os.listdir(env_var_substitute(line_list[0].lstrip("+incdir+"))):
if file.endswith(verilog_extensions):
compiled_filelist.append(env_var_substitute(line_list[0].lstrip("+incdir+"))+"/"+str(file))
if args.tcl == False:
for file in os.listdir(env_var_substitute(line_list[0].lstrip("+incdir+"))):
if file.endswith(verilog_extensions):
# Append to filelist
if args.absolute == True:
compiled_filelist.append(env_var_substitute(line_list[0].lstrip("+incdir+"))+"/"+str(file))
else:
compiled_filelist.append(line_list[0].lstrip("+incdir+")+"/"+str(file))
else:
if args.absolute == True:
compiled_filelist.append("set search_path [ concat $search_path " + str(env_var_substitute(line_list[0].lstrip("+incdir+"), tcl=True)).replace("$","$env") + " ]")
else:
compiled_filelist.append(str(line_list[0].lstrip("+incdir+")).replace("$","$env")+"/")
# If file list a verilog file
elif line_list[0].endswith(verilog_extensions):
# Append to filelist
compiled_filelist.append(env_var_substitute(line_list[0]))
if args.absolute == True:
if args.tcl == True:
compiled_filelist.append("read_verilog " + str(env_var_substitute(line_list[0], tcl=True)).replace("$","$env"))
else:
compiled_filelist.append(env_var_substitute(line_list[0]))
else:
if args.tcl == True:
compiled_filelist.append("read_verilog " + str(line_list[0]).replace("$","$env"))
else:
compiled_filelist.append(line_list[0])
return compiled_filelist
......@@ -92,7 +124,7 @@ def filelist_compile(args):
print("Compiling Filelist")
print("------------------")
# Read in filelist and add newlines to paths
filelist = read_list(input_filelist)
filelist = read_list(input_filelist, args)
filelist = [x+"\n" for x in filelist]
# Create string of all paths to write out
filelist_str = filelist_header
......@@ -110,5 +142,7 @@ if __name__ == "__main__":
parser.add_argument("-f", "--filelist", type=str, help="Input Filelist to Read")
parser.add_argument("-o", "--output", type=str, help="Output Filelist location")
parser.add_argument("-e", "--exclude", action='store_true', help="Exclude filists including these strings")
parser.add_argument("-t", "--tcl", action='store_true', help="Generate a TCL Script")
parser.add_argument("-a", "--absolute", action='store_true', help="Substitute environment Variables with Absolute Path")
args = parser.parse_args()
filelist_compile(args)
\ No newline at end of file
......@@ -13,10 +13,10 @@
TOP_MODULE ?= nanosoc_chip
# Filelist to give to v2html
FILELIST ?= $(SOCLABS_PROJECT_DIR)/flist/project/system.flist
FILELIST ?= $(SOCLABS_PROJECT_DIR)/flist/project/top.flist
# Directory to store generated HTML
OUT_DIR ?= $(SOCLABS_PROJECT_DIR)
OUT_DIR ?= $(SOCLABS_PROJECT_DIR)/html
# Name of generated filelist by python script
OUTPUT_FILELIST := $(OUT_DIR)/filelist.flist
......@@ -26,5 +26,5 @@ gen_html:
@mkdir -p $(OUT_DIR)/build
@(cd $(OUT_DIR)/build; \
rm *.html; rm *.gif; \
$(SOCLABS_SOCTOOLS_FLOW_DIR)/bin/filelist_compile.py -e -f $(FILELIST) -o $(OUTPUT_FILELIST) ; \
$(SOCLABS_SOCTOOLS_FLOW_DIR)/bin/filelist_compile.py -ea -f $(FILELIST) -o $(OUTPUT_FILELIST) ; \
$(SOCLABS_SOCTOOLS_FLOW_DIR)/bin/htmlgen/v2html/v2html -f $(OUTPUT_FILELIST) -ht $(TOP_MODULE) ; )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment