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
