arg to limit num projects
diff --git a/configure.py b/configure.py
index 41c0f61..6a51051 100755
--- a/configure.py
+++ b/configure.py
@@ -6,9 +6,9 @@
 from signal import signal, SIGPIPE, SIG_DFL
 signal(SIGPIPE, SIG_DFL)
 
-NUM_PROJECTS = 498
 filler_project_url = 'https://github.com/mattvenn/wokwi_filler'
 tmp_dir = '/tmp/tt'
+DEFAULT_NUM_PROJECTS = 498
 
 
 class Projects():
@@ -167,8 +167,9 @@
 
 class CaravelConfig():
 
-    def __init__(self, projects):
+    def __init__(self, projects, num_projects):
         self.projects = projects
+        self.num_projects = num_projects
 
     @classmethod
     def unique(cls, duplist):
@@ -215,11 +216,11 @@
             fh.write("scan_controller")
             fh.write(" vccd1 vssd1 vccd1 vssd1")
             fh.write(", \\\n")
-            for i in range(NUM_PROJECTS):
+            for i in range(self.num_projects):
                 fh.write("	")
                 fh.write(self.projects.get_macro_instance(i))
                 fh.write(" vccd1 vssd1 vccd1 vssd1")
-                if i != NUM_PROJECTS - 1:
+                if i != self.num_projects - 1:
                     fh.write(", \\\n")
             fh.write('"\n')
 
@@ -227,7 +228,7 @@
         logging.info("creating extra_lef_gds.tcl")
         lefs = []
         gdss = []
-        for i in range(NUM_PROJECTS):
+        for i in range(self.num_projects):
             lefs.append(self.projects.get_macro_lef_name(i))
             gdss.append(self.projects.get_macro_gds_name(i))
 
@@ -304,9 +305,9 @@
 
         with open('verilog/rtl/user_project_wrapper.v', 'w') as fh:
             fh.write(pre)
-            fh.write(assigns.format(NUM_PROJECTS))
+            fh.write(assigns.format(self.num_projects))
             fh.write(scan_controller_template)
-            for i in range(NUM_PROJECTS):
+            for i in range(self.num_projects):
                 logging.debug("instance {} {}".format(i, self.projects.get_macro_name(i)))
                 # instantiate template
                 instance = lesson_template.format(instance=self.projects.get_macro_instance(i), name=self.projects.get_macro_name(i), id=i, next_id=i + 1)
@@ -315,7 +316,7 @@
 
         # build the user_project_includes.v file - used for blackboxing when building the GDS
         verilogs = []
-        for i in range(NUM_PROJECTS):
+        for i in range(self.num_projects):
             verilogs.append(self.projects.get_verilog_include(i))
         verilogs = CaravelConfig.unique(verilogs)
 
@@ -326,7 +327,7 @@
 
         # build complete list of filenames for sim
         verilog_files = []
-        for i in range(NUM_PROJECTS):
+        for i in range(self.num_projects):
             verilog_files += self.projects.get_verilog_names(i)
         verilog_files = CaravelConfig.unique(verilog_files)
         with open('verilog/includes/includes.rtl.caravel_user_project', 'w') as fh:
@@ -343,6 +344,7 @@
     parser.add_argument('--list', help="list projects", action='store_const', const=True)
     parser.add_argument('--update-projects', help='fetch the project data', action='store_const', const=True)
     parser.add_argument('--update-caravel', help='configure caravel for build', action='store_const', const=True)
+    parser.add_argument('--limit-num-projects', help='only configure for the first n projects', type=int, default=DEFAULT_NUM_PROJECTS)
     parser.add_argument('--debug', help="debug logging", action="store_const", dest="loglevel", const=logging.DEBUG, default=logging.INFO)
 
     args = parser.parse_args()
@@ -364,7 +366,7 @@
     log.addHandler(ch)
 
     projects = Projects(update_cache=args.update_projects)
-    caravel = CaravelConfig(projects)
+    caravel = CaravelConfig(projects, num_projects=args.limit_num_projects)
 
     if args.update_caravel:
         caravel.create_macro_config()