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