diff --git a/scripts/python-skywater-pdk/skywater_pdk/files.py b/scripts/python-skywater-pdk/skywater_pdk/files.py
new file mode 100644
index 0000000..6882648
--- /dev/null
+++ b/scripts/python-skywater-pdk/skywater_pdk/files.py
@@ -0,0 +1,107 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# Copyright 2020 The SkyWater PDK Authors.
+#
+# Use of this source code is governed by the Apache 2.0
+# license that can be found in the LICENSE file or at
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# SPDX-License-Identifier: Apache-2.0
+
+
+VERILOG_BASE = [
+    "full.v",
+]
+
+VERILOG_GENERATED = [
+    "blackbox.v",
+    "simple.v",
+]
+
+LIBERTY_BASE = [
+    "wrap.lib",
+]
+LIBERTY_GENERATED = [
+    "cell.lib",
+]
+
+
+
+
+def src_filename(filename):
+    """Returns the source file for a generated file.
+
+    >>> src_filename("")
+
+    """
+    if '.' in filename:
+        basename, extension = filename.split('.', 1)
+    else:
+        basename = filename
+        extension = ''
+
+    if extension.endswith(".v"):
+        if extension in VERILOG_BASE:
+            raise TypeError(
+                "File type {} (from file {}) is not generated!".format(
+                    extension, filename))
+        elif extension not in VERILOG_GENERATED:
+            raise NameError(
+                "Unknown file type {} for file {}".format(
+                    extension, filename))
+        return "{}.{}".format(basename, "full.v")
+
+    elif extension.endswith(".lib"):
+        if extension not in LIBERTY_BASE:
+            raise TypeError(
+                "File type {} (from file {}) is not generated!".format(
+                    extension, filename))
+        elif extension not in LIBERTY_GENERATED:
+            raise NameError(
+                "Unknown file type {} for file {}".format(
+                    extension, filename))
+        return "{}.{}".format(basename, ".json")
+
+
+def is_generated(filename):
+    """Determines if a file is generated from another source.
+
+    >>> is_generated("")
+
+    """
+
+    if '.' in filename:
+        basename, extension = filename.split('.', 1)
+    else:
+        basename = filename
+        extension = ''
+
+    if extension.endswith(".v"):
+        if extension in VERILOG_BASE:
+            return False
+        elif extension in VERILOG_GENERATED:
+            return True
+        else:
+            raise NameError(
+                "Unknown file type {} for file {}".format(
+                    extension, filename))
+
+    if extension.endswith(".lib"):
+        if extension in LIBERTY_BASE:
+            return False
+        elif extension in LIBERTY_GENERATED:
+            return True
+
+    if extension.endswith(".json"):
+        return True
+    if f.endswith(".png"):
+        return True
+    if f in ('README.rst',):
+        return True
+    return False
+
+
+if __name__ == "__main__":
+    import doctest
+    doctest.testmod()
