Merge branch 'main' of https://github.com/ucb-bar/radiance into main

This commit is contained in:
Richard Yan
2024-04-09 20:09:07 -07:00
4 changed files with 12 additions and 8 deletions

View File

@@ -9,7 +9,7 @@
RADPIE_SRC_DIR = $(base_dir)/generators/radiance/radpie RADPIE_SRC_DIR = $(base_dir)/generators/radiance/radpie
RADPIE_BUILD_DIR = $(RADPIE_SRC_DIR)/target/release RADPIE_BUILD_DIR = $(RADPIE_SRC_DIR)/target/release
EXTRA_SIM_REQS += radpie # EXTRA_SIM_REQS += radpie
EXTRA_SIM_LDFLAGS += -L$(RADPIE_BUILD_DIR) -Wl,-rpath,$(RADPIE_BUILD_DIR) -lradpie EXTRA_SIM_LDFLAGS += -L$(RADPIE_BUILD_DIR) -Wl,-rpath,$(RADPIE_BUILD_DIR) -lradpie
EXTRA_SIM_PREPROC_DEFINES += \ EXTRA_SIM_PREPROC_DEFINES += \
+define+SIMULATION \ +define+SIMULATION \

View File

@@ -344,13 +344,18 @@ class SourceGenerator[T <: Data](
io.id.valid := (if (ignoreInUse) true.B else !lowestFreeRow.valid) io.id.valid := (if (ignoreInUse) true.B else !lowestFreeRow.valid)
io.id.bits := lowestFree io.id.bits := lowestFree
when(io.gen && io.id.valid /* fire */ ) { when(io.gen && io.id.valid /* fire */ ) {
occupancyTable(io.id.bits).valid := true.B // mark in use // handle reclaim at the same cycle, e.g. for 0-latency D channel response
if (metadata.isDefined) { when (!io.reclaim.valid || io.reclaim.bits =/= io.id.bits) {
occupancyTable(io.id.bits).meta := io.meta occupancyTable(io.id.bits).valid := true.B // mark in use
if (metadata.isDefined) {
occupancyTable(io.id.bits).meta := io.meta
}
} }
} }
when(io.reclaim.valid) { when(io.reclaim.valid) {
// @perf: would this require multiple write ports? // @perf: would this require multiple write ports?
// NOTE: this does not seem sufficient to handle same-cycle gen-reclaimon
// its own
occupancyTable(io.reclaim.bits).valid := false.B // mark freed occupancyTable(io.reclaim.bits).valid := false.B // mark freed
} }
io.peek := { io.peek := {

View File

@@ -405,7 +405,6 @@ class RadianceClusterModuleImp(outer: RadianceCluster) extends ClusterModuleImp(
} }
// must empty backup before filling data pipe // must empty backup before filling data pipe
assert(!(sram_read_backup_reg.valid && data_pipe.valid && data_pipe_in.fire)) assert(!(sram_read_backup_reg.valid && data_pipe.valid && data_pipe_in.fire))
assert(data_pipe_in.valid === data_pipe_in.fire)
r_node.d.bits := r_edge.AccessAck( r_node.d.bits := r_edge.AccessAck(
Mux(r_node.d.valid, metadata_pipe.bits.source, 0.U), Mux(r_node.d.valid, metadata_pipe.bits.source, 0.U),

View File

@@ -325,8 +325,8 @@ class RadianceTile private (
} }
// Barrier synchronization node // Barrier synchronization node
// FIXME: hardcoded params // FIXME: hardcoded param eq
val numBarriers = 8 val numBarriers = numWarps
def barrierIdBits = log2Ceil(numBarriers) def barrierIdBits = log2Ceil(numBarriers)
val barrierMasterNode = BarrierMasterNode(barrierIdBits) val barrierMasterNode = BarrierMasterNode(barrierIdBits)
@@ -570,7 +570,7 @@ class RadianceTileModuleImp(outer: RadianceTile)
// make connection: // make connection:
// VortexBundle <--> sourceId filter <--> VortexTLAdapter <--> dmemNodes // VortexBundle <--> sourceId filter <--> VortexTLAdapter <--> dmemNodes
// //
// Chisel doesn't support 2-D array in BlackBox interface to Verilog, so // Chisel doesn't support 2-D array in BlackBox interface to Verilog, so
// need to flatten everything. // need to flatten everything.
dmemTLAdapters.zipWithIndex.foreach { dmemTLAdapters.zipWithIndex.foreach {