Skip to content

Commit

Permalink
ADD: submodule tacit & tacit decoder (#2172)
Browse files Browse the repository at this point in the history
* ADD: submodule tacit decoder

* ADD: submodule tacit

* ADD: config fragment for creating tacit rocket and shuttle designs

* ADD: CI for tacit
  • Loading branch information
iansseijelly authored Feb 8, 2025
1 parent bdf3723 commit 69bfef4
Show file tree
Hide file tree
Showing 14 changed files with 114 additions and 7 deletions.
2 changes: 1 addition & 1 deletion .github/scripts/check-commit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ search () {
}


submodules=("cva6" "boom" "ibex" "gemmini" "icenet" "nvdla" "rocket-chip" "rocket-chip-blocks" "rocket-chip-inclusive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle" "constellation" "fft-generator" "hardfloat" "caliptra-aes-acc" "rocc-acc-utils" "diplomacy" "rerocc" "compress-acc" "saturn" "ara" "vexiiriscv")
submodules=("cva6" "boom" "ibex" "gemmini" "icenet" "nvdla" "rocket-chip" "rocket-chip-blocks" "rocket-chip-inclusive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle" "constellation" "fft-generator" "hardfloat" "caliptra-aes-acc" "rocc-acc-utils" "diplomacy" "rerocc" "compress-acc" "saturn" "ara" "vexiiriscv" "tacit")
dir="generators"
branches=("master" "main" "dev")
search
Expand Down
3 changes: 2 additions & 1 deletion .github/scripts/defaults.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ REMOTE_COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache

# key value store to get the build groups
declare -A grouping
grouping["group-cores"]="chipyard-cva6 chipyard-ibex chipyard-rocket chipyard-hetero chipyard-boomv3 chipyard-boomv4 chipyard-sodor chipyard-digitaltop chipyard-multiclock-rocket chipyard-nomem-scratchpad chipyard-spike chipyard-clone chipyard-prefetchers chipyard-shuttle chipyard-shuttle3 chipyard-vexiiriscv"
grouping["group-cores"]="chipyard-cva6 chipyard-ibex chipyard-rocket chipyard-hetero chipyard-boomv3 chipyard-boomv4 chipyard-sodor chipyard-digitaltop chipyard-multiclock-rocket chipyard-nomem-scratchpad chipyard-spike chipyard-clone chipyard-prefetchers chipyard-shuttle chipyard-shuttle3 chipyard-vexiiriscv chipyard-tacit-rocket"
grouping["group-peripherals"]="chipyard-dmirocket chipyard-dmiboomv3 chipyard-dmiboomv4 chipyard-spiflashwrite chipyard-mmios chipyard-nocores chipyard-manyperipherals chipyard-chiplike chipyard-tethered chipyard-symmetric chipyard-llcchiplet"
grouping["group-accels"]="chipyard-compressacc chipyard-mempress chipyard-gemmini chipyard-manymmioaccels chipyard-nvdla chipyard-aes256ecb chipyard-rerocc chipyard-rocketvector chipyard-shuttlevector chipyard-hlsacc" # chipyard-shuttleara - Add when Ara works again
grouping["group-constellation"]="chipyard-constellation"
Expand Down Expand Up @@ -70,6 +70,7 @@ mapping["tracegen-boomv4"]=" CONFIG=BoomV4TraceGenConfig"
mapping["chipyard-sodor"]=" CONFIG=Sodor5StageConfig"
mapping["chipyard-shuttle"]=" CONFIG=ShuttleConfig"
mapping["chipyard-shuttle3"]=" CONFIG=Shuttle3WideConfig"
mapping["chipyard-tacit-rocket"]=" CONFIG=TacitRocketConfig"
mapping["chipyard-multiclock-rocket"]=" CONFIG=MulticlockRocketConfig"
mapping["chipyard-nomem-scratchpad"]=" CONFIG=MMIOScratchpadOnlyRocketConfig"
mapping["chipyard-constellation"]=" CONFIG=SharedNoCConfig"
Expand Down
3 changes: 3 additions & 0 deletions .github/scripts/run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,9 @@ case $1 in
chipyard-constellation)
run_binary LOADMEM=1 BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/dhrystone.riscv
;;
chipyard-tacit-rocket)
run_binary LOADMEM=1 BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/dhrystone.riscv
;;
icenet)
run_binary BINARY=none
;;
Expand Down
26 changes: 25 additions & 1 deletion .github/workflows/chipyard-run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,29 @@ jobs:
with:
group-key: "group-cores"
project-key: "chipyard-shuttle3"

chipyard-tacit-rocket-run-tests:
name: chipyard-tacit-rocket-run-tests
needs: prepare-chipyard-cores
runs-on: as4
steps:
- name: Delete old checkout
run: |
ls -alh .
rm -rf ${{ github.workspace }}/* || true
rm -rf ${{ github.workspace }}/.* || true
ls -alh .
- name: Checkout
uses: actions/checkout@v4
- name: Git workaround
uses: ./.github/actions/git-workaround
- name: Create conda env
uses: ./.github/actions/create-conda-env
- name: Run tests
uses: ./.github/actions/run-tests
with:
group-key: "group-cores"
project-key: "chipyard-tacit-rocket"

chipyard-cva6-run-tests:
name: chipyard-cva6-run-tests
Expand Down Expand Up @@ -1232,7 +1255,8 @@ jobs:
chipyard-boomv3-run-tests,
chipyard-boomv4-run-tests,
chipyard-shuttle-run-tests,
chipyard-shuttle3-run-tests,
chipyard-shuttle3-run-tests,
chipyard-tacit-rocket-run-tests,
chipyard-cva6-run-tests,
chipyard-ibex-run-tests,
chipyard-vexiiriscv-run-tests,
Expand Down
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -151,3 +151,9 @@
[submodule "generators/vexiiriscv"]
path = generators/vexiiriscv
url = https://github.com/ucb-bar/vexiiriscv-tile.git
[submodule "software/tacit_decoder"]
path = software/tacit_decoder
url = https://github.com/ucb-bar/tacit_decoder.git
[submodule "generators/tacit"]
path = generators/tacit
url = https://github.com/ucb-bar/tacit.git
7 changes: 6 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ lazy val chipyard = (project in file("generators/chipyard"))
dsptools, rocket_dsp_utils,
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator,
constellation, mempress, barf, shuttle, caliptra_aes, rerocc,
compressacc, saturn, ara, firrtl2_bridge, vexiiriscv)
compressacc, saturn, ara, firrtl2_bridge, vexiiriscv, tacit)
.settings(libraryDependencies ++= rocketLibDeps.value)
.settings(
libraryDependencies ++= Seq(
Expand Down Expand Up @@ -253,6 +253,11 @@ lazy val nvdla = (project in file("generators/nvdla"))
.settings(libraryDependencies ++= rocketLibDeps.value)
.settings(commonSettings)

lazy val tacit = (project in file("generators/tacit"))
.dependsOn(rocketchip, shuttle)
.settings(libraryDependencies ++= rocketLibDeps.value)
.settings(commonSettings)

lazy val caliptra_aes = (project in file("generators/caliptra-aes-acc"))
.dependsOn(rocketchip, rocc_acc_utils, testchipip)
.settings(libraryDependencies ++= rocketLibDeps.value)
Expand Down
2 changes: 2 additions & 0 deletions generators/chipyard/src/main/scala/DigitalTop.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import chisel3._

import freechips.rocketchip.subsystem._
import freechips.rocketchip.system._
import freechips.rocketchip.trace._
import org.chipsalliance.cde.config.Parameters
import freechips.rocketchip.devices.tilelink._

Expand All @@ -13,6 +14,7 @@ import freechips.rocketchip.devices.tilelink._

// DOC include start: DigitalTop
class DigitalTop(implicit p: Parameters) extends ChipyardSystem
with tacit.CanHaveTraceSinkDMA
with testchipip.tsi.CanHavePeripheryUARTTSI // Enables optional UART-based TSI transport
with testchipip.boot.CanHavePeripheryCustomBootPin // Enables optional custom boot pin
with testchipip.boot.CanHavePeripheryBootAddrReg // Use programmable boot address register
Expand Down
11 changes: 11 additions & 0 deletions generators/chipyard/src/main/scala/config/RocketConfigs.scala
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,14 @@ class SV48RocketConfig extends Config(
new freechips.rocketchip.rocket.WithSV48 ++
new freechips.rocketchip.rocket.WithNHugeCores(1) ++
new chipyard.config.AbstractConfig)

// Rocket with Tacit encoder and trace sinks
class TacitRocketConfig extends Config(
new tacit.WithTraceSinkDMA(1) ++
new tacit.WithTraceSinkAlways(0) ++
new chipyard.config.WithTraceArbiterMonitor ++
new chipyard.config.WithTacitEncoder ++
new chipyard.config.WithNPerfCounters(29) ++
new freechips.rocketchip.subsystem.WithoutTLMonitors ++
new freechips.rocketchip.rocket.WithNHugeCores(1) ++
new chipyard.config.AbstractConfig)
10 changes: 10 additions & 0 deletions generators/chipyard/src/main/scala/config/ShuttleConfigs.scala
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,13 @@ class GemminiShuttleConfig extends Config(
new gemmini.DefaultGemminiConfig ++ // use Gemmini systolic array GEMM accel
new shuttle.common.WithNShuttleCores ++
new chipyard.config.AbstractConfig)

// Shuttle with Tacit encoder and trace sinks
class TacitShuttleConfig extends Config(
new tacit.WithTraceSinkDMA(1) ++
new tacit.WithTraceSinkAlways(0) ++
new chipyard.config.WithTraceArbiterMonitor ++
new chipyard.config.WithTacitEncoder ++
new freechips.rocketchip.subsystem.WithoutTLMonitors ++
new shuttle.common.WithNShuttleCores ++
new chipyard.config.AbstractConfig)
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@ import org.chipsalliance.cde.config.{Field, Parameters, Config}
import freechips.rocketchip.tile._
import freechips.rocketchip.subsystem._
import freechips.rocketchip.rocket.{RocketCoreParams, MulDivParams, DCacheParams, ICacheParams}
import freechips.rocketchip.diplomacy._

import cva6.{CVA6TileAttachParams}
import sodor.common.{SodorTileAttachParams}
import ibex.{IbexTileAttachParams}
import vexiiriscv.{VexiiRiscvTileAttachParams}
import testchipip.cosim.{TracePortKey, TracePortParams}
import barf.{TilePrefetchingMasterPortParams}

import freechips.rocketchip.trace.{TraceEncoderParams, TraceCoreParams}
import tacit.{TacitEncoder}
import shuttle.common.{ShuttleTileAttachParams}
class WithL2TLBs(entries: Int) extends Config((site, here, up) => {
case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map {
case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
Expand Down Expand Up @@ -64,6 +67,46 @@ class WithNPerfCounters(n: Int = 29) extends Config((site, here, up) => {
}
})

// Add a Tacit encoder to each tile
class WithTacitEncoder extends Config((site, here, up) => {
case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map {
case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
traceParams = Some(TraceEncoderParams(
encoderBaseAddr = 0x3000000 + tp.tileParams.tileId * 0x1000,
buildEncoder = (p: Parameters) => LazyModule(new TacitEncoder(new TraceCoreParams(
nGroups = 1,
xlen = tp.tileParams.core.xLen,
iaddrWidth = tp.tileParams.core.xLen
),
bufferDepth = 16,
coreStages = 5)(p)),
useArbiterMonitor = false
)),
core = tp.tileParams.core.copy(enableTraceCoreIngress=true)))
case tp: ShuttleTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
traceParams = Some(TraceEncoderParams(
encoderBaseAddr = 0x3000000 + tp.tileParams.tileId * 0x1000,
buildEncoder = (p: Parameters) => LazyModule(new TacitEncoder(new TraceCoreParams(
nGroups = tp.tileParams.core.retireWidth,
xlen = tp.tileParams.core.xLen,
iaddrWidth = tp.tileParams.core.xLen
), bufferDepth = 16, coreStages = 7)(p)),
useArbiterMonitor = false
)),
core = tp.tileParams.core.copy(enableTraceCoreIngress=true)))
}
})

// Add a monitor to RTL print the sinked packets into a file for debugging
class WithTraceArbiterMonitor extends Config((site, here, up) => {
case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map {
case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
traceParams = Some(tp.tileParams.traceParams.get.copy(useArbiterMonitor = true))))
case tp: ShuttleTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
traceParams = Some(tp.tileParams.traceParams.get.copy(useArbiterMonitor = true))))
}
})

class WithNPMPs(n: Int = 8) extends Config((site, here, up) => {
case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map {
case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
Expand Down
2 changes: 1 addition & 1 deletion generators/shuttle
1 change: 1 addition & 0 deletions generators/tacit
Submodule tacit added at 739239
1 change: 1 addition & 0 deletions software/tacit_decoder
Submodule tacit_decoder added at db38ff

0 comments on commit 69bfef4

Please sign in to comment.