diff --git a/bin/filelist_compile.py b/bin/filelist_compile.py index eb32e5aab1bbfc81b32b3d677804221e669f2645..036074d002c670c9182b566de17b0d11535c1219 100755 --- a/bin/filelist_compile.py +++ b/bin/filelist_compile.py @@ -34,10 +34,12 @@ filelist_header = """//--------------------------------------------------------- """ -def env_var_substitute(path, tcl=False): +def env_var_substitute(path, tcl=False, synthesis=False): # Interpret the path and remove brackets from path if tcl == False: sub_path = path.translate(str.maketrans('', '', '()')) + elif synthesis ==True: + sub_path = path.translate(str.maketrans('', '', '()')) else: sub_path = path # Expand environment variables in Path @@ -84,6 +86,8 @@ def read_list(filelist, first, incdirs, args): compiled_filelist.append("read_hdl -language sv " + str(env_var_substitute(line_list[1], tcl=True)).replace("$","$env")+"/"+str(file)) else: compiled_filelist.append("read_hdl " + str(env_var_substitute(line_list[1], tcl=True)).replace("$","$env")+"/"+str(file)) + elif args.synthesis ==True: + compiled_filelist.append("cp " + str(env_var_substitute((line_list[1])+"/"+str(file), tcl=True, synthesis=True))) else: compiled_filelist.append("read_verilog " + str(env_var_substitute(line_list[1], tcl=True)).replace("$","$env")+"/"+str(file)) else: @@ -95,8 +99,10 @@ def read_list(filelist, first, incdirs, args): compiled_filelist.append("read_hdl -language sv " + str(env_var_substitute(line_list[1], tcl=True)).replace("$","$env")+"/"+str(file)) else: compiled_filelist.append("read_hdl " + str(env_var_substitute(line_list[1], tcl=True)).replace("$","$env")+"/"+str(file)) + elif args.synthesis == True: + compiled_filelist.append("cp " + str(line_list[1])+"/"+str(file)) else: - compiled_filelist.append("read_verilog " + str(line_list[1])+"/"+str(file).replace("$","$env")) + compiled_filelist.append("read_verilog " + str(line_list[1])+"/"+str(file)) else: compiled_filelist.append(line_list[1]+"/"+str(file)) @@ -111,24 +117,32 @@ def read_list(filelist, first, incdirs, args): if first == True: if args.genus == True: compiled_filelist.append("set_db init_hdl_search_path " + str(env_var_substitute(line_list[0].lstrip("+incdir+"), tcl=True)).replace("$","$env")) + elif args.synthesis == True: + pass else: compiled_filelist.append("set search_path " + str(env_var_substitute(line_list[0].lstrip("+incdir+"), tcl=True)).replace("$","$env")) first = False else: if args.genus == True: compiled_filelist.append("set_db init_hdl_search_path " + str(env_var_substitute(line_list[0].lstrip("+incdir+"), tcl=True)).replace("$","$env")) + elif args.synthesis == True: + pass else: compiled_filelist.append("set search_path [ concat $search_path " + str(env_var_substitute(line_list[0].lstrip("+incdir+"), tcl=True)).replace("$","$env") + " ]") else: if first == True: if args.genus == True: compiled_filelist.append("set_db init_hdl_search_path " + str(env_var_substitute(line_list[0].lstrip("+incdir+"), tcl=True)).replace("$","$env")) + elif args.synthesis == True: + pass else: compiled_filelist.append("set search_path " + str(line_list[0].lstrip("+incdir+")).replace("$","$env")) first = False else: if args.genus == True: compiled_filelist.append("set_db init_hdl_search_path " + str(env_var_substitute(line_list[0].lstrip("+incdir+"), tcl=True)).replace("$","$env")) + elif args.synthesis == True: + pass else: compiled_filelist.append("set search_path [ concat $search_path " + str(line_list[0].lstrip("+incdir+")).replace("$","$env") + " ]") # elif args.makefile == True: @@ -158,9 +172,15 @@ def read_list(filelist, first, incdirs, args): # Append to filelist if args.tcl == True: if args.absolute == True: - hdl_files.append(str(env_var_substitute(line_list[0], tcl=True)).replace("$","$env")) + if args.synthesis == True: + hdl_files.append(str(env_var_substitute(line_list[0], synthesis=True))) + else: + hdl_files.append(str(env_var_substitute(line_list[0], tcl=True)).replace("$","$env")) else: - hdl_files.append(str(line_list[0]).replace("$","$env")) + if args.synthesis == True: + hdl_files.append(str(line_list[0])) + else: + hdl_files.append(str(line_list[0]).replace("$","$env")) elif args.makefile == True: if args.absolute == True: compiled_filelist.append("VERILOG_SOURCES += " + str(env_var_substitute(line_list[0], tcl=True))) @@ -173,32 +193,39 @@ def read_list(filelist, first, incdirs, args): compiled_filelist.append(line_list[0]) if len(hdl_files) > 0: # temp_str = 'add_files -norecurse -scan_for_includes "' - if args.genus == False: - temp_str = f'add_files -norecurse -force -copy_to {args.rtldir} "' + if args.genus == True: + if hdl_files[0].endswith(".sv"): + temp_str = f'read_hdl -define POWER_PINS -language sv ' + else: + temp_str = f'read_hdl -define POWER_PINS ' for file in hdl_files: temp_str += file + " " - temp_str += '"' compiled_filelist.append(temp_str) + elif args.synthesis ==True: + temp_str="" + for file in hdl_files: + temp_str += f'cp {file} {args.rtldir}/\n' + compiled_filelist.append(temp_str) else: - if hdl_files[0].endswith(".sv"): - temp_str = f'read_hdl -language sv ' - else: - temp_str = f'read_hdl ' + temp_str = f'add_files -norecurse -force -copy_to {args.rtldir} "' for file in hdl_files: temp_str += file + " " + temp_str += '"' compiled_filelist.append(temp_str) + return compiled_filelist, first, incdirs def incdir_compile(args, incdirs): temp_str = "" if args.tcl == True: if args.genus == False: - if len(incdirs) > 0: - temp_str = 'set_property include_dirs "' - for directory in incdirs: - temp_dir = str(directory).replace("$","$env") - temp_str += " " + temp_dir - temp_str += '" [current_fileset]' + if args.synthesis == False: + if len(incdirs) > 0: + temp_str = 'set_property include_dirs "' + for directory in incdirs: + temp_dir = str(directory).replace("$","$env") + temp_str += " " + temp_dir + temp_str += '" [current_fileset]' elif args.makefile == True: @@ -225,6 +252,8 @@ def filelist_compile(args): filelist = [x+"\n" for x in filelist] # Create string of all paths to write out filelist_str = filelist_header if (args.tcl == False and args.makefile == False) else filelist_header.replace("//","#") + if args.synthesis == True: + filelist_str = "#!/bin/bash \n" + filelist_str if args.tcl == True: if args.genus==False: # filelist_str += incdir_compile(args, incdirs) + "\n" @@ -245,6 +274,7 @@ if __name__ == "__main__": 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("-g", "--genus", action = 'store_true', help="Generate TCL script for genus") + parser.add_argument("-s", "--synthesis", action = 'store_true', help ="Generate bash script for copying flist to synthesis") parser.add_argument("-m", "--makefile", action='store_true', help="Generate a Makefile RTL Sources File") parser.add_argument("-a", "--absolute", action='store_true', help="Substitute environment Variables with Absolute Path") parser.add_argument("-r", "--rtldir", type=str, help="Directory where RTL Source will be copied to in TCL mode")