Fix some more issues with narrower
This commit is contained in:
parent
812c5bcc55
commit
baa2544651
@ -1547,8 +1547,11 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String)
|
|||||||
val outerDataBeats = outerParams.dataBeats
|
val outerDataBeats = outerParams.dataBeats
|
||||||
val outerDataBits = outerParams.dataBitsPerBeat
|
val outerDataBits = outerParams.dataBitsPerBeat
|
||||||
val outerWriteMaskBits = outerParams.writeMaskBits
|
val outerWriteMaskBits = outerParams.writeMaskBits
|
||||||
val outerBlockOffset = log2Up(outerDataBits / 8)
|
|
||||||
val outerByteAddrBits = log2Up(outerWriteMaskBits)
|
val outerByteAddrBits = log2Up(outerWriteMaskBits)
|
||||||
|
val outerBeatAddrBits = log2Up(outerDataBeats)
|
||||||
|
val outerBlockOffset = outerBeatAddrBits + outerByteAddrBits
|
||||||
|
val outerMaxClients = outerParams.maxClientsPerPort
|
||||||
|
val outerIdBits = log2Up(outerParams.maxClientXacts * outerMaxClients)
|
||||||
|
|
||||||
require(outerDataBeats >= innerDataBeats)
|
require(outerDataBeats >= innerDataBeats)
|
||||||
require(outerDataBeats % innerDataBeats == 0)
|
require(outerDataBeats % innerDataBeats == 0)
|
||||||
@ -1600,6 +1603,7 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String)
|
|||||||
|
|
||||||
val smallput_data = Mux1H(beat_sel, data_chunks)
|
val smallput_data = Mux1H(beat_sel, data_chunks)
|
||||||
val smallput_wmask = Mux1H(beat_sel, mask_chunks)
|
val smallput_wmask = Mux1H(beat_sel, mask_chunks)
|
||||||
|
val smallput_beat = Cat(iacq.addr_beat, PriorityEncoder(beat_sel))
|
||||||
|
|
||||||
assert(!io.in.acquire.valid || !smallput || PopCount(beat_sel) <= UInt(1),
|
assert(!io.in.acquire.valid || !smallput || PopCount(beat_sel) <= UInt(1),
|
||||||
"Can't perform Put wider than outer width")
|
"Can't perform Put wider than outer width")
|
||||||
@ -1644,7 +1648,7 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String)
|
|||||||
val put_acquire = Put(
|
val put_acquire = Put(
|
||||||
client_xact_id = iacq.client_xact_id,
|
client_xact_id = iacq.client_xact_id,
|
||||||
addr_block = iacq.addr_block,
|
addr_block = iacq.addr_block,
|
||||||
addr_beat = outer_beat_addr,
|
addr_beat = smallput_beat,
|
||||||
data = smallput_data,
|
data = smallput_data,
|
||||||
wmask = Some(smallput_wmask))(outerConfig)
|
wmask = Some(smallput_wmask))(outerConfig)
|
||||||
|
|
||||||
@ -1654,7 +1658,7 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String)
|
|||||||
val smallget_valid = smallget && io.in.acquire.valid
|
val smallget_valid = smallget && io.in.acquire.valid
|
||||||
|
|
||||||
val smallget_roq = Module(new ReorderQueue(
|
val smallget_roq = Module(new ReorderQueue(
|
||||||
readshift, tlClientXactIdBits, tlMaxClientsPerPort))
|
readshift, outerIdBits, outerMaxClients))
|
||||||
|
|
||||||
val smallget_helper = DecoupledHelper(
|
val smallget_helper = DecoupledHelper(
|
||||||
smallget_valid,
|
smallget_valid,
|
||||||
|
Loading…
Reference in New Issue
Block a user