fix null hub store ack bug
This commit is contained in:
parent
44ff22a26f
commit
4f4b990a4f
@ -124,7 +124,7 @@ trait ThreeStateIncoherence extends CoherencePolicy {
|
|||||||
def newStateOnHit(cmd: Bits, state: UFix): UFix = newState(cmd, state)
|
def newStateOnHit(cmd: Bits, state: UFix): UFix = newState(cmd, state)
|
||||||
def newTransactionOnPrimaryMiss(cmd: Bits, state: UFix): UFix = {
|
def newTransactionOnPrimaryMiss(cmd: Bits, state: UFix): UFix = {
|
||||||
val (read, write) = cpuCmdToRW(cmd)
|
val (read, write) = cpuCmdToRW(cmd)
|
||||||
Mux(write, X_INIT_READ_EXCLUSIVE, X_INIT_READ_SHARED)
|
Mux(write || cmd === M_PFW, X_INIT_READ_EXCLUSIVE, X_INIT_READ_SHARED)
|
||||||
}
|
}
|
||||||
def newTransactionOnSecondaryMiss(cmd: Bits, state: UFix, outstanding: TransactionInit): UFix = {
|
def newTransactionOnSecondaryMiss(cmd: Bits, state: UFix, outstanding: TransactionInit): UFix = {
|
||||||
val (read, write) = cpuCmdToRW(cmd)
|
val (read, write) = cpuCmdToRW(cmd)
|
||||||
@ -170,7 +170,7 @@ trait FourStateCoherence extends CoherencePolicy {
|
|||||||
}
|
}
|
||||||
def newTransactionOnPrimaryMiss(cmd: Bits, state: UFix): UFix = {
|
def newTransactionOnPrimaryMiss(cmd: Bits, state: UFix): UFix = {
|
||||||
val (read, write) = cpuCmdToRW(cmd)
|
val (read, write) = cpuCmdToRW(cmd)
|
||||||
Mux(write, X_INIT_READ_EXCLUSIVE, X_INIT_READ_SHARED)
|
Mux(write || cmd === M_PFW, X_INIT_READ_EXCLUSIVE, X_INIT_READ_SHARED)
|
||||||
}
|
}
|
||||||
def newTransactionOnSecondaryMiss(cmd: Bits, state: UFix, outstanding: TransactionInit): UFix = {
|
def newTransactionOnSecondaryMiss(cmd: Bits, state: UFix, outstanding: TransactionInit): UFix = {
|
||||||
val (read, write) = cpuCmdToRW(cmd)
|
val (read, write) = cpuCmdToRW(cmd)
|
||||||
@ -442,7 +442,7 @@ class CoherenceHubNull extends CoherenceHub {
|
|||||||
x_rep.bits.global_xact_id := UFix(0) // don't care
|
x_rep.bits.global_xact_id := UFix(0) // don't care
|
||||||
x_rep.bits.data := io.mem.resp.bits.data
|
x_rep.bits.data := io.mem.resp.bits.data
|
||||||
x_rep.bits.require_ack := Bool(true)
|
x_rep.bits.require_ack := Bool(true)
|
||||||
x_rep.valid := io.mem.resp.valid || x_init.valid && is_write
|
x_rep.valid := io.mem.resp.valid || x_init.valid && is_write && io.mem.req_cmd.ready
|
||||||
|
|
||||||
io.tiles(0).xact_abort.valid := Bool(false)
|
io.tiles(0).xact_abort.valid := Bool(false)
|
||||||
io.tiles(0).xact_finish.ready := Bool(true)
|
io.tiles(0).xact_finish.ready := Bool(true)
|
||||||
|
Loading…
Reference in New Issue
Block a user