Integrate rerocc

This commit is contained in:
Jerry Zhao
2024-02-05 11:11:59 -08:00
parent fdb4726770
commit 13dda46764
5 changed files with 36 additions and 2 deletions

View File

@@ -39,6 +39,7 @@ class DigitalTop(implicit p: Parameters) extends ChipyardSystem
with chipyard.clocking.CanHaveClockTap // Enables optionally adding a clock tap output port
with fftgenerator.CanHavePeripheryFFT // Enables optionally having an MMIO-based FFT block
with constellation.soc.CanHaveGlobalNoC // Support instantiating a global NoC interconnect
with rerocc.CanHaveReRoCCTiles // Support tiles that instantiate rerocc-attached accelerators
{
override lazy val module = new DigitalTopModule(this)
}

View File

@@ -48,3 +48,22 @@ class AES256ECBRocketConfig extends Config(
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
new chipyard.config.WithSystemBusWidth(256) ++
new chipyard.config.AbstractConfig)
class ReRoCCTestConfig extends Config(
new rerocc.WithReRoCC ++
new chipyard.config.WithCharacterCountRoCC ++ // rerocc tile4 is charcnt
new chipyard.config.WithAccumulatorRoCC ++ // rerocc tile3 is accum
new chipyard.config.WithAccumulatorRoCC ++ // rerocc tile2 is accum
new chipyard.config.WithAccumulatorRoCC ++ // rerocc tile1 is accum
new chipyard.config.WithAccumulatorRoCC ++ // rerocc tile0 is accum
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
new chipyard.config.AbstractConfig)
class ReRoCCManyGemminiConfig extends Config(
new rerocc.WithReRoCC ++
new gemmini.LeanGemminiConfig ++ // rerocc tile3 is gemmini
new gemmini.LeanGemminiConfig ++ // rerocc tile2 is gemmini
new gemmini.LeanGemminiConfig ++ // rerocc tile1 is gemmini
new gemmini.LeanGemminiConfig ++ // rerocc tile0 is gemmini
new freechips.rocketchip.subsystem.WithNBigCores(4) ++ // 4 rocket cores
new chipyard.config.AbstractConfig)

View File

@@ -43,3 +43,17 @@ class WithMultiRoCCGemmini[T <: Data : Arithmetic, U <: Data, V <: Data](
}))
}
})
class WithAccumulatorRoCC(op: OpcodeSet = OpcodeSet.custom1) extends Config((site, here, up) => {
case BuildRoCC => up(BuildRoCC) ++ Seq((p: Parameters) => {
val accumulator = LazyModule(new AccumulatorExample(op, n = 4)(p))
accumulator
})
})
class WithCharacterCountRoCC(op: OpcodeSet = OpcodeSet.custom2) extends Config((site, here, up) => {
case BuildRoCC => up(BuildRoCC) ++ Seq((p: Parameters) => {
val counter = LazyModule(new CharacterCountExample(op)(p))
counter
})
})