242 lines
10 KiB
Scala
242 lines
10 KiB
Scala
package example
|
|
|
|
import chisel3._
|
|
|
|
import freechips.rocketchip.config.{Config}
|
|
|
|
// --------------
|
|
// Rocket Configs
|
|
// --------------
|
|
|
|
class RocketConfig extends Config(
|
|
new WithTSI ++ // use testchipip serial offchip link
|
|
new WithNoGPIO ++ // no top-level GPIO pins (overrides default set in sifive-blocks)
|
|
new WithBootROM ++ // use default bootrom
|
|
new WithUART ++ // add a UART
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++ // no top-level MMIO master port (overrides default set in rocketchip)
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++ // no top-level MMIO slave port (overrides default set in rocketchip)
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++ // use Sifive L2 cache
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++ // single rocket-core
|
|
new freechips.rocketchip.system.BaseConfig) // "base" rocketchip system
|
|
|
|
class HwachaRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new hwacha.DefaultHwachaConfig ++ // use Hwacha vector accelerator
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
|
|
// DOC include start: GemminiRocketConfig
|
|
class GemminiRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new gemmini.DefaultGemminiConfig ++ // use Gemmini systolic array GEMM accelerator
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
// DOC include end: GemminiRocketConfig
|
|
|
|
class RoccRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithRoccExample ++ // use example RoCC-based accelerator
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
|
|
// DOC include start: JtagRocket
|
|
class jtagRocketConfig extends Config(
|
|
new WithDTM ++ // use top with dtm
|
|
new WithNoGPIO ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithJtagDTM ++ // enable communicating with the DTM using jtag
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
// DOC include end: JtagRocket
|
|
|
|
// DOC include start: DmiRocket
|
|
class dmiRocketConfig extends Config(
|
|
new WithDTM ++ // use top with dtm
|
|
new WithNoGPIO ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
// DOC include end: DmiRocket
|
|
|
|
// DOC include start: GCDTLRocketConfig
|
|
class GCDTLRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new WithUART ++
|
|
new WithGCD(useAXI4=false, useBlackBox=false) ++ // Use GCD Chisel, connect Tilelink
|
|
new WithBootROM ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
// DOC include end: GCDTLRocketConfig
|
|
|
|
// DOC include start: GCDAXI4BlackBoxRocketConfig
|
|
class GCDAXI4BlackBoxRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithUART ++
|
|
new WithNoGPIO ++
|
|
new WithGCD(useAXI4=true, useBlackBox=true) ++ // Use GCD blackboxed verilog, connect by AXI4->Tilelink
|
|
new WithBootROM ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
// DOC include end: GCDAXI4BlackBoxRocketConfig
|
|
|
|
class SimBlockDeviceRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new testchipip.WithBlockDevice ++ // add block-device module to peripherybus
|
|
new WithSimBlockDevice ++ // use top with block-device IOs and connect to simblockdevice
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
|
|
class BlockDeviceModelRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new testchipip.WithBlockDevice ++ // add block-device module to periphery bus
|
|
new WithBlockDeviceModel ++ // use top with block-device IOs and connect to a blockdevicemodel
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
|
|
// DOC include start: GPIORocketConfig
|
|
class GPIORocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithGPIO ++ // add GPIOs to the peripherybus
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
// DOC include end: GPIORocketConfig
|
|
|
|
class DualCoreRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new WithNoGPIO ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(2) ++ // dual-core (2 RocketTiles)
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
|
|
class RV32RocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithRV32 ++ // set RocketTiles to be 32-bit
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
|
|
class GB1MemoryRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithExtMemSize((1<<30) * 1L) ++ // use 1GB simulated external memory
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
|
|
// DOC include start: Sha3Rocket
|
|
class Sha3RocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new sha3.WithSha3Accel ++ // add SHA3 rocc accelerator
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
// DOC include end: Sha3Rocket
|
|
|
|
// DOC include start: InitZeroRocketConfig
|
|
class InitZeroRocketConfig extends Config(
|
|
new WithInitZero(0x88000000L, 0x1000L) ++ // add InitZero
|
|
new WithNoGPIO ++
|
|
new WithTSI ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
// DOC include end: InitZeroRocketConfig
|
|
|
|
class LoopbackNICRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithIceNIC ++ // add an IceNIC
|
|
new WithNoGPIO ++
|
|
new WithLoopbackNIC ++ // loopback the IceNIC
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|
|
|
|
class ScratchpadRocketConfig extends Config(
|
|
new WithTSI ++
|
|
new WithNoGPIO ++
|
|
new WithBootROM ++
|
|
new WithUART ++
|
|
new WithBackingScratchpad ++ // add backing scratchpad
|
|
new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove offchip mem port
|
|
new freechips.rocketchip.subsystem.WithNoMMIOPort ++
|
|
new freechips.rocketchip.subsystem.WithNoSlavePort ++
|
|
new freechips.rocketchip.subsystem.WithInclusiveCache ++
|
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
|
new freechips.rocketchip.system.BaseConfig)
|