diff --git a/bin/filelist_compile.py b/bin/filelist_compile.py
index 0aa21c44680c1efdd63aa2e3474f69e890914c14..91b3b297e8bb8404d75e4c4965b11e78eb94b28c 100755
--- a/bin/filelist_compile.py
+++ b/bin/filelist_compile.py
@@ -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
diff --git a/bin/htmlgen/makefile b/bin/htmlgen/makefile
index 56c03b16f8b8f177a83e0461192f9d9fac905fb3..0ddd5aff809a7e73ab38e3896ab69d49ff992091 100644
--- a/bin/htmlgen/makefile
+++ b/bin/htmlgen/makefile
@@ -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) ; )