Skip to content

Commit aac31c4

Browse files
committed
Merge remote-tracking branch 'origin/main' into obus_switch
2 parents e3ecf6d + 69bfef4 commit aac31c4

File tree

14 files changed

+114
-7
lines changed

14 files changed

+114
-7
lines changed

.github/scripts/check-commit.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ search () {
4646
}
4747

4848

49-
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")
49+
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")
5050
dir="generators"
5151
branches=("master" "main" "dev")
5252
search

.github/scripts/defaults.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ REMOTE_COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache
2525

2626
# key value store to get the build groups
2727
declare -A grouping
28-
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"
28+
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"
2929
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"
3030
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
3131
grouping["group-constellation"]="chipyard-constellation"
@@ -70,6 +70,7 @@ mapping["tracegen-boomv4"]=" CONFIG=BoomV4TraceGenConfig"
7070
mapping["chipyard-sodor"]=" CONFIG=Sodor5StageConfig"
7171
mapping["chipyard-shuttle"]=" CONFIG=ShuttleConfig"
7272
mapping["chipyard-shuttle3"]=" CONFIG=Shuttle3WideConfig"
73+
mapping["chipyard-tacit-rocket"]=" CONFIG=TacitRocketConfig"
7374
mapping["chipyard-multiclock-rocket"]=" CONFIG=MulticlockRocketConfig"
7475
mapping["chipyard-nomem-scratchpad"]=" CONFIG=MMIOScratchpadOnlyRocketConfig"
7576
mapping["chipyard-constellation"]=" CONFIG=SharedNoCConfig"

.github/scripts/run-tests.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,9 @@ case $1 in
170170
chipyard-constellation)
171171
run_binary LOADMEM=1 BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/dhrystone.riscv
172172
;;
173+
chipyard-tacit-rocket)
174+
run_binary LOADMEM=1 BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/dhrystone.riscv
175+
;;
173176
icenet)
174177
run_binary BINARY=none
175178
;;

.github/workflows/chipyard-run-tests.yml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,29 @@ jobs:
534534
with:
535535
group-key: "group-cores"
536536
project-key: "chipyard-shuttle3"
537+
538+
chipyard-tacit-rocket-run-tests:
539+
name: chipyard-tacit-rocket-run-tests
540+
needs: prepare-chipyard-cores
541+
runs-on: as4
542+
steps:
543+
- name: Delete old checkout
544+
run: |
545+
ls -alh .
546+
rm -rf ${{ github.workspace }}/* || true
547+
rm -rf ${{ github.workspace }}/.* || true
548+
ls -alh .
549+
- name: Checkout
550+
uses: actions/checkout@v4
551+
- name: Git workaround
552+
uses: ./.github/actions/git-workaround
553+
- name: Create conda env
554+
uses: ./.github/actions/create-conda-env
555+
- name: Run tests
556+
uses: ./.github/actions/run-tests
557+
with:
558+
group-key: "group-cores"
559+
project-key: "chipyard-tacit-rocket"
537560

538561
chipyard-cva6-run-tests:
539562
name: chipyard-cva6-run-tests
@@ -1232,7 +1255,8 @@ jobs:
12321255
chipyard-boomv3-run-tests,
12331256
chipyard-boomv4-run-tests,
12341257
chipyard-shuttle-run-tests,
1235-
chipyard-shuttle3-run-tests,
1258+
chipyard-shuttle3-run-tests,
1259+
chipyard-tacit-rocket-run-tests,
12361260
chipyard-cva6-run-tests,
12371261
chipyard-ibex-run-tests,
12381262
chipyard-vexiiriscv-run-tests,

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,9 @@
151151
[submodule "generators/vexiiriscv"]
152152
path = generators/vexiiriscv
153153
url = https://github.com/ucb-bar/vexiiriscv-tile.git
154+
[submodule "software/tacit_decoder"]
155+
path = software/tacit_decoder
156+
url = https://github.com/ucb-bar/tacit_decoder.git
157+
[submodule "generators/tacit"]
158+
path = generators/tacit
159+
url = https://github.com/ucb-bar/tacit.git

build.sbt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ lazy val chipyard = (project in file("generators/chipyard"))
158158
dsptools, rocket_dsp_utils,
159159
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator,
160160
constellation, mempress, barf, shuttle, caliptra_aes, rerocc,
161-
compressacc, saturn, ara, firrtl2_bridge, vexiiriscv)
161+
compressacc, saturn, ara, firrtl2_bridge, vexiiriscv, tacit)
162162
.settings(libraryDependencies ++= rocketLibDeps.value)
163163
.settings(
164164
libraryDependencies ++= Seq(
@@ -253,6 +253,11 @@ lazy val nvdla = (project in file("generators/nvdla"))
253253
.settings(libraryDependencies ++= rocketLibDeps.value)
254254
.settings(commonSettings)
255255

256+
lazy val tacit = (project in file("generators/tacit"))
257+
.dependsOn(rocketchip, shuttle)
258+
.settings(libraryDependencies ++= rocketLibDeps.value)
259+
.settings(commonSettings)
260+
256261
lazy val caliptra_aes = (project in file("generators/caliptra-aes-acc"))
257262
.dependsOn(rocketchip, rocc_acc_utils, testchipip)
258263
.settings(libraryDependencies ++= rocketLibDeps.value)

generators/chipyard/src/main/scala/DigitalTop.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import chisel3._
44

55
import freechips.rocketchip.subsystem._
66
import freechips.rocketchip.system._
7+
import freechips.rocketchip.trace._
78
import org.chipsalliance.cde.config.Parameters
89
import freechips.rocketchip.devices.tilelink._
910

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

1415
// DOC include start: DigitalTop
1516
class DigitalTop(implicit p: Parameters) extends ChipyardSystem
17+
with tacit.CanHaveTraceSinkDMA
1618
with testchipip.tsi.CanHavePeripheryUARTTSI // Enables optional UART-based TSI transport
1719
with testchipip.boot.CanHavePeripheryCustomBootPin // Enables optional custom boot pin
1820
with testchipip.boot.CanHavePeripheryBootAddrReg // Use programmable boot address register

generators/chipyard/src/main/scala/config/RocketConfigs.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,14 @@ class SV48RocketConfig extends Config(
115115
new freechips.rocketchip.rocket.WithSV48 ++
116116
new freechips.rocketchip.rocket.WithNHugeCores(1) ++
117117
new chipyard.config.AbstractConfig)
118+
119+
// Rocket with Tacit encoder and trace sinks
120+
class TacitRocketConfig extends Config(
121+
new tacit.WithTraceSinkDMA(1) ++
122+
new tacit.WithTraceSinkAlways(0) ++
123+
new chipyard.config.WithTraceArbiterMonitor ++
124+
new chipyard.config.WithTacitEncoder ++
125+
new chipyard.config.WithNPerfCounters(29) ++
126+
new freechips.rocketchip.subsystem.WithoutTLMonitors ++
127+
new freechips.rocketchip.rocket.WithNHugeCores(1) ++
128+
new chipyard.config.AbstractConfig)

generators/chipyard/src/main/scala/config/ShuttleConfigs.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,13 @@ class GemminiShuttleConfig extends Config(
4242
new gemmini.DefaultGemminiConfig ++ // use Gemmini systolic array GEMM accel
4343
new shuttle.common.WithNShuttleCores ++
4444
new chipyard.config.AbstractConfig)
45+
46+
// Shuttle with Tacit encoder and trace sinks
47+
class TacitShuttleConfig extends Config(
48+
new tacit.WithTraceSinkDMA(1) ++
49+
new tacit.WithTraceSinkAlways(0) ++
50+
new chipyard.config.WithTraceArbiterMonitor ++
51+
new chipyard.config.WithTacitEncoder ++
52+
new freechips.rocketchip.subsystem.WithoutTLMonitors ++
53+
new shuttle.common.WithNShuttleCores ++
54+
new chipyard.config.AbstractConfig)

generators/chipyard/src/main/scala/config/fragments/TileFragments.scala

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@ import org.chipsalliance.cde.config.{Field, Parameters, Config}
66
import freechips.rocketchip.tile._
77
import freechips.rocketchip.subsystem._
88
import freechips.rocketchip.rocket.{RocketCoreParams, MulDivParams, DCacheParams, ICacheParams}
9+
import freechips.rocketchip.diplomacy._
910

1011
import cva6.{CVA6TileAttachParams}
1112
import sodor.common.{SodorTileAttachParams}
1213
import ibex.{IbexTileAttachParams}
1314
import vexiiriscv.{VexiiRiscvTileAttachParams}
1415
import testchipip.cosim.{TracePortKey, TracePortParams}
1516
import barf.{TilePrefetchingMasterPortParams}
16-
17+
import freechips.rocketchip.trace.{TraceEncoderParams, TraceCoreParams}
18+
import tacit.{TacitEncoder}
19+
import shuttle.common.{ShuttleTileAttachParams}
1720
class WithL2TLBs(entries: Int) extends Config((site, here, up) => {
1821
case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map {
1922
case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
@@ -64,6 +67,46 @@ class WithNPerfCounters(n: Int = 29) extends Config((site, here, up) => {
6467
}
6568
})
6669

70+
// Add a Tacit encoder to each tile
71+
class WithTacitEncoder extends Config((site, here, up) => {
72+
case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map {
73+
case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
74+
traceParams = Some(TraceEncoderParams(
75+
encoderBaseAddr = 0x3000000 + tp.tileParams.tileId * 0x1000,
76+
buildEncoder = (p: Parameters) => LazyModule(new TacitEncoder(new TraceCoreParams(
77+
nGroups = 1,
78+
xlen = tp.tileParams.core.xLen,
79+
iaddrWidth = tp.tileParams.core.xLen
80+
),
81+
bufferDepth = 16,
82+
coreStages = 5)(p)),
83+
useArbiterMonitor = false
84+
)),
85+
core = tp.tileParams.core.copy(enableTraceCoreIngress=true)))
86+
case tp: ShuttleTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
87+
traceParams = Some(TraceEncoderParams(
88+
encoderBaseAddr = 0x3000000 + tp.tileParams.tileId * 0x1000,
89+
buildEncoder = (p: Parameters) => LazyModule(new TacitEncoder(new TraceCoreParams(
90+
nGroups = tp.tileParams.core.retireWidth,
91+
xlen = tp.tileParams.core.xLen,
92+
iaddrWidth = tp.tileParams.core.xLen
93+
), bufferDepth = 16, coreStages = 7)(p)),
94+
useArbiterMonitor = false
95+
)),
96+
core = tp.tileParams.core.copy(enableTraceCoreIngress=true)))
97+
}
98+
})
99+
100+
// Add a monitor to RTL print the sinked packets into a file for debugging
101+
class WithTraceArbiterMonitor extends Config((site, here, up) => {
102+
case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map {
103+
case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
104+
traceParams = Some(tp.tileParams.traceParams.get.copy(useArbiterMonitor = true))))
105+
case tp: ShuttleTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
106+
traceParams = Some(tp.tileParams.traceParams.get.copy(useArbiterMonitor = true))))
107+
}
108+
})
109+
67110
class WithNPMPs(n: Int = 8) extends Config((site, here, up) => {
68111
case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map {
69112
case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(

0 commit comments

Comments
 (0)