wip unique source names
diff --git a/configure.py b/configure.py
index d533e92..47c8112 100755
--- a/configure.py
+++ b/configure.py
@@ -110,6 +110,25 @@
         if self.is_hdl():
             self.top_module = self.yaml['project']['top_module']
             self.src_files = self.yaml['project']['source_files']
+            self.top_verilog_file = self.find_top_verilog()
+   
+    # top module name is defined in one of the source files, which one?
+    def find_top_verilog(self):
+        rgx_mod  = re.compile(r"(?:^|[\W])module[\s]{1,}([\w]+)")
+        top_verilog = []
+        for src in self.src_files:
+            with open(os.path.join(self.local_dir, 'src', src)) as fh:
+                for line in fh.readlines():
+                    for match in rgx_mod.finditer(line):
+                        if match.group(1) == self.top_module:
+                            top_verilog.append(src)
+        assert len(top_verilog) == 1
+        return top_verilog[0]
+
+    def prep_src_file(self, src):
+        filename = os.path.basename(src)
+        # make filename unique
+        return f'{self.index}_{filename}'
 
     def clone(self):
         try:
@@ -168,8 +187,7 @@
     # for black boxing when building GDS, just need module name and ports
     def get_verilog_include(self):
         if self.is_hdl():
-            # wrong
-            return f'`include "{self.top_module}.v"\n'
+            return f'`include "{self.get_top_verilog_file()}"\n'
         else:
             # return diff if fill
             return f'`include "user_module_{self.wokwi_id}.v"\n'
@@ -182,13 +200,17 @@
             # return diff if fill
             return [f'user_module_{self.wokwi_id}.v']
 
+    def get_top_verilog_file(self):
+        if self.is_hdl():
+            return self.prep_src_file(self.top_verilog_file)
+        else:
+            # return diff if fill
+            return [f'user_module_{self.wokwi_id}.v']
+
     # for the includes file for simulation
     def get_verilog_names(self):
         if self.is_hdl():
-            files = []
-            for src in self.src_files:
-                files.append(src)
-            return files
+            return [ self.prep_src_file(src) for src in self.src_files ]
         else:
             # return diff if fill
             return [f'user_module_{self.wokwi_id}.v']
@@ -198,14 +220,18 @@
 
     def copy_files_to_caravel(self):
         if self.is_hdl():
+            # this is going to fail if people use duplicate top module names
+            # and can't be fixed by changing the name as that will not match with the gds or lef
+            to_uniquify = []
             files = [
                 (f"{self.index}/runs/wokwi/results/final/gds/{self.top_module}.gds", f"gds/{self.top_module}.gds"),
                 (f"{self.index}/runs/wokwi/results/final/lef/{self.top_module}.lef", f"lef/{self.top_module}.lef"),
                 (f"{self.index}/runs/wokwi/results/final/verilog/gl/{self.top_module}.v", f"verilog/gl/{self.top_module}.v"),
                 ]
-# Tholin has used * in src
             for src in self.src_files:
-                files.append((f"{self.index}/src/{src}", f"verilog/rtl/{src}"))
+                prepped = self.prep_src_file(src)
+                files.append((f"{self.index}/src/{src}", f"verilog/rtl/{prepped}"))
+                to_uniquify.append(f"verilog/rtl/{prepped}")
         else:
             # copy all important files to the correct places. Everything is dependent on the id
             files = [
@@ -222,10 +248,9 @@
             shutil.copyfile(from_path, to_path)
 
         # Uniquify the Verilog for this project
-#        self.uniquify_project(wokwi_id, [
-#            f"verilog/rtl/user_module_{wokwi_id}.v",
-#        ])
-
+        if self.is_hdl():
+            all_modules = self.uniquify_project(self.index, to_uniquify)
+            print(all_modules)
 
     def uniquify_project(self, wokwi_id : str, rtl_files : List[str]) -> None:
         """
@@ -286,6 +311,8 @@
                 with open(path, "w", encoding="utf-8") as fh:
                     fh.writelines(new_txt)
 
+        return all_mod
+     
 class CaravelConfig():
 
     def __init__(self, projects, num_projects):
@@ -605,5 +632,3 @@
     if args.update_caravel:
         caravel.create_macro_config()
         caravel.instantiate()
-        if not args.test:
-            caravel.build_docs()