Merge pull request #673 from ucb-bar/serial-tl
Serial-tilelink backing memory
This commit is contained in:
@@ -259,6 +259,13 @@ jobs:
|
|||||||
- run-tests:
|
- run-tests:
|
||||||
group-key: "group-peripherals"
|
group-key: "group-peripherals"
|
||||||
project-key: "chipyard-spiflashread"
|
project-key: "chipyard-spiflashread"
|
||||||
|
chipyard-lbwif-run-tests:
|
||||||
|
executor: main-env
|
||||||
|
steps:
|
||||||
|
- run-tests:
|
||||||
|
group-key: "group-peripherals"
|
||||||
|
project-key: "chipyard-lbwif"
|
||||||
|
|
||||||
chipyard-sha3-run-tests:
|
chipyard-sha3-run-tests:
|
||||||
executor: main-env
|
executor: main-env
|
||||||
steps:
|
steps:
|
||||||
@@ -430,6 +437,9 @@ workflows:
|
|||||||
- chipyard-spiflashread-run-tests:
|
- chipyard-spiflashread-run-tests:
|
||||||
requires:
|
requires:
|
||||||
- prepare-chipyard-peripherals
|
- prepare-chipyard-peripherals
|
||||||
|
- chipyard-lbwif-run-tests:
|
||||||
|
requires:
|
||||||
|
- prepare-chipyard-peripherals
|
||||||
|
|
||||||
- chipyard-sha3-run-tests:
|
- chipyard-sha3-run-tests:
|
||||||
requires:
|
requires:
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ LOCAL_FIRESIM_DIR=$LOCAL_CHIPYARD_DIR/sims/firesim/sim
|
|||||||
# key value store to get the build groups
|
# key value store to get the build groups
|
||||||
declare -A grouping
|
declare -A grouping
|
||||||
grouping["group-cores"]="chipyard-ariane chipyard-rocket chipyard-hetero chipyard-boom"
|
grouping["group-cores"]="chipyard-ariane chipyard-rocket chipyard-hetero chipyard-boom"
|
||||||
grouping["group-peripherals"]="chipyard-dmirocket chipyard-blkdev chipyard-spiflashread chipyard-spiflashwrite chipyard-mmios"
|
grouping["group-peripherals"]="chipyard-dmirocket chipyard-blkdev chipyard-spiflashread chipyard-spiflashwrite chipyard-mmios chipyard-lbwif"
|
||||||
grouping["group-accels"]="chipyard-nvdla chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-streaming-fir chipyard-streaming-passthrough"
|
grouping["group-accels"]="chipyard-nvdla chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-streaming-fir chipyard-streaming-passthrough"
|
||||||
grouping["group-tracegen"]="tracegen tracegen-boom"
|
grouping["group-tracegen"]="tracegen tracegen-boom"
|
||||||
grouping["group-other"]="icenet testchipip"
|
grouping["group-other"]="icenet testchipip"
|
||||||
@@ -57,6 +57,7 @@ grouping["group-other"]="icenet testchipip"
|
|||||||
declare -A mapping
|
declare -A mapping
|
||||||
mapping["chipyard-rocket"]=""
|
mapping["chipyard-rocket"]=""
|
||||||
mapping["chipyard-dmirocket"]=" CONFIG=dmiRocketConfig"
|
mapping["chipyard-dmirocket"]=" CONFIG=dmiRocketConfig"
|
||||||
|
mapping["chipyard-lbwif"]=" CONFIG=LBWIFRocketConfig"
|
||||||
mapping["chipyard-sha3"]=" CONFIG=Sha3RocketConfig"
|
mapping["chipyard-sha3"]=" CONFIG=Sha3RocketConfig"
|
||||||
mapping["chipyard-streaming-fir"]=" CONFIG=StreamingFIRRocketConfig"
|
mapping["chipyard-streaming-fir"]=" CONFIG=StreamingFIRRocketConfig"
|
||||||
mapping["chipyard-streaming-passthrough"]=" CONFIG=StreamingPassthroughRocketConfig"
|
mapping["chipyard-streaming-passthrough"]=" CONFIG=StreamingPassthroughRocketConfig"
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ case $1 in
|
|||||||
chipyard-dmirocket)
|
chipyard-dmirocket)
|
||||||
run_bmark ${mapping[$1]}
|
run_bmark ${mapping[$1]}
|
||||||
;;
|
;;
|
||||||
|
chipyard-lbwif)
|
||||||
|
run_bmark ${mapping[$1]}
|
||||||
|
;;
|
||||||
chipyard-boom)
|
chipyard-boom)
|
||||||
run_bmark ${mapping[$1]}
|
run_bmark ${mapping[$1]}
|
||||||
;;
|
;;
|
||||||
@@ -89,7 +92,7 @@ case $1 in
|
|||||||
run_tracegen ${mapping[$1]}
|
run_tracegen ${mapping[$1]}
|
||||||
;;
|
;;
|
||||||
chipyard-ariane)
|
chipyard-ariane)
|
||||||
make run-binary-fast -C $LOCAL_SIM_DIR ${mapping[$1]} BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/dhrystone.riscv
|
make run-binary-fast -C $LOCAL_SIM_DIR ${mapping[$1]} BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/benchmarks/multiply.riscv
|
||||||
;;
|
;;
|
||||||
chipyard-nvdla)
|
chipyard-nvdla)
|
||||||
make -C $LOCAL_CHIPYARD_DIR/tests
|
make -C $LOCAL_CHIPYARD_DIR/tests
|
||||||
|
|||||||
@@ -58,16 +58,15 @@ object GenerateReset {
|
|||||||
val reset_wire = Wire(Input(Reset()))
|
val reset_wire = Wire(Input(Reset()))
|
||||||
val (reset_io, resetIOCell) = p(GlobalResetSchemeKey) match {
|
val (reset_io, resetIOCell) = p(GlobalResetSchemeKey) match {
|
||||||
case GlobalResetSynchronous =>
|
case GlobalResetSynchronous =>
|
||||||
IOCell.generateIOFromSignal(reset_wire, Some("iocell_reset"))
|
IOCell.generateIOFromSignal(reset_wire, "reset")
|
||||||
case GlobalResetAsynchronousFull =>
|
case GlobalResetAsynchronousFull =>
|
||||||
IOCell.generateIOFromSignal(reset_wire, Some("iocell_reset"), abstractResetAsAsync = true)
|
IOCell.generateIOFromSignal(reset_wire, "reset", abstractResetAsAsync = true)
|
||||||
case GlobalResetAsynchronous => {
|
case GlobalResetAsynchronous => {
|
||||||
val async_reset_wire = Wire(Input(AsyncReset()))
|
val async_reset_wire = Wire(Input(AsyncReset()))
|
||||||
reset_wire := ResetCatchAndSync(clock, async_reset_wire.asBool())
|
reset_wire := ResetCatchAndSync(clock, async_reset_wire.asBool())
|
||||||
IOCell.generateIOFromSignal(async_reset_wire, Some("iocell_reset"), abstractResetAsAsync = true)
|
IOCell.generateIOFromSignal(async_reset_wire, "reset", abstractResetAsAsync = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reset_io.suggestName("reset")
|
|
||||||
chiptop.iocells ++= resetIOCell
|
chiptop.iocells ++= resetIOCell
|
||||||
chiptop.harnessFunctions += ((th: HasHarnessSignalReferences) => {
|
chiptop.harnessFunctions += ((th: HasHarnessSignalReferences) => {
|
||||||
reset_io := th.dutReset
|
reset_io := th.dutReset
|
||||||
@@ -104,9 +103,8 @@ object ClockingSchemeGenerators {
|
|||||||
//this needs directionality so generateIOFromSignal works
|
//this needs directionality so generateIOFromSignal works
|
||||||
val clock_wire = Wire(Input(Clock()))
|
val clock_wire = Wire(Input(Clock()))
|
||||||
val reset_wire = GenerateReset(chiptop, clock_wire)
|
val reset_wire = GenerateReset(chiptop, clock_wire)
|
||||||
val (clock_io, clockIOCell) = IOCell.generateIOFromSignal(clock_wire, Some("iocell_clock"))
|
val (clock_io, clockIOCell) = IOCell.generateIOFromSignal(clock_wire, "clock")
|
||||||
chiptop.iocells ++= clockIOCell
|
chiptop.iocells ++= clockIOCell
|
||||||
clock_io.suggestName("clock")
|
|
||||||
|
|
||||||
implicitClockSourceNode.out.unzip._1.map { o =>
|
implicitClockSourceNode.out.unzip._1.map { o =>
|
||||||
o.clock := clock_wire
|
o.clock := clock_wire
|
||||||
@@ -150,9 +148,8 @@ object ClockingSchemeGenerators {
|
|||||||
// this needs directionality so generateIOFromSignal works
|
// this needs directionality so generateIOFromSignal works
|
||||||
val clock_wire = Wire(Input(Clock()))
|
val clock_wire = Wire(Input(Clock()))
|
||||||
val reset_wire = GenerateReset(chiptop, clock_wire)
|
val reset_wire = GenerateReset(chiptop, clock_wire)
|
||||||
val (clock_io, clockIOCell) = IOCell.generateIOFromSignal(clock_wire, Some("iocell_clock"))
|
val (clock_io, clockIOCell) = IOCell.generateIOFromSignal(clock_wire, "clock")
|
||||||
chiptop.iocells ++= clockIOCell
|
chiptop.iocells ++= clockIOCell
|
||||||
clock_io.suggestName("clock")
|
|
||||||
val div_clock = Pow2ClockDivider(clock_wire, 2)
|
val div_clock = Pow2ClockDivider(clock_wire, 2)
|
||||||
|
|
||||||
implicitClockSourceNode.out.unzip._1.map { o =>
|
implicitClockSourceNode.out.unzip._1.map { o =>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class DigitalTop(implicit p: Parameters) extends ChipyardSystem
|
|||||||
with testchipip.CanHaveTraceIO // Enables optionally adding trace IO
|
with testchipip.CanHaveTraceIO // Enables optionally adding trace IO
|
||||||
with testchipip.CanHaveBackingScratchpad // Enables optionally adding a backing scratchpad
|
with testchipip.CanHaveBackingScratchpad // Enables optionally adding a backing scratchpad
|
||||||
with testchipip.CanHavePeripheryBlockDevice // Enables optionally adding the block device
|
with testchipip.CanHavePeripheryBlockDevice // Enables optionally adding the block device
|
||||||
with testchipip.CanHavePeripherySerial // Enables optionally adding the TSI serial-adapter and port
|
with testchipip.CanHavePeripheryTLSerial // Enables optionally adding the backing memory and serial adapter
|
||||||
with sifive.blocks.devices.uart.HasPeripheryUART // Enables optionally adding the sifive UART
|
with sifive.blocks.devices.uart.HasPeripheryUART // Enables optionally adding the sifive UART
|
||||||
with sifive.blocks.devices.gpio.HasPeripheryGPIO // Enables optionally adding the sifive GPIOs
|
with sifive.blocks.devices.gpio.HasPeripheryGPIO // Enables optionally adding the sifive GPIOs
|
||||||
with sifive.blocks.devices.spi.HasPeripherySPIFlash // Enables optionally adding the sifive SPI flash controller
|
with sifive.blocks.devices.spi.HasPeripherySPIFlash // Enables optionally adding the sifive SPI flash controller
|
||||||
|
|||||||
@@ -223,20 +223,24 @@ class WithTiedOffDebug extends OverrideHarnessBinder({
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
class WithTiedOffSerial extends OverrideHarnessBinder({
|
class WithSerialAdapterTiedOff extends OverrideHarnessBinder({
|
||||||
(system: CanHavePeripherySerial, th: HasHarnessSignalReferences, ports: Seq[ClockedIO[SerialIO]]) => {
|
(system: CanHavePeripheryTLSerial, th: HasHarnessSignalReferences, ports: Seq[ClockedIO[SerialIO]]) => {
|
||||||
ports.map { p => SerialAdapter.tieoff(Some(p.bits)) }
|
implicit val p = chipyard.iobinders.GetSystemParameters(system)
|
||||||
Nil
|
ports.map({ port =>
|
||||||
|
val ram = SerialAdapter.connectHarnessRAM(system.serdesser.get, port, th.harnessReset)
|
||||||
|
SerialAdapter.tieoff(ram.module.io.tsi_ser)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
class WithSimSerial extends OverrideHarnessBinder({
|
class WithSimSerial extends OverrideHarnessBinder({
|
||||||
(system: CanHavePeripherySerial, th: HasHarnessSignalReferences, ports: Seq[ClockedIO[SerialIO]]) => {
|
(system: CanHavePeripheryTLSerial, th: HasHarnessSignalReferences, ports: Seq[ClockedIO[SerialIO]]) => {
|
||||||
ports.map { p =>
|
implicit val p = chipyard.iobinders.GetSystemParameters(system)
|
||||||
val ser_success = SerialAdapter.connectSimSerial(p.bits, p.clock, th.harnessReset)
|
ports.map({ port =>
|
||||||
when (ser_success) { th.success := true.B }
|
val ram = SerialAdapter.connectHarnessRAM(system.serdesser.get, port, th.harnessReset)
|
||||||
}
|
val success = SerialAdapter.connectSimSerial(ram.module.io.tsi_ser, port.clock, th.harnessReset.asBool)
|
||||||
Nil
|
when (success) { th.success := true.B }
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -146,8 +146,7 @@ class WithGPIOCells extends OverrideIOBinder({
|
|||||||
class WithUARTIOCells extends OverrideIOBinder({
|
class WithUARTIOCells extends OverrideIOBinder({
|
||||||
(system: HasPeripheryUARTModuleImp) => {
|
(system: HasPeripheryUARTModuleImp) => {
|
||||||
val (ports: Seq[UARTPortIO], cells2d) = system.uart.zipWithIndex.map({ case (u, i) =>
|
val (ports: Seq[UARTPortIO], cells2d) = system.uart.zipWithIndex.map({ case (u, i) =>
|
||||||
val (port, ios) = IOCell.generateIOFromSignal(u, Some(s"iocell_uart_${i}"), system.p(IOCellKey))
|
val (port, ios) = IOCell.generateIOFromSignal(u, s"uart_${i}", system.p(IOCellKey))
|
||||||
port.suggestName(s"uart_${i}")
|
|
||||||
(port, ios)
|
(port, ios)
|
||||||
}).unzip
|
}).unzip
|
||||||
(ports, cells2d.flatten)
|
(ports, cells2d.flatten)
|
||||||
@@ -158,8 +157,9 @@ class WithUARTIOCells extends OverrideIOBinder({
|
|||||||
class WithSPIIOCells extends OverrideIOBinder({
|
class WithSPIIOCells extends OverrideIOBinder({
|
||||||
(system: HasPeripherySPIFlashModuleImp) => {
|
(system: HasPeripherySPIFlashModuleImp) => {
|
||||||
val (ports: Seq[SPIChipIO], cells2d) = system.qspi.zipWithIndex.map({ case (s, i) =>
|
val (ports: Seq[SPIChipIO], cells2d) = system.qspi.zipWithIndex.map({ case (s, i) =>
|
||||||
val port = IO(new SPIChipIO(s.c.csWidth)).suggestName(s"spi_${i}")
|
val name = s"spi_${i}"
|
||||||
val iocellBase = s"iocell_spi_${i}"
|
val port = IO(new SPIChipIO(s.c.csWidth)).suggestName(name)
|
||||||
|
val iocellBase = s"iocell_${name}"
|
||||||
|
|
||||||
// SCK and CS are unidirectional outputs
|
// SCK and CS are unidirectional outputs
|
||||||
val sckIOs = IOCell.generateFromSignal(s.sck, port.sck, Some(s"${iocellBase}_sck"), system.p(IOCellKey))
|
val sckIOs = IOCell.generateFromSignal(s.sck, port.sck, Some(s"${iocellBase}_sck"), system.p(IOCellKey))
|
||||||
@@ -185,8 +185,7 @@ class WithSPIIOCells extends OverrideIOBinder({
|
|||||||
class WithExtInterruptIOCells extends OverrideIOBinder({
|
class WithExtInterruptIOCells extends OverrideIOBinder({
|
||||||
(system: HasExtInterruptsModuleImp) => {
|
(system: HasExtInterruptsModuleImp) => {
|
||||||
if (system.outer.nExtInterrupts > 0) {
|
if (system.outer.nExtInterrupts > 0) {
|
||||||
val (port: UInt, cells) = IOCell.generateIOFromSignal(system.interrupts, Some("iocell_interrupts"), system.p(IOCellKey))
|
val (port: UInt, cells) = IOCell.generateIOFromSignal(system.interrupts, "ext_interrupts", system.p(IOCellKey))
|
||||||
port.suggestName("ext_interrupts")
|
|
||||||
(Seq(port), cells)
|
(Seq(port), cells)
|
||||||
} else {
|
} else {
|
||||||
(Nil, Nil)
|
(Nil, Nil)
|
||||||
@@ -230,19 +229,16 @@ class WithDebugIOCells extends OverrideIOBinder({
|
|||||||
|
|
||||||
// Add IOCells for the DMI/JTAG/APB ports
|
// Add IOCells for the DMI/JTAG/APB ports
|
||||||
val dmiTuple = debug.clockeddmi.map { d =>
|
val dmiTuple = debug.clockeddmi.map { d =>
|
||||||
IOCell.generateIOFromSignal(d, Some("iocell_dmi"), p(IOCellKey), abstractResetAsAsync = p(GlobalResetSchemeKey).pinIsAsync)
|
IOCell.generateIOFromSignal(d, "dmi", p(IOCellKey), abstractResetAsAsync = p(GlobalResetSchemeKey).pinIsAsync)
|
||||||
}
|
}
|
||||||
dmiTuple.map(_._1).foreach(_.suggestName("dmi"))
|
|
||||||
|
|
||||||
val jtagTuple = debug.systemjtag.map { j =>
|
val jtagTuple = debug.systemjtag.map { j =>
|
||||||
IOCell.generateIOFromSignal(j.jtag, Some("iocell_jtag"), p(IOCellKey), abstractResetAsAsync = p(GlobalResetSchemeKey).pinIsAsync)
|
IOCell.generateIOFromSignal(j.jtag, "jtag", p(IOCellKey), abstractResetAsAsync = p(GlobalResetSchemeKey).pinIsAsync)
|
||||||
}
|
}
|
||||||
jtagTuple.map(_._1).foreach(_.suggestName("jtag"))
|
|
||||||
|
|
||||||
val apbTuple = debug.apb.map { a =>
|
val apbTuple = debug.apb.map { a =>
|
||||||
IOCell.generateIOFromSignal(a, Some("iocell_apb"), p(IOCellKey), abstractResetAsAsync = p(GlobalResetSchemeKey).pinIsAsync)
|
IOCell.generateIOFromSignal(a, "apb", p(IOCellKey), abstractResetAsAsync = p(GlobalResetSchemeKey).pinIsAsync)
|
||||||
}
|
}
|
||||||
apbTuple.map(_._1).foreach(_.suggestName("apb"))
|
|
||||||
|
|
||||||
val allTuples = (dmiTuple ++ jtagTuple ++ apbTuple).toSeq
|
val allTuples = (dmiTuple ++ jtagTuple ++ apbTuple).toSeq
|
||||||
(allTuples.map(_._1).toSeq, allTuples.flatMap(_._2).toSeq)
|
(allTuples.map(_._1).toSeq, allTuples.flatMap(_._2).toSeq)
|
||||||
@@ -250,11 +246,10 @@ class WithDebugIOCells extends OverrideIOBinder({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
class WithSerialIOCells extends OverrideIOBinder({
|
class WithSerialTLIOCells extends OverrideIOBinder({
|
||||||
(system: CanHavePeripherySerial) => system.serial.map({ s =>
|
(system: CanHavePeripheryTLSerial) => system.serial_tl.map({ s =>
|
||||||
val sys = system.asInstanceOf[BaseSubsystem]
|
val sys = system.asInstanceOf[BaseSubsystem]
|
||||||
val (port, cells) = IOCell.generateIOFromSignal(s.getWrappedValue, Some("serial"), sys.p(IOCellKey))
|
val (port, cells) = IOCell.generateIOFromSignal(s.getWrappedValue, "serial_tl", sys.p(IOCellKey))
|
||||||
port.suggestName("serial")
|
|
||||||
(Seq(port), cells)
|
(Seq(port), cells)
|
||||||
}).getOrElse((Nil, Nil))
|
}).getOrElse((Nil, Nil))
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -25,12 +25,12 @@ import freechips.rocketchip.amba.axi4._
|
|||||||
import boom.common.{BoomTile}
|
import boom.common.{BoomTile}
|
||||||
|
|
||||||
|
|
||||||
import testchipip.{DromajoHelper, CanHavePeripherySerial, SerialKey}
|
import testchipip.{DromajoHelper, CanHavePeripheryTLSerial, SerialTLKey}
|
||||||
|
|
||||||
trait CanHaveHTIF { this: BaseSubsystem =>
|
trait CanHaveHTIF { this: BaseSubsystem =>
|
||||||
// Advertise HTIF if system can communicate with fesvr
|
// Advertise HTIF if system can communicate with fesvr
|
||||||
if (this match {
|
if (this match {
|
||||||
case _: CanHavePeripherySerial if p(SerialKey) => true
|
case _: CanHavePeripheryTLSerial if p(SerialTLKey).nonEmpty => true
|
||||||
case _: HasPeripheryDebug if p(ExportDebug).dmi => true
|
case _: HasPeripheryDebug if p(ExportDebug).dmi => true
|
||||||
case _ => false
|
case _ => false
|
||||||
}) {
|
}) {
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ class AbstractConfig extends Config(
|
|||||||
// The HarnessBinders control generation of hardware in the TestHarness
|
// The HarnessBinders control generation of hardware in the TestHarness
|
||||||
new chipyard.harness.WithUARTAdapter ++ // add UART adapter to display UART on stdout, if uart is present
|
new chipyard.harness.WithUARTAdapter ++ // add UART adapter to display UART on stdout, if uart is present
|
||||||
new chipyard.harness.WithBlackBoxSimMem ++ // add SimDRAM DRAM model for axi4 backing memory, if axi4 mem is enabled
|
new chipyard.harness.WithBlackBoxSimMem ++ // add SimDRAM DRAM model for axi4 backing memory, if axi4 mem is enabled
|
||||||
|
new chipyard.harness.WithSimSerial ++ // add external serial-adapter and RAM
|
||||||
new chipyard.harness.WithSimDebug ++ // add SimJTAG or SimDTM adapters if debug module is enabled
|
new chipyard.harness.WithSimDebug ++ // add SimJTAG or SimDTM adapters if debug module is enabled
|
||||||
new chipyard.harness.WithSimSerial ++ // add SimSerial adapter for HTIF, if serial port is present
|
|
||||||
new chipyard.harness.WithGPIOTiedOff ++ // tie-off chiptop GPIOs, if GPIOs are present
|
new chipyard.harness.WithGPIOTiedOff ++ // tie-off chiptop GPIOs, if GPIOs are present
|
||||||
new chipyard.harness.WithSimSPIFlashModel ++ // add simulated SPI flash memory, if SPI is enabled
|
new chipyard.harness.WithSimSPIFlashModel ++ // add simulated SPI flash memory, if SPI is enabled
|
||||||
new chipyard.harness.WithSimAXIMMIO ++ // add SimAXIMem for axi4 mmio port, if enabled
|
new chipyard.harness.WithSimAXIMMIO ++ // add SimAXIMem for axi4 mmio port, if enabled
|
||||||
@@ -29,7 +29,7 @@ class AbstractConfig extends Config(
|
|||||||
new chipyard.iobinders.WithL2FBusAXI4Punchthrough ++
|
new chipyard.iobinders.WithL2FBusAXI4Punchthrough ++
|
||||||
new chipyard.iobinders.WithBlockDeviceIOPunchthrough ++
|
new chipyard.iobinders.WithBlockDeviceIOPunchthrough ++
|
||||||
new chipyard.iobinders.WithNICIOPunchthrough ++
|
new chipyard.iobinders.WithNICIOPunchthrough ++
|
||||||
new chipyard.iobinders.WithSerialIOCells ++
|
new chipyard.iobinders.WithSerialTLIOCells ++
|
||||||
new chipyard.iobinders.WithDebugIOCells ++
|
new chipyard.iobinders.WithDebugIOCells ++
|
||||||
new chipyard.iobinders.WithUARTIOCells ++
|
new chipyard.iobinders.WithUARTIOCells ++
|
||||||
new chipyard.iobinders.WithGPIOCells ++
|
new chipyard.iobinders.WithGPIOCells ++
|
||||||
@@ -38,8 +38,7 @@ class AbstractConfig extends Config(
|
|||||||
new chipyard.iobinders.WithTraceIOPunchthrough ++
|
new chipyard.iobinders.WithTraceIOPunchthrough ++
|
||||||
new chipyard.iobinders.WithExtInterruptIOCells ++
|
new chipyard.iobinders.WithExtInterruptIOCells ++
|
||||||
|
|
||||||
|
new testchipip.WithDefaultSerialTL ++ // use serialized tilelink port to external serialadapter/harnessRAM
|
||||||
new testchipip.WithTSI ++ // use testchipip serial offchip link
|
|
||||||
new chipyard.config.WithBootROM ++ // use default bootrom
|
new chipyard.config.WithBootROM ++ // use default bootrom
|
||||||
new chipyard.config.WithUART ++ // add a UART
|
new chipyard.config.WithUART ++ // add a UART
|
||||||
new chipyard.config.WithL2TLBs(1024) ++ // use L2 TLBs
|
new chipyard.config.WithL2TLBs(1024) ++ // use L2 TLBs
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class ArianeConfig extends Config(
|
|||||||
new chipyard.config.AbstractConfig)
|
new chipyard.config.AbstractConfig)
|
||||||
|
|
||||||
class dmiArianeConfig extends Config(
|
class dmiArianeConfig extends Config(
|
||||||
new chipyard.harness.WithTiedOffSerial ++ // Tie off the serial port, override default instantiation of SimSerial
|
new chipyard.harness.WithSerialAdapterTiedOff ++ // Tie off the serial port, override default instantiation of SimSerial
|
||||||
new chipyard.config.WithDMIDTM ++ // have debug module expose a clocked DMI port
|
new chipyard.config.WithDMIDTM ++ // have debug module expose a clocked DMI port
|
||||||
new ariane.WithNArianeCores(1) ++ // single Ariane core
|
new ariane.WithNArianeCores(1) ++ // single Ariane core
|
||||||
new chipyard.config.AbstractConfig)
|
new chipyard.config.AbstractConfig)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class GemminiRocketConfig extends Config(
|
|||||||
|
|
||||||
// DOC include start: DmiRocket
|
// DOC include start: DmiRocket
|
||||||
class dmiRocketConfig extends Config(
|
class dmiRocketConfig extends Config(
|
||||||
new chipyard.harness.WithTiedOffSerial ++ // don't use serial to drive the chip, since we use DMI instead
|
new chipyard.harness.WithSerialAdapterTiedOff ++ // don't attach an external SimSerial
|
||||||
new chipyard.config.WithDMIDTM ++ // have debug module expose a clocked DMI port
|
new chipyard.config.WithDMIDTM ++ // have debug module expose a clocked DMI port
|
||||||
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
||||||
new chipyard.config.AbstractConfig)
|
new chipyard.config.AbstractConfig)
|
||||||
@@ -182,4 +182,8 @@ class DividedClockRocketConfig extends Config(
|
|||||||
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
||||||
new chipyard.config.AbstractConfig)
|
new chipyard.config.AbstractConfig)
|
||||||
|
|
||||||
|
class LBWIFRocketConfig extends Config(
|
||||||
|
new testchipip.WithSerialTLMem(isMainMemory=true) ++ // set lbwif memory base to DRAM_BASE, use as main memory
|
||||||
|
new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove AXI4 backing memory
|
||||||
|
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
||||||
|
new chipyard.config.AbstractConfig)
|
||||||
|
|||||||
@@ -66,10 +66,11 @@ class WithFireSimIOCellModels extends Config((site, here, up) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
class WithSerialBridge extends OverrideHarnessBinder({
|
class WithSerialBridge extends OverrideHarnessBinder({
|
||||||
(system: CanHavePeripherySerial, th: HasHarnessSignalReferences, ports: Seq[ClockedIO[SerialIO]]) => {
|
(system: CanHavePeripheryTLSerial, th: HasHarnessSignalReferences, ports: Seq[ClockedIO[SerialIO]]) => {
|
||||||
ports.map { p =>
|
ports.map { p =>
|
||||||
|
val ram = SerialAdapter.connectHarnessRAM(system.serdesser.get, p, th.harnessReset)
|
||||||
withClockAndReset(p.clock, th.harnessReset) {
|
withClockAndReset(p.clock, th.harnessReset) {
|
||||||
SerialBridge(p.clock, p.bits, MainMemoryConsts.globalName)(GetSystemParameters(system))
|
SerialBridge(p.clock, ram.module.io.tsi_ser, MainMemoryConsts.globalName)(GetSystemParameters(system))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Nil
|
Nil
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ class WithFireSimConfigTweaks extends Config(
|
|||||||
// Required: Adds IO to attach SerialBridge. The SerialBridges is responsible
|
// Required: Adds IO to attach SerialBridge. The SerialBridges is responsible
|
||||||
// for signalling simulation termination under simulation success. This fragment can
|
// for signalling simulation termination under simulation success. This fragment can
|
||||||
// be removed if you supply an auxiliary bridge that signals simulation termination
|
// be removed if you supply an auxiliary bridge that signals simulation termination
|
||||||
new testchipip.WithTSI ++
|
new testchipip.WithDefaultSerialTL ++
|
||||||
// Optional: Removing this will require using an initramfs under linux
|
// Optional: Removing this will require using an initramfs under linux
|
||||||
new testchipip.WithBlockDevice ++
|
new testchipip.WithBlockDevice ++
|
||||||
// Required*: Scale default baud rate with periphery bus frequency
|
// Required*: Scale default baud rate with periphery bus frequency
|
||||||
@@ -131,7 +131,7 @@ class FireSimSmallSystemConfig extends Config(
|
|||||||
new WithoutClockGating ++
|
new WithoutClockGating ++
|
||||||
new WithoutTLMonitors ++
|
new WithoutTLMonitors ++
|
||||||
new freechips.rocketchip.subsystem.WithExtMemSize(1 << 28) ++
|
new freechips.rocketchip.subsystem.WithExtMemSize(1 << 28) ++
|
||||||
new testchipip.WithTSI ++
|
new testchipip.WithDefaultSerialTL ++
|
||||||
new testchipip.WithBlockDevice ++
|
new testchipip.WithBlockDevice ++
|
||||||
new chipyard.config.WithUART ++
|
new chipyard.config.WithUART ++
|
||||||
new freechips.rocketchip.subsystem.WithInclusiveCache(nWays = 2, capacityKB = 64) ++
|
new freechips.rocketchip.subsystem.WithInclusiveCache(nWays = 2, capacityKB = 64) ++
|
||||||
|
|||||||
Submodule generators/testchipip updated: a86c827ca6...bdca33ec16
Submodule sims/firesim updated: c1cd3e5e70...3dbe8aee3f
Submodule tools/barstools updated: 31590a7948...4a5c75fcf8
Reference in New Issue
Block a user