add a stats report
diff --git a/configure.py b/configure.py
index d07622e..eb277b6 100755
--- a/configure.py
+++ b/configure.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 from urllib.parse import urlparse
-import argparse, requests, base64, zipfile, io, logging, pickle, shutil, sys, os, collections, subprocess
+import argparse, requests, base64, zipfile, io, logging, pickle, shutil, sys, os, collections, subprocess, glob, csv
 
 # pipe handling
 from signal import signal, SIGPIPE, SIG_DFL
@@ -83,7 +83,6 @@
                 os.chdir(cwd)
                 
     def formal_scan(self):
-        import glob
         cwd = os.getcwd()
         formal_dir = 'tinytapeout_scan'
         for number, url in enumerate(self.get_project_urls()):
@@ -96,7 +95,33 @@
             logging.info(commands)
             subprocess.run(commands, check=True)
             os.chdir(cwd)
-        
+
+    def summary_report(self):
+        stat_names = ['wire_length', 'vias', 'cells_pre_abc']
+        total_stats = { x : 0 for x in stat_names }
+        min_stats = { x : 10000 for x in stat_names }
+        max_stats = { x : 0 for x in stat_names }
+        for number, url in enumerate(self.get_project_urls()):
+            metrics_dir = os.path.join(self.get_dir_name(url, number), 'runs/wokwi/reports/')
+            metrics_file = glob.glob(metrics_dir + '/*.csv')[0]
+
+            with open(metrics_file) as fh:
+                summary = csv.DictReader(fh)
+                for row in summary:
+                    for stat in stat_names:
+                        total_stats[stat] += int(row[stat])
+
+                        if int(row[stat]) > max_stats[stat]:
+                            max_stats[stat] = int(row[stat])
+
+                        if int(row[stat]) < min_stats[stat]:
+                            min_stats[stat] = int(row[stat])
+                            
+        for stat in stat_names:
+            logging.info("total {} = {}".format(stat, total_stats[stat]))
+            logging.info("min   {} = {}".format(stat, min_stats[stat]))
+            logging.info("max   {} = {}".format(stat, max_stats[stat]))
+
     def get_projects_db(self):
         if self.test:
             return "projects_test.pkl"
@@ -522,6 +547,7 @@
     parser.add_argument('--apply-git-patch', help="git patch", action="store_const", const=True)
     parser.add_argument('--harden', help="harden", action="store_const", const=True)
     parser.add_argument('--formal', help="formal scan proof", action="store_const", const=True)
+    parser.add_argument('--summary', help="summary", action="store_const", const=True)
 
     args = parser.parse_args()
 
@@ -552,6 +578,8 @@
         projects.harden()
     if args.formal:
         projects.formal_scan()
+    if args.summary:
+        projects.summary_report()
 
     caravel = CaravelConfig(projects, num_projects=args.limit_num_projects)