Hi,
I’m trying to understand the underlying behavior of various connectors available in Diplomacy. I’m currently trying to modify the TLArbiter object in TileLink, and I want to add a static delay between the source and sink, and trying the following code snippet:
def applyCancel[T <: Data](policy: Policy)(sink: ReadyValidCancel[T], sources: (UInt, ReadyValidCancel[T])*): Unit = {
if (sources.isEmpty) {
// boilerplate code
} else if (sources.size == 1) {
sink :<> sources.head._2
} else {
// multi-source arbitration
When I modify the above line (in bold) to add static delay using ShiftRegister: sink :<> ShiftRegister(sources.head._2, 1)
I get several errors of the following type: Register r_1 cannot be a bundle type with flips.
What could be a potential way to add a static delay between a source and a sink node?
Thanks,
Varun