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