From 10b5fbc21a4d63c5f0e00662f7d155916f6906fb Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 2 Nov 2023 12:01:38 -0700 Subject: [PATCH 1/5] Add Caliptra AES256 ECB engine as RoCC accelerator --- .github/scripts/defaults.sh | 3 ++- .gitmodules | 6 ++++++ build.sbt | 12 +++++++++++- generators/caliptra-aes-acc | 1 + .../main/scala/config/RoCCAcceleratorConfigs.scala | 6 ++++++ generators/rocc-acc-utils | 1 + 6 files changed, 27 insertions(+), 2 deletions(-) create mode 160000 generators/caliptra-aes-acc create mode 160000 generators/rocc-acc-utils diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index 08637428..ed8cd7be 100755 --- a/.github/scripts/defaults.sh +++ b/.github/scripts/defaults.sh @@ -30,7 +30,7 @@ REMOTE_COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache declare -A grouping grouping["group-cores"]="chipyard-cva6 chipyard-ibex chipyard-rocket chipyard-hetero chipyard-boom chipyard-sodor chipyard-digitaltop chipyard-multiclock-rocket chipyard-nomem-scratchpad chipyard-spike chipyard-clone chipyard-prefetchers chipyard-shuttle" grouping["group-peripherals"]="chipyard-dmirocket chipyard-dmiboom chipyard-spiflashwrite chipyard-mmios chipyard-nocores chipyard-manyperipherals chipyard-chiplike chipyard-tethered" -grouping["group-accels"]="chipyard-mempress chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-manymmioaccels chipyard-nvdla" +grouping["group-accels"]="chipyard-mempress chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-manymmioaccels chipyard-nvdla chipyard-aes256ecb" grouping["group-constellation"]="chipyard-constellation" grouping["group-tracegen"]="tracegen tracegen-boom" grouping["group-other"]="icenet testchipip constellation rocketchip-amba rocketchip-tlsimple rocketchip-tlwidth rocketchip-tlxbar" @@ -67,6 +67,7 @@ mapping["chipyard-shuttle"]=" CONFIG=ShuttleConfig" mapping["chipyard-multiclock-rocket"]=" CONFIG=MulticlockRocketConfig" mapping["chipyard-nomem-scratchpad"]=" CONFIG=MMIOScratchpadOnlyRocketConfig" mapping["chipyard-constellation"]=" CONFIG=SharedNoCConfig" +mapping["chipyard-aes256ecb"]=" CONFIG=AES256ECBRocketConfig verilog" mapping["constellation"]=" SUB_PROJECT=constellation" mapping["firesim"]="SCALA_TEST=firesim.firesim.RocketNICF1Tests" diff --git a/.gitmodules b/.gitmodules index d74f7e4d..622c5f68 100644 --- a/.gitmodules +++ b/.gitmodules @@ -133,3 +133,9 @@ [submodule "generators/hardfloat"] path = generators/hardfloat url = https://github.com/ucb-bar/berkeley-hardfloat.git +[submodule "generators/caliptra-aes-acc"] + path = generators/caliptra-aes-acc + url = https://github.com/ucb-bar/caliptra-aes-acc +[submodule "generators/rocc-acc-utils"] + path = generators/rocc-acc-utils + url = https://github.com/ucb-bar/rocc-acc-utils diff --git a/build.sbt b/build.sbt index 76147789..287b9abe 100644 --- a/build.sbt +++ b/build.sbt @@ -150,7 +150,7 @@ lazy val chipyard = (project in file("generators/chipyard")) sha3, // On separate line to allow for cleaner tutorial-setup patches dsptools, rocket_dsp_utils, gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator, - constellation, mempress, barf, shuttle) + constellation, mempress, barf, shuttle, caliptra_aes) .settings(libraryDependencies ++= rocketLibDeps.value) .settings( libraryDependencies ++= Seq( @@ -234,6 +234,16 @@ lazy val nvdla = (project in file("generators/nvdla")) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) +lazy val caliptra_aes = (project in file("generators/caliptra-aes-acc")) + .dependsOn(rocketchip, rocc-acc-utils, midasTargetUtils) + .settings(libraryDependencies ++= rocketLibDeps.value) + .settings(commonSettings) + +llazy val rocc_acc_utils = (project in file("generators/rocc-acc-utils")) + .dependsOn(rocketchip) + .settings(libraryDependencies ++= rocketLibDeps.value) + .settings(commonSettings) + lazy val iocell = Project(id = "iocell", base = file("./tools/barstools/") / "iocell") .settings(chiselSettings) .settings(commonSettings) diff --git a/generators/caliptra-aes-acc b/generators/caliptra-aes-acc new file mode 160000 index 00000000..d667a7a0 --- /dev/null +++ b/generators/caliptra-aes-acc @@ -0,0 +1 @@ +Subproject commit d667a7a0fd1f37acb3d4df7acb2024a27e151217 diff --git a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala index 4077fcbd..0813b059 100644 --- a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala @@ -56,3 +56,9 @@ class HwachaLargeBoomConfig extends Config( new boom.common.WithNLargeBooms(1) ++ new chipyard.config.WithSystemBusWidth(128) ++ new chipyard.config.AbstractConfig) + +class AES256ECBRocketConfig extends Config( + new aes.WithAES256ECBAccel ++ // use Caliptra AES 256 ECB accelerator + new freechips.rocketchip.subsystem.WithNBigCores(1) ++ + new chipyard.config.WithSystemBusWidth(128) ++ + new chipyard.config.AbstractConfig) diff --git a/generators/rocc-acc-utils b/generators/rocc-acc-utils new file mode 160000 index 00000000..fa4e29af --- /dev/null +++ b/generators/rocc-acc-utils @@ -0,0 +1 @@ +Subproject commit fa4e29afcb7547e7951475febceb93cdfe46c76a From 672392360ea1c3787d8a0195d29be2ad30d676c1 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 2 Nov 2023 12:02:39 -0700 Subject: [PATCH 2/5] Fix build.sbt --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 287b9abe..19199212 100644 --- a/build.sbt +++ b/build.sbt @@ -235,7 +235,7 @@ lazy val nvdla = (project in file("generators/nvdla")) .settings(commonSettings) lazy val caliptra_aes = (project in file("generators/caliptra-aes-acc")) - .dependsOn(rocketchip, rocc-acc-utils, midasTargetUtils) + .dependsOn(rocketchip, rocc_acc_utils, midasTargetUtils) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) From 0c1ca5750ea461ca237cdb69dea8279c06b47af4 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 2 Nov 2023 17:09:00 -0700 Subject: [PATCH 3/5] Add fixes | Bump to 256b SBUS --- build.sbt | 4 +- generators/caliptra-aes-acc | 2 +- .../scala/config/RoCCAcceleratorConfigs.scala | 2 +- generators/rocc-acc-utils | 2 +- scripts/insert-includes.py | 66 +++++++++++++------ 5 files changed, 51 insertions(+), 25 deletions(-) diff --git a/build.sbt b/build.sbt index 19199212..c3be6161 100644 --- a/build.sbt +++ b/build.sbt @@ -235,11 +235,11 @@ lazy val nvdla = (project in file("generators/nvdla")) .settings(commonSettings) lazy val caliptra_aes = (project in file("generators/caliptra-aes-acc")) - .dependsOn(rocketchip, rocc_acc_utils, midasTargetUtils) + .dependsOn(rocketchip, rocc_acc_utils, testchipip, midasTargetUtils) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) -llazy val rocc_acc_utils = (project in file("generators/rocc-acc-utils")) +lazy val rocc_acc_utils = (project in file("generators/rocc-acc-utils")) .dependsOn(rocketchip) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) diff --git a/generators/caliptra-aes-acc b/generators/caliptra-aes-acc index d667a7a0..350cf7fb 160000 --- a/generators/caliptra-aes-acc +++ b/generators/caliptra-aes-acc @@ -1 +1 @@ -Subproject commit d667a7a0fd1f37acb3d4df7acb2024a27e151217 +Subproject commit 350cf7fbf53e8178c716b17cc9939f0ddb5c4a43 diff --git a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala index 0813b059..0796bade 100644 --- a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala @@ -60,5 +60,5 @@ class HwachaLargeBoomConfig extends Config( class AES256ECBRocketConfig extends Config( new aes.WithAES256ECBAccel ++ // use Caliptra AES 256 ECB accelerator new freechips.rocketchip.subsystem.WithNBigCores(1) ++ - new chipyard.config.WithSystemBusWidth(128) ++ + new chipyard.config.WithSystemBusWidth(256) ++ new chipyard.config.AbstractConfig) diff --git a/generators/rocc-acc-utils b/generators/rocc-acc-utils index fa4e29af..b001c888 160000 --- a/generators/rocc-acc-utils +++ b/generators/rocc-acc-utils @@ -1 +1 @@ -Subproject commit fa4e29afcb7547e7951475febceb93cdfe46c76a +Subproject commit b001c888f9620189cd13d2c6ba19f1e28663a3cb diff --git a/scripts/insert-includes.py b/scripts/insert-includes.py index ed6fed73..284da17c 100755 --- a/scripts/insert-includes.py +++ b/scripts/insert-includes.py @@ -12,6 +12,8 @@ import sys import re import os +import tempfile +import shutil inVlog = sys.argv[1] outVlog = sys.argv[2] @@ -24,28 +26,52 @@ if inVlog == outVlog: incDirs = sys.argv[3:] print("[INFO] Searching following dirs for includes: " + str(incDirs)) -# open file -with open(inVlog, 'r') as inFile: - with open(outVlog, 'w') as outFile: - # for each include found, search through all dirs and replace if found, error if not - for num, line in enumerate(inFile, 1): +def process(inF, outF): + # open file + with open(inF, 'r') as inFile: + with open(outF, 'w') as outFile: + # for each include found, search through all dirs and replace if found, error if not + for num, line in enumerate(inFile, 1): + match = re.match(r"^ *`include +\"(.*)\"", line) + if match: + # search for include and replace + found = False + for d in incDirs: + potentialIncFileName = d + "/" + match.group(1) + if os.path.exists(potentialIncFileName): + found = True + with open(potentialIncFileName, 'r') as incFile: + for iline in incFile: + outFile.write(iline) + break + + # must find something to include with + if not found: + sys.exit("[ERROR] Couldn't replace include \"" + str(match.group(1)) + "\" found on line " + str(num)) + else: + outFile.write(line) + +inF = inVlog + +while True: + # create a copy of the input + fd, temp_path = tempfile.mkstemp() + shutil.copy2(inF, temp_path) + + with open(temp_path, 'r') as inFile: + anyIncludes = False + for line in inFile: match = re.match(r"^ *`include +\"(.*)\"", line) if match: - # search for include and replace - found = False - for d in incDirs: - potentialIncFileName = d + "/" + match.group(1) - if os.path.exists(potentialIncFileName): - found = True - with open(potentialIncFileName, 'r') as incFile: - for iline in incFile: - outFile.write(iline) - break + anyIncludes = True + break - # must find something to include with - if not found: - sys.exit("[ERROR] Couldn't replace include \"" + str(match.group(1)) + "\" found on line " + str(num)) - else: - outFile.write(line) + if anyIncludes: + process(temp_path, outVlog) + inF = outVlog + os.remove(temp_path) + else: + os.remove(temp_path) + break print("[INFO] Success. Writing output to: " + str(outVlog)) From 7525b9fd042765c2d639bd27acd0f78ccbe53710 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 2 Nov 2023 17:27:42 -0700 Subject: [PATCH 4/5] Fix CI | Fix Verilator compile --- .github/scripts/check-commit.sh | 2 +- .github/scripts/defaults.sh | 2 +- generators/caliptra-aes-acc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/scripts/check-commit.sh b/.github/scripts/check-commit.sh index b15c571d..57f71b51 100755 --- a/.github/scripts/check-commit.sh +++ b/.github/scripts/check-commit.sh @@ -45,7 +45,7 @@ search () { done } -submodules=("cva6" "boom" "ibex" "gemmini" "hwacha" "icenet" "nvdla" "rocket-chip" "sha3" "sifive-blocks" "sifive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle") +submodules=("cva6" "boom" "ibex" "gemmini" "hwacha" "icenet" "nvdla" "rocket-chip" "sha3" "sifive-blocks" "sifive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle" "caliptra-aes-acc" "rocc-acc-utils") dir="generators" branches=("master" "main" "dev") search diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index ed8cd7be..5d98ad2b 100755 --- a/.github/scripts/defaults.sh +++ b/.github/scripts/defaults.sh @@ -67,7 +67,7 @@ mapping["chipyard-shuttle"]=" CONFIG=ShuttleConfig" mapping["chipyard-multiclock-rocket"]=" CONFIG=MulticlockRocketConfig" mapping["chipyard-nomem-scratchpad"]=" CONFIG=MMIOScratchpadOnlyRocketConfig" mapping["chipyard-constellation"]=" CONFIG=SharedNoCConfig" -mapping["chipyard-aes256ecb"]=" CONFIG=AES256ECBRocketConfig verilog" +mapping["chipyard-aes256ecb"]=" CONFIG=AES256ECBRocketConfig" mapping["constellation"]=" SUB_PROJECT=constellation" mapping["firesim"]="SCALA_TEST=firesim.firesim.RocketNICF1Tests" diff --git a/generators/caliptra-aes-acc b/generators/caliptra-aes-acc index 350cf7fb..15d2f852 160000 --- a/generators/caliptra-aes-acc +++ b/generators/caliptra-aes-acc @@ -1 +1 @@ -Subproject commit 350cf7fbf53e8178c716b17cc9939f0ddb5c4a43 +Subproject commit 15d2f85262125a3ba5a674868d4bcbdfbf720df1 From 2221e9cc6460b024365aa12aca717920520cae81 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Mon, 6 Nov 2023 13:16:13 -0800 Subject: [PATCH 5/5] Update tutorial patch --- scripts/tutorial-patches/build.sbt.patch | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/tutorial-patches/build.sbt.patch b/scripts/tutorial-patches/build.sbt.patch index 1e766db9..e47fbbf6 100644 --- a/scripts/tutorial-patches/build.sbt.patch +++ b/scripts/tutorial-patches/build.sbt.patch @@ -1,20 +1,20 @@ diff --git a/build.sbt b/build.sbt -index 302d99e6..0aa0fcb4 100644 +index c3be6161..2a6d7160 100644 --- a/build.sbt +++ b/build.sbt -@@ -148,7 +148,7 @@ lazy val testchipip = (project in file("generators/testchipip")) - +@@ -147,7 +147,7 @@ lazy val testchipip = (project in file("generators/testchipip")) + lazy val chipyard = (project in file("generators/chipyard")) .dependsOn(testchipip, rocketchip, boom, hwacha, sifive_blocks, sifive_cache, iocell, - sha3, // On separate line to allow for cleaner tutorial-setup patches + //sha3, // On separate line to allow for cleaner tutorial-setup patches dsptools, rocket_dsp_utils, gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator, - constellation, mempress, barf, shuttle) -@@ -220,10 +220,10 @@ lazy val sodor = (project in file("generators/riscv-sodor")) + constellation, mempress, barf, shuttle, caliptra_aes) +@@ -219,10 +219,10 @@ lazy val sodor = (project in file("generators/riscv-sodor")) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) - + -lazy val sha3 = (project in file("generators/sha3")) - .dependsOn(rocketchip, midasTargetUtils) - .settings(libraryDependencies ++= rocketLibDeps.value) @@ -23,6 +23,6 @@ index 302d99e6..0aa0fcb4 100644 +// .dependsOn(rocketchip, midasTargetUtils) +// .settings(libraryDependencies ++= rocketLibDeps.value) +// .settings(commonSettings) - + lazy val gemmini = (project in file("generators/gemmini")) .dependsOn(rocketchip)