Add SPDX
diff --git a/README.md b/README.md
index 15727b1..b5989dd 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 <!---
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
+# SPDX-FileCopyrightText: 2020 Anish Singhani
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,7 +15,22 @@
 #
 # SPDX-License-Identifier: Apache-2.0
 -->
-# CIIC Harness  
+# Crypto Accelerator Chip
+
+**Caravel builds at [asinghani/crypto-accelerator-builds](https://github.com/asinghani/crypto-accelerator-builds)**
+
+Build configs and RTL at [asinghani/crypto-accelerator-chip](https://github.com/asinghani/crypto-accelerator-chip)
+
+Accelerator RTL is at [asinghani/crypto-accelerator](https://github.com/asinghani/crypto-accelerator)
+
+AES128 accelerator on SKY130 process node.
+
+Accelerator accessible over wishbone bus from RISC-V SoC.
+
+
+
+
+# Original Caravel documentation:
 
 A template SoC for Google SKY130 free shuttles. It is still WIP. The current SoC architecture is given below.
 
@@ -38,7 +53,7 @@
 Then you need to install the open_pdks prerequisite:
  - [Magic VLSI Layout Tool](http://opencircuitdesign.com/magic/index.html) is needed to run open_pdks -- version >= 8.3.60*
 
- > \* Note: You can avoid the need for the magic prerequisite by using the openlane docker to do the installation step in open_pdks. This could be done by cloning [openlane](https://github.com/efabless/openlane/tree/master) and following the instructions given there to use the Makefile.
+ > \* Note: You can avoid the need for the magic prerequisite by using the openlane docker to do the installation step in open_pdks. This could be done by cloning [openlane](https://github.com/efabless/openlane/tree/master) and running this [script](https://github.com/efabless/openlane/blob/master/travisCI/travisBuild.sh) in the openlane root directrory.
 
 Install the required version of the PDK by running the following commands:
 
@@ -51,7 +66,7 @@
 - Caravel User Project Features -- https://youtu.be/zJhnmilXGPo
 - Aboard Caravel -- How to put your design on Caravel? -- https://youtu.be/9QV8SDelURk
 - Things to Clarify About Caravel -- What versions to use with Caravel? -- https://youtu.be/-LZ522mxXMw
-    - You could only use openlane:rc6
+    - You could only use openlane:rc5
     - Make sure you have the commit hashes provided here inside the [Makefile](./Makefile)
 ## Aboard Caravel:
 
@@ -61,7 +76,7 @@
 
 You must copy your synthesized gate-level-netlist for `user_project_wrapper` to `verilog/gl/` and overwrite `user_project_wrapper.v`. Otherwise, you can point to it in [info.yaml](info.yaml).
 
-> Note: If you're using openlane to harden your design, this should happen automatically.
+> Note: If you're using openlane to harden your design, you should find the synthesized gate-level-netlist here: `openlane/user_project_wrapper/runs/user_project_wrapper/results/synthesis/user_project_wrapper.synthesis.v`.
 
 Then, you will need to put your design aboard the Caravel chip. Make sure you have the following:
 
@@ -77,7 +92,7 @@
 make
 ```
 
-This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect ~90 magic DRC violations with the current "development" state of caravel.
+This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect ~100 magic DRC violations with the current "development" state of caravel.
 
 ## Running Make using OpenLANE Magic
 
@@ -86,7 +101,7 @@
 ```bash
 export PDK_ROOT=<The location where the pdk is installed>
 export OPENLANE_ROOT=<the absolute path to the openlane directory cloned or to be cloned>
-export IMAGE_NAME=<the openlane image name installed on your machine. Preferably openlane:rc6>
+export IMAGE_NAME=<the openlane image name installed on your machine. Preferably openlane:rc5>
 export CARAVEL_PATH=$(pwd)
 ```
 
@@ -103,12 +118,7 @@
 exit
 ```
 
-This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect ~90 magic DRC violations with the current "development" state of caravel.
-
-
-## IMPORTANT:
-
-Please make sure to run `make compress` before commiting anything to your repository. Avoid having 2 versions of the gds/user_project_wrapper.gds or gds/caravel.gds one compressed and the other not compressed.
+This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect ~100 magic DRC violations with the current "development" state of caravel.
 
 ## Required Directory Structure
 
@@ -146,4 +156,4 @@
 3. Configure the User Project I/O pads as o/p. Use the Chip LA to control the clock source and reset signals and observe the counter value for five clock cylcles:  [LA_Test2](verilog/dv/caravel/user_proj_example/la_test2).
 
 [0]: openlane/README.md
-[1]: mpw-one-b.md
+[1]: mpw-one-a.md
diff --git a/add_spdx.py b/add_spdx.py
new file mode 100644
index 0000000..a02a560
--- /dev/null
+++ b/add_spdx.py
@@ -0,0 +1,94 @@
+import glob
+import re
+import subprocess
+
+def istext(path):
+    return re.search(r':.* text', subprocess.Popen(["file", '-L', path], stdout=subprocess.PIPE).stdout.read().decode()) is not None
+
+paths = glob.glob("**/*", recursive=True)
+
+PREFIXES = [("//", "//", ""), ("#", "#", "")]
+
+fulltext = """
+ SPDX-FileCopyrightText: 2020 Anish Singhani
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ SPDX-License-Identifier: Apache-2.0
+""".strip()
+
+for path in paths:
+    if not istext(path):
+        print("Skipping {}...".format(path))
+    else:
+        print("Checking {}...".format(path))
+        with open(path, "r") as f:
+            lines = f.readlines()
+
+        if len(lines) > 3 and "SPDX-FileCopyrightText: 2020 Efabless Corporation" in lines[0]+lines[1]+lines[2]:
+            print("Efabless SPDX found")
+
+        elif len(lines) > 3 and "SPDX-FileCopyrightText: 2020 Anish Singhani" in lines[0]+lines[1]+lines[2]:
+            print("Correct SPDX found")
+
+        else:
+            if len(lines) > 3 and ("Copyright" in lines[0] or "Copyright" in lines[1] or "Copyright" in lines[2]):
+                ans = ""
+                while ans not in ["y", "n"]:
+                    ans = input("Partial identifier found. Fix [y/n]? ").lower()
+
+                if ans == "y":
+                    if "Copyright" in lines[0]:
+                        offset = 0
+                    elif "Copyright" in lines[1]:
+                        offset = 1
+                    elif "Copyright" in lines[2]:
+                        offset = 2
+
+                    lines2 = lines[:offset]
+                    lines = lines[offset:]
+
+                    lines[0] = lines[0][:lines[0].index("Copyright")] + "SPDX-FileCopyrightText: 2020 Anish Singhani\n"
+
+                    lines.pop(1)
+                    lines.pop(1)
+
+                    license_ind = min(i for i, e in enumerate(lines) if "limitations under the License" in e)
+
+                    lines.insert(license_ind+1, lines[license_ind].replace("limitations under the License.", "SPDX-License-Identifier: Apache-2.0"))
+
+                    lines = lines2 + lines
+
+                    with open(path, "w") as f:
+                        f.write("".join(lines) + "\n")
+                    print("Fixed")
+                else:
+                    print("Leaving as-is")
+
+            else:
+                ans = ""
+                while ans not in list(map(str, range(len(PREFIXES)))) + ["n"]:
+                    ans = input("No identifier found. ("+(",".join(x[0] for x in PREFIXES))+") Add ["+("/".join(map(str, range(len(PREFIXES)))))+"/n]? ").lower()
+
+                if ans != "n":
+                    i = int(ans)
+                    prefix = PREFIXES[i][1]
+                    pre_lines = [prefix + x + "\n" for x in fulltext.splitlines()]
+                    lines = pre_lines + lines
+
+                    with open(path, "w") as f:
+                        f.write("".join(lines) + "\n")
+
+                    print("Fixed")
+                else:
+                    print("Leaving as-is")
+
diff --git a/crypto-accelerator-chip b/crypto-accelerator-chip
index 6fa2091..c038658 160000
--- a/crypto-accelerator-chip
+++ b/crypto-accelerator-chip
@@ -1 +1 @@
-Subproject commit 6fa2091f2adbdec4908bdf68041785196a8be364
+Subproject commit c0386584a182909fe0daffd58c4ae66f4a773fa1