diff --git a/scripts/python-skywater-pdk/skywater_pdk/analyze.py b/scripts/python-skywater-pdk/skywater_pdk/analyze.py
index 9ac719d..44c0ce8 100644
--- a/scripts/python-skywater-pdk/skywater_pdk/analyze.py
+++ b/scripts/python-skywater-pdk/skywater_pdk/analyze.py
@@ -19,6 +19,11 @@
 
 
 def analyze(pathname):
+    if pathname.endswith('README.rst'):
+        return
+
+    sys.stdout.flush()
+    sys.stderr.flush()
     print()
     print(pathname)
 
@@ -30,21 +35,26 @@
         traceback.print_exc()
         return
 
+    sys.stdout.flush()
+
     if not extra:
         return
 
-    try:
-        corners = parse_filename_corners(extra)
-        print(corners)
-    except Exception as e:
-        traceback.print_exc()
-        return
+    if extension in ('wrap.lib', 'wrap.json', 'cell.lib', 'cell.json'):
+        try:
+            corners = parse_filename_corners(extra)
+            print(corners)
+        except Exception as e:
+            traceback.print_exc()
+            return
 
 
 def main(argv):
     for a in argv[1:]:
         if os.path.isdir(a):
-            for root, _, files in os.walk(a):
+            for root, dirs, files in os.walk(a):
+                dirs.sort()
+                files.sort()
                 for f in files:
                     pathname = os.path.join(a, root, f)
                     analyze(pathname)
diff --git a/scripts/python-skywater-pdk/skywater_pdk/corners.py b/scripts/python-skywater-pdk/skywater_pdk/corners.py
index 533edac..a464d5c 100644
--- a/scripts/python-skywater-pdk/skywater_pdk/corners.py
+++ b/scripts/python-skywater-pdk/skywater_pdk/corners.py
@@ -48,6 +48,8 @@
             for c in s:
                 o.append(cls.parse(c))
             return o
+        if not hasattr(cls, s):
+            raise TypeError("Unknown corner type: {}".format(s))
         return getattr(cls, s)
 
     def __repr__(self):
@@ -154,13 +156,10 @@
             assert b.endswith('C'), b
             kw['temps'].append(int(b[:-1].replace('n', '-')))
         else:
-            try:
+            if 'types' not in kw:
+                kw['types'] = CornerType.parse(b)
+            else:
                 kw['flags'].append(CornerFlag.parse(b))
-            except TypeError as e:
-                if 'types' not in kw:
-                    kw['types'] = CornerType.parse(b)
-                else:
-                    raise
 
     return Corner(**kw)
 
