tilelink2 Broadcast: only support caching readable devices
This commit is contained in:
parent
d03046d11c
commit
14800f8fb4
@ -26,14 +26,14 @@ class TLBroadcast(lineBytes: Int, numTrackers: Int = 4) extends LazyModule
|
|||||||
require (m.regionType != RegionType.TRACKED)
|
require (m.regionType != RegionType.TRACKED)
|
||||||
require (!m.supportsAcquire)
|
require (!m.supportsAcquire)
|
||||||
// We only manage addresses which are uncached
|
// We only manage addresses which are uncached
|
||||||
if (m.regionType == RegionType.UNCACHED) {
|
if (m.regionType == RegionType.UNCACHED && m.supportsGet) {
|
||||||
// The device had better support line transfers
|
// The device had better support line transfers
|
||||||
require (!m.supportsPutFull || m.supportsPutFull .contains(lineBytes))
|
val lowerBound = max(m.supportsPutFull.min, m.supportsGet.min)
|
||||||
require (!m.supportsPutPartial || m.supportsPutPartial.contains(lineBytes))
|
require (!m.supportsPutFull || m.supportsPutFull.contains(lineBytes))
|
||||||
require (!m.supportsGet || m.supportsGet .contains(lineBytes))
|
require (!m.supportsGet || m.supportsGet .contains(lineBytes))
|
||||||
m.copy(
|
m.copy(
|
||||||
regionType = RegionType.TRACKED,
|
regionType = RegionType.TRACKED,
|
||||||
supportsAcquire = TransferSizes(1, lineBytes),
|
supportsAcquire = TransferSizes(lowerBound, lineBytes),
|
||||||
// truncate supported accesses to lineBytes (we only ever probe for one line)
|
// truncate supported accesses to lineBytes (we only ever probe for one line)
|
||||||
supportsPutFull = TransferSizes(m.supportsPutFull .min, min(m.supportsPutFull .max, lineBytes)),
|
supportsPutFull = TransferSizes(m.supportsPutFull .min, min(m.supportsPutFull .max, lineBytes)),
|
||||||
supportsPutPartial = TransferSizes(m.supportsPutPartial.min, min(m.supportsPutPartial.max, lineBytes)),
|
supportsPutPartial = TransferSizes(m.supportsPutPartial.min, min(m.supportsPutPartial.max, lineBytes)),
|
||||||
|
Loading…
Reference in New Issue
Block a user