Merge branch 'main' of https://github.com/ucb-bar/radiance into main
This commit is contained in:
@@ -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 \
|
||||||
|
|||||||
@@ -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 := {
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user