get rid of MuxBundle now that MuxCase and MuxLookup are fixed
This commit is contained in:
parent
719fffff40
commit
e3391b36b2
@ -197,7 +197,7 @@ class MICoherence(dir: DirectoryRepresentation) extends CoherencePolicy(dir) {
|
|||||||
|
|
||||||
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
||||||
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
||||||
MuxBundle(meta, Array(
|
MuxCase(meta, Array(
|
||||||
incoming.is(releaseInvalidateData) -> popped,
|
incoming.is(releaseInvalidateData) -> popped,
|
||||||
incoming.is(releaseInvalidateAck) -> popped))
|
incoming.is(releaseInvalidateAck) -> popped))
|
||||||
}
|
}
|
||||||
@ -299,7 +299,7 @@ class MEICoherence(dir: DirectoryRepresentation) extends CoherencePolicy(dir) {
|
|||||||
|
|
||||||
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
||||||
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
||||||
MuxBundle(meta, Array(
|
MuxCase(meta, Array(
|
||||||
incoming.is(releaseInvalidateData) -> popped,
|
incoming.is(releaseInvalidateData) -> popped,
|
||||||
incoming.is(releaseInvalidateAck) -> popped))
|
incoming.is(releaseInvalidateAck) -> popped))
|
||||||
}
|
}
|
||||||
@ -417,7 +417,7 @@ class MSICoherence(dir: DirectoryRepresentation) extends CoherencePolicy(dir) {
|
|||||||
|
|
||||||
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
||||||
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
||||||
MuxBundle(meta, Array(
|
MuxCase(meta, Array(
|
||||||
incoming.is(releaseInvalidateData) -> popped,
|
incoming.is(releaseInvalidateData) -> popped,
|
||||||
incoming.is(releaseInvalidateAck) -> popped))
|
incoming.is(releaseInvalidateAck) -> popped))
|
||||||
}
|
}
|
||||||
@ -537,7 +537,7 @@ class MESICoherence(dir: DirectoryRepresentation) extends CoherencePolicy(dir) {
|
|||||||
|
|
||||||
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
||||||
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
||||||
MuxBundle(meta, Array(
|
MuxCase(meta, Array(
|
||||||
incoming.is(releaseInvalidateData) -> popped,
|
incoming.is(releaseInvalidateData) -> popped,
|
||||||
incoming.is(releaseInvalidateAck) -> popped))
|
incoming.is(releaseInvalidateAck) -> popped))
|
||||||
}
|
}
|
||||||
@ -680,7 +680,7 @@ class MigratoryCoherence(dir: DirectoryRepresentation) extends CoherencePolicy(d
|
|||||||
|
|
||||||
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
def managerMetadataOnRelease(incoming: HasReleaseType, src: UInt, meta: ManagerMetadata) = {
|
||||||
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
val popped = ManagerMetadata(sharers=dir.pop(meta.sharers, src))(meta.p)
|
||||||
MuxBundle(meta, Array(
|
MuxCase(meta, Array(
|
||||||
incoming.is(releaseInvalidateData) -> popped,
|
incoming.is(releaseInvalidateData) -> popped,
|
||||||
incoming.is(releaseInvalidateAck) -> popped,
|
incoming.is(releaseInvalidateAck) -> popped,
|
||||||
incoming.is(releaseInvalidateDataMigratory) -> popped,
|
incoming.is(releaseInvalidateDataMigratory) -> popped,
|
||||||
|
@ -887,7 +887,7 @@ class TileLinkIOWidener(innerTLId: String, outerTLId: String)
|
|||||||
wmask = put_wmask.toBits)
|
wmask = put_wmask.toBits)
|
||||||
|
|
||||||
io.out.acquire.valid := sending_put || (!shrink && io.in.acquire.valid)
|
io.out.acquire.valid := sending_put || (!shrink && io.in.acquire.valid)
|
||||||
io.out.acquire.bits := MuxBundle(get_block_acquire, Seq(
|
io.out.acquire.bits := MuxCase(get_block_acquire, Seq(
|
||||||
sending_put -> put_block_acquire,
|
sending_put -> put_block_acquire,
|
||||||
smallget -> get_acquire,
|
smallget -> get_acquire,
|
||||||
smallput -> put_acquire))
|
smallput -> put_acquire))
|
||||||
@ -961,7 +961,7 @@ class TileLinkIOWidener(innerTLId: String, outerTLId: String)
|
|||||||
data = ognt.data)
|
data = ognt.data)
|
||||||
|
|
||||||
io.in.grant.valid := returning_data || (!stretch && io.out.grant.valid)
|
io.in.grant.valid := returning_data || (!stretch && io.out.grant.valid)
|
||||||
io.in.grant.bits := MuxBundle(default_grant, Seq(
|
io.in.grant.bits := MuxCase(default_grant, Seq(
|
||||||
returning_data -> get_block_grant,
|
returning_data -> get_block_grant,
|
||||||
smallgnt -> get_grant))
|
smallgnt -> get_grant))
|
||||||
io.out.grant.ready := !returning_data && (stretch || io.in.grant.ready)
|
io.out.grant.ready := !returning_data && (stretch || io.in.grant.ready)
|
||||||
@ -1085,7 +1085,7 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String)
|
|||||||
|
|
||||||
val pass_valid = io.in.acquire.valid && !stretch
|
val pass_valid = io.in.acquire.valid && !stretch
|
||||||
|
|
||||||
io.out.acquire.bits := MuxBundle(Wire(io.out.acquire.bits, init=iacq), Seq(
|
io.out.acquire.bits := MuxCase(Wire(io.out.acquire.bits, init=iacq), Seq(
|
||||||
(sending_put, put_block_acquire),
|
(sending_put, put_block_acquire),
|
||||||
(shrink, get_block_acquire),
|
(shrink, get_block_acquire),
|
||||||
(smallput, put_acquire),
|
(smallput, put_acquire),
|
||||||
@ -1138,7 +1138,7 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String)
|
|||||||
io.in.grant.valid := sending_get || (io.out.grant.valid && !ognt_block)
|
io.in.grant.valid := sending_get || (io.out.grant.valid && !ognt_block)
|
||||||
io.out.grant.ready := !sending_get && (ognt_block || io.in.grant.ready)
|
io.out.grant.ready := !sending_get && (ognt_block || io.in.grant.ready)
|
||||||
|
|
||||||
io.in.grant.bits := MuxBundle(Wire(io.in.grant.bits, init=ognt), Seq(
|
io.in.grant.bits := MuxCase(Wire(io.in.grant.bits, init=ognt), Seq(
|
||||||
sending_get -> get_block_grant,
|
sending_get -> get_block_grant,
|
||||||
smallget_grant -> get_grant))
|
smallget_grant -> get_grant))
|
||||||
|
|
||||||
|
@ -369,7 +369,7 @@ class DmaTracker(implicit p: Parameters) extends DmaModule()(p)
|
|||||||
io.mem.acquire.valid := (state === s_get) ||
|
io.mem.acquire.valid := (state === s_get) ||
|
||||||
(state === s_put && get_done) ||
|
(state === s_put && get_done) ||
|
||||||
(state === s_prefetch && !prefetch_busy(prefetch_id))
|
(state === s_prefetch && !prefetch_busy(prefetch_id))
|
||||||
io.mem.acquire.bits := MuxBundle(
|
io.mem.acquire.bits := MuxLookup(
|
||||||
state, prefetch_acquire, Seq(
|
state, prefetch_acquire, Seq(
|
||||||
s_get -> get_acquire,
|
s_get -> get_acquire,
|
||||||
s_put -> put_acquire))
|
s_put -> put_acquire))
|
||||||
|
@ -4,16 +4,6 @@ package uncore
|
|||||||
|
|
||||||
import Chisel._
|
import Chisel._
|
||||||
|
|
||||||
object MuxBundle {
|
|
||||||
def apply[T <: Data] (default: T, mapping: Seq[(Bool, T)]): T = {
|
|
||||||
mapping.reverse.foldLeft(default)((b, a) => Mux(a._1, a._2, b))
|
|
||||||
}
|
|
||||||
|
|
||||||
def apply[T <: Data] (key: UInt, default: T, mapping: Seq[(UInt, T)]): T = {
|
|
||||||
apply(default, mapping.map{ case (a, b) => (a === key, b) })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Produces 0-width value when counting to 1
|
// Produces 0-width value when counting to 1
|
||||||
class ZCounter(val n: Int) {
|
class ZCounter(val n: Int) {
|
||||||
val value = Reg(init=UInt(0, log2Ceil(n)))
|
val value = Reg(init=UInt(0, log2Ceil(n)))
|
||||||
|
Loading…
Reference in New Issue
Block a user