tilelink2: maxLgSize should be accurate (#332)
This commit is contained in:
parent
7ee79efc15
commit
47843d8ec1
@ -216,12 +216,16 @@ class TLEdge(
|
|||||||
x match {
|
x match {
|
||||||
case _: TLBundleE => UInt(0)
|
case _: TLBundleE => UInt(0)
|
||||||
case bundle: TLDataChannel => {
|
case bundle: TLDataChannel => {
|
||||||
|
if (maxLgSize == 0) {
|
||||||
|
UInt(0)
|
||||||
|
} else {
|
||||||
val decode = UIntToOH1(size(bundle), maxLgSize) >> log2Ceil(manager.beatBytes)
|
val decode = UIntToOH1(size(bundle), maxLgSize) >> log2Ceil(manager.beatBytes)
|
||||||
Mux(hasData(bundle), decode, UInt(0))
|
Mux(hasData(bundle), decode, UInt(0))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class TLEdgeOut(
|
class TLEdgeOut(
|
||||||
client: TLClientPortParameters,
|
client: TLClientPortParameters,
|
||||||
|
@ -383,7 +383,7 @@ case class TLEdgeParameters(
|
|||||||
manager: TLManagerPortParameters)
|
manager: TLManagerPortParameters)
|
||||||
{
|
{
|
||||||
val maxTransfer = max(client.maxTransfer, manager.maxTransfer)
|
val maxTransfer = max(client.maxTransfer, manager.maxTransfer)
|
||||||
val maxLgSize = log2Up(maxTransfer)
|
val maxLgSize = log2Ceil(maxTransfer)
|
||||||
|
|
||||||
// Sanity check the link...
|
// Sanity check the link...
|
||||||
require (maxTransfer >= manager.beatBytes)
|
require (maxTransfer >= manager.beatBytes)
|
||||||
|
Loading…
Reference in New Issue
Block a user