1
0

added prefetchAck Grant type

This commit is contained in:
Henry Cook 2015-03-11 17:32:06 -07:00
parent 059575c334
commit 1aff919c24
2 changed files with 18 additions and 17 deletions

View File

@ -249,7 +249,7 @@ class MemIOTileLinkIOConverter(qDepth: Int) extends Module {
gnt_arb.io.in(1).valid := Bool(false) gnt_arb.io.in(1).valid := Bool(false)
gnt_arb.io.in(1).bits.payload := Grant( gnt_arb.io.in(1).bits.payload := Grant(
is_builtin_type = Bool(true), is_builtin_type = Bool(true),
g_type = Mux(data_from_rel, Grant.voluntaryAckType, Grant.ackType), g_type = Mux(data_from_rel, Grant.voluntaryAckType, Grant.putAckType),
client_xact_id = tag_out >> UInt(1), client_xact_id = tag_out >> UInt(1),
manager_xact_id = UInt(0)) manager_xact_id = UInt(0))
@ -414,7 +414,7 @@ class MemIOTileLinkIOConverter(qDepth: Int) extends Module {
gnt_arb.io.in(0).bits.payload := Grant( gnt_arb.io.in(0).bits.payload := Grant(
is_builtin_type = tag_in(0), is_builtin_type = tag_in(0),
g_type = Mux(tag_in(0), g_type = Mux(tag_in(0),
Grant.dataBlockType, Grant.getDataBlockType,
UInt(0)), // TODO: Assumes MI or MEI protocol UInt(0)), // TODO: Assumes MI or MEI protocol
client_xact_id = tag_in >> UInt(1), client_xact_id = tag_in >> UInt(1),
manager_xact_id = UInt(0), manager_xact_id = UInt(0),
@ -447,7 +447,7 @@ class MemIOTileLinkIOConverter(qDepth: Int) extends Module {
gnt_arb.io.in(0).bits.payload := Grant( gnt_arb.io.in(0).bits.payload := Grant(
is_builtin_type = io.mem.resp.bits.tag(0), is_builtin_type = io.mem.resp.bits.tag(0),
g_type = Mux(io.mem.resp.bits.tag(0), g_type = Mux(io.mem.resp.bits.tag(0),
Grant.dataBlockType, Grant.getDataBlockType,
UInt(0)), // TODO: Assumes MI or MEI protocol UInt(0)), // TODO: Assumes MI or MEI protocol
client_xact_id = io.mem.resp.bits.tag >> UInt(1), client_xact_id = io.mem.resp.bits.tag >> UInt(1),
manager_xact_id = UInt(0), manager_xact_id = UInt(0),

View File

@ -121,13 +121,13 @@ class Acquire extends ClientToManagerChannel
def requiresSelfProbe(dummy: Int = 0) = isBuiltInType() && a_type === Acquire.getBlockType def requiresSelfProbe(dummy: Int = 0) = isBuiltInType() && a_type === Acquire.getBlockType
def getBuiltInGrantType(dummy: Int = 0): UInt = { def getBuiltInGrantType(dummy: Int = 0): UInt = {
MuxLookup(this.a_type, Grant.ackType, Array( MuxLookup(this.a_type, Grant.putAckType, Array(
Acquire.getType -> Grant.dataBeatType, Acquire.getType -> Grant.getDataBeatType,
Acquire.getBlockType -> Grant.dataBlockType, Acquire.getBlockType -> Grant.getDataBlockType,
Acquire.putType -> Grant.ackType, Acquire.putType -> Grant.putAckType,
Acquire.putBlockType -> Grant.ackType, Acquire.putBlockType -> Grant.putAckType,
Acquire.putAtomicType -> Grant.dataBeatType, Acquire.putAtomicType -> Grant.getDataBeatType,
Acquire.prefetchType -> Grant.ackType)) Acquire.prefetchType -> Grant.prefetchAckType))
} }
} }
@ -389,13 +389,14 @@ class Grant extends ManagerToClientChannel
} }
object Grant { object Grant {
val nBuiltInTypes = 4 val nBuiltInTypes = 5
def voluntaryAckType = UInt("b00") def voluntaryAckType = UInt("b000")
def ackType = UInt("b01") def putAckType = UInt("b001")
def dataBeatType = UInt("b10") def prefetchAckType = UInt("b011")
def dataBlockType = UInt("b11") def getDataBeatType = UInt("b100")
def typesWithData = Vec(dataBlockType, dataBeatType) def getDataBlockType = UInt("b101")
def typesWithMultibeatData= Vec(dataBlockType) def typesWithData = Vec(getDataBlockType, getDataBeatType)
def typesWithMultibeatData= Vec(getDataBlockType)
def apply( def apply(
is_builtin_type: Bool, is_builtin_type: Bool,