add sifive blocks | add rebar configs for boom
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -25,3 +25,6 @@
|
|||||||
[submodule "generators/boom"]
|
[submodule "generators/boom"]
|
||||||
path = generators/boom
|
path = generators/boom
|
||||||
url = git@github.com:riscv-boom/riscv-boom.git
|
url = git@github.com:riscv-boom/riscv-boom.git
|
||||||
|
[submodule "generators/sifive-blocks"]
|
||||||
|
path = generators/sifive-blocks
|
||||||
|
url = git@github.com:sifive/sifive-blocks.git
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ def conditionalDependsOn(prj: Project): Project = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lazy val example = conditionalDependsOn(project in file("."))
|
lazy val example = conditionalDependsOn(project in file("."))
|
||||||
|
.dependsOn(boom)
|
||||||
.settings(commonSettings)
|
.settings(commonSettings)
|
||||||
|
|
||||||
lazy val boom = (project in file("generators/boom"))
|
lazy val boom = (project in file("generators/boom"))
|
||||||
|
|||||||
1
generators/sifive-blocks
Submodule
1
generators/sifive-blocks
Submodule
Submodule generators/sifive-blocks added at 24dd537894
90
src/main/scala/boomexample/Configs.scala
Normal file
90
src/main/scala/boomexample/Configs.scala
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
package boomexample
|
||||||
|
|
||||||
|
import chisel3._
|
||||||
|
import freechips.rocketchip.config.{Parameters, Config}
|
||||||
|
import freechips.rocketchip.subsystem.{WithRoccExample, WithNMemoryChannels}
|
||||||
|
import freechips.rocketchip.diplomacy.{LazyModule, ValName}
|
||||||
|
import freechips.rocketchip.devices.tilelink.BootROMParams
|
||||||
|
import freechips.rocketchip.tile.XLen
|
||||||
|
import testchipip._
|
||||||
|
|
||||||
|
class WithBootROM extends Config((site, here, up) => {
|
||||||
|
case BootROMParams => BootROMParams(
|
||||||
|
contentFileName = s"./bootrom/bootrom.rv${site(XLen)}.img")
|
||||||
|
})
|
||||||
|
|
||||||
|
object ConfigValName {
|
||||||
|
implicit val valName = ValName("TestHarness")
|
||||||
|
}
|
||||||
|
import ConfigValName._
|
||||||
|
|
||||||
|
class WithBoomExampleTop extends Config((site, here, up) => {
|
||||||
|
case BuildTop => (clock: Clock, reset: Bool, p: Parameters) => {
|
||||||
|
Module(LazyModule(new BoomExampleTop()(p)).module)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
class WithPWM extends Config((site, here, up) => {
|
||||||
|
case BuildTop => (clock: Clock, reset: Bool, p: Parameters) =>
|
||||||
|
Module(LazyModule(new BoomExampleTopWithPWMTL()(p)).module)
|
||||||
|
})
|
||||||
|
|
||||||
|
class WithPWMAXI4 extends Config((site, here, up) => {
|
||||||
|
case BuildTop => (clock: Clock, reset: Bool, p: Parameters) =>
|
||||||
|
Module(LazyModule(new BoomExampleTopWithPWMAXI4()(p)).module)
|
||||||
|
})
|
||||||
|
|
||||||
|
class WithBlockDeviceModel extends Config((site, here, up) => {
|
||||||
|
case BuildTop => (clock: Clock, reset: Bool, p: Parameters) => {
|
||||||
|
val top = Module(LazyModule(new BoomExampleTopWithBlockDevice()(p)).module)
|
||||||
|
top.connectBlockDeviceModel()
|
||||||
|
top
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
class WithSimBlockDevice extends Config((site, here, up) => {
|
||||||
|
case BuildTop => (clock: Clock, reset: Bool, p: Parameters) => {
|
||||||
|
val top = Module(LazyModule(new BoomExampleTopWithBlockDevice()(p)).module)
|
||||||
|
top.connectSimBlockDevice(clock, reset)
|
||||||
|
top
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
class BaseBoomExampleConfig extends Config(
|
||||||
|
new WithBootROM ++
|
||||||
|
new boom.system.SmallBoomConfig)
|
||||||
|
|
||||||
|
class DefaultBoomExampleConfig extends Config(
|
||||||
|
new WithBoomExampleTop ++
|
||||||
|
new BaseBoomExampleConfig)
|
||||||
|
|
||||||
|
class RoccBoomExampleConfig extends Config(
|
||||||
|
new WithRoccExample ++
|
||||||
|
new DefaultBoomExampleConfig)
|
||||||
|
|
||||||
|
class PWMBoomExampleConfig extends Config(
|
||||||
|
new WithPWM ++
|
||||||
|
new BaseBoomExampleConfig)
|
||||||
|
|
||||||
|
class PWMAXI4BoomExampleConfig extends Config(
|
||||||
|
new WithPWMAXI4 ++
|
||||||
|
new BaseBoomExampleConfig)
|
||||||
|
|
||||||
|
class SimBlockDeviceBoomExampleConfig extends Config(
|
||||||
|
new WithBlockDevice ++
|
||||||
|
new WithSimBlockDevice ++
|
||||||
|
new BaseBoomExampleConfig)
|
||||||
|
|
||||||
|
class BlockDeviceModelBoomExampleConfig extends Config(
|
||||||
|
new WithBlockDevice ++
|
||||||
|
new WithBlockDeviceModel ++
|
||||||
|
new BaseBoomExampleConfig)
|
||||||
|
|
||||||
|
class DualCoreBoomExampleConfig extends Config(
|
||||||
|
// Core gets tacked onto existing list
|
||||||
|
new boom.system.WithNBoomCores(2) ++
|
||||||
|
new DefaultBoomExampleConfig)
|
||||||
|
|
||||||
|
class RV32BoomExampleConfig extends Config(
|
||||||
|
new WithBootROM ++
|
||||||
|
new boom.system.SmallRV32UnifiedBoomConfig)
|
||||||
44
src/main/scala/boomexample/TestHarness.scala
Normal file
44
src/main/scala/boomexample/TestHarness.scala
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
package boomexample
|
||||||
|
|
||||||
|
import chisel3._
|
||||||
|
import chisel3.experimental._
|
||||||
|
import firrtl.transforms.{BlackBoxResourceAnno, BlackBoxSourceHelper}
|
||||||
|
import freechips.rocketchip.diplomacy.LazyModule
|
||||||
|
import freechips.rocketchip.config.{Field, Parameters}
|
||||||
|
import freechips.rocketchip.util.GeneratorApp
|
||||||
|
|
||||||
|
case object BuildTop extends Field[(Clock, Bool, Parameters) => BoomExampleTopModule[BoomExampleTop]]
|
||||||
|
|
||||||
|
class TestHarness(implicit val p: Parameters) extends Module {
|
||||||
|
val io = IO(new Bundle {
|
||||||
|
val success = Output(Bool())
|
||||||
|
})
|
||||||
|
|
||||||
|
val dut = p(BuildTop)(clock, reset.toBool, p)
|
||||||
|
dut.debug := DontCare
|
||||||
|
dut.connectSimAXIMem()
|
||||||
|
dut.connectSimAXIMMIO()
|
||||||
|
dut.dontTouchPorts()
|
||||||
|
dut.tieOffInterrupts()
|
||||||
|
dut.l2_frontend_bus_axi4.foreach(axi => {
|
||||||
|
axi.tieoff()
|
||||||
|
experimental.DataMirror.directionOf(axi.ar.ready) match {
|
||||||
|
case core.ActualDirection.Input =>
|
||||||
|
axi.r.bits := DontCare
|
||||||
|
axi.b.bits := DontCare
|
||||||
|
case core.ActualDirection.Output =>
|
||||||
|
axi.aw.bits := DontCare
|
||||||
|
axi.ar.bits := DontCare
|
||||||
|
axi.w.bits := DontCare
|
||||||
|
}
|
||||||
|
})
|
||||||
|
io.success := dut.connectSimSerial()
|
||||||
|
}
|
||||||
|
|
||||||
|
object Generator extends GeneratorApp {
|
||||||
|
val longName = names.topModuleProject + "." + names.topModuleClass + "." + names.configs
|
||||||
|
generateFirrtl
|
||||||
|
generateAnno
|
||||||
|
generateTestSuiteMakefrags
|
||||||
|
generateArtefacts
|
||||||
|
}
|
||||||
54
src/main/scala/boomexample/Top.scala
Normal file
54
src/main/scala/boomexample/Top.scala
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
package boomexample
|
||||||
|
|
||||||
|
import chisel3._
|
||||||
|
import freechips.rocketchip.subsystem._
|
||||||
|
import freechips.rocketchip.system._
|
||||||
|
import freechips.rocketchip.config.Parameters
|
||||||
|
import freechips.rocketchip.devices.tilelink._
|
||||||
|
import freechips.rocketchip.util.DontTouch
|
||||||
|
import testchipip._
|
||||||
|
import example.{HasPeripheryPWMTL, HasPeripheryPWMAXI4, HasPeripheryPWMTLModuleImp, HasPeripheryPWMAXI4ModuleImp}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class BoomExampleTop(implicit p: Parameters) extends boom.system.ExampleBoomSystem
|
||||||
|
with HasNoDebug
|
||||||
|
with HasPeripherySerial {
|
||||||
|
override lazy val module = new BoomExampleTopModule(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
class BoomExampleTopModule[+L <: BoomExampleTop](l: L) extends boom.system.ExampleBoomSystemModule(l)
|
||||||
|
with HasRTCModuleImp
|
||||||
|
with HasNoDebugModuleImp
|
||||||
|
with HasPeripherySerialModuleImp
|
||||||
|
with DontTouch
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class BoomExampleTopWithPWMTL(implicit p: Parameters) extends BoomExampleTop
|
||||||
|
with HasPeripheryPWMTL {
|
||||||
|
override lazy val module = new BoomExampleTopWithPWMTLModule(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
class BoomExampleTopWithPWMTLModule(l: BoomExampleTopWithPWMTL) extends BoomExampleTopModule(l)
|
||||||
|
with HasPeripheryPWMTLModuleImp
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class BoomExampleTopWithPWMAXI4(implicit p: Parameters) extends BoomExampleTop
|
||||||
|
with HasPeripheryPWMAXI4 {
|
||||||
|
override lazy val module = new BoomExampleTopWithPWMAXI4Module(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
class BoomExampleTopWithPWMAXI4Module(l: BoomExampleTopWithPWMAXI4) extends BoomExampleTopModule(l)
|
||||||
|
with HasPeripheryPWMAXI4ModuleImp
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class BoomExampleTopWithBlockDevice(implicit p: Parameters) extends BoomExampleTop
|
||||||
|
with HasPeripheryBlockDevice {
|
||||||
|
override lazy val module = new BoomExampleTopWithBlockDeviceModule(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
class BoomExampleTopWithBlockDeviceModule(l: BoomExampleTopWithBlockDevice) extends BoomExampleTopModule(l)
|
||||||
|
with HasPeripheryBlockDeviceModuleImp
|
||||||
@@ -8,6 +8,8 @@ import freechips.rocketchip.devices.tilelink._
|
|||||||
import freechips.rocketchip.util.DontTouch
|
import freechips.rocketchip.util.DontTouch
|
||||||
import testchipip._
|
import testchipip._
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
class ExampleTop(implicit p: Parameters) extends ExampleRocketSystem //RocketSubsystem
|
class ExampleTop(implicit p: Parameters) extends ExampleRocketSystem //RocketSubsystem
|
||||||
with CanHaveMasterAXI4MemPort
|
with CanHaveMasterAXI4MemPort
|
||||||
with HasPeripheryBootROM
|
with HasPeripheryBootROM
|
||||||
@@ -27,6 +29,8 @@ class ExampleTopModule[+L <: ExampleTop](l: L) extends ExampleRocketSystemModule
|
|||||||
with HasPeripherySerialModuleImp
|
with HasPeripherySerialModuleImp
|
||||||
with DontTouch
|
with DontTouch
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
class ExampleTopWithPWMTL(implicit p: Parameters) extends ExampleTop
|
class ExampleTopWithPWMTL(implicit p: Parameters) extends ExampleTop
|
||||||
with HasPeripheryPWMTL {
|
with HasPeripheryPWMTL {
|
||||||
override lazy val module = new ExampleTopWithPWMTLModule(this)
|
override lazy val module = new ExampleTopWithPWMTLModule(this)
|
||||||
@@ -35,6 +39,8 @@ class ExampleTopWithPWMTL(implicit p: Parameters) extends ExampleTop
|
|||||||
class ExampleTopWithPWMTLModule(l: ExampleTopWithPWMTL)
|
class ExampleTopWithPWMTLModule(l: ExampleTopWithPWMTL)
|
||||||
extends ExampleTopModule(l) with HasPeripheryPWMTLModuleImp
|
extends ExampleTopModule(l) with HasPeripheryPWMTLModuleImp
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
class ExampleTopWithPWMAXI4(implicit p: Parameters) extends ExampleTop
|
class ExampleTopWithPWMAXI4(implicit p: Parameters) extends ExampleTop
|
||||||
with HasPeripheryPWMAXI4 {
|
with HasPeripheryPWMAXI4 {
|
||||||
override lazy val module = new ExampleTopWithPWMAXI4Module(this)
|
override lazy val module = new ExampleTopWithPWMAXI4Module(this)
|
||||||
@@ -43,6 +49,8 @@ class ExampleTopWithPWMAXI4(implicit p: Parameters) extends ExampleTop
|
|||||||
class ExampleTopWithPWMAXI4Module(l: ExampleTopWithPWMAXI4)
|
class ExampleTopWithPWMAXI4Module(l: ExampleTopWithPWMAXI4)
|
||||||
extends ExampleTopModule(l) with HasPeripheryPWMAXI4ModuleImp
|
extends ExampleTopModule(l) with HasPeripheryPWMAXI4ModuleImp
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
class ExampleTopWithBlockDevice(implicit p: Parameters) extends ExampleTop
|
class ExampleTopWithBlockDevice(implicit p: Parameters) extends ExampleTop
|
||||||
with HasPeripheryBlockDevice {
|
with HasPeripheryBlockDevice {
|
||||||
override lazy val module = new ExampleTopWithBlockDeviceModule(this)
|
override lazy val module = new ExampleTopWithBlockDeviceModule(this)
|
||||||
|
|||||||
Reference in New Issue
Block a user