2023-11-01 14:48:03 +08:00
|
|
|
package Switch
|
|
|
|
|
|
|
|
|
|
import chisel3._
|
|
|
|
|
import chisel3.util._
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.chipsalliance.cde.config._
|
|
|
|
|
import freechips.rocketchip.diplomacy._
|
|
|
|
|
import freechips.rocketchip.tilelink._
|
|
|
|
|
|
|
|
|
|
import MAC._
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SwitchNodeIO extends Bundle{
|
|
|
|
|
val rx = Decoupled(new Mac_Stream_Bundle)
|
2023-11-06 18:56:02 +08:00
|
|
|
val mInfo = new Rx_MuxInfo_Bundle
|
2023-11-01 14:48:03 +08:00
|
|
|
|
|
|
|
|
val tx = Flipped(Decoupled(new Mac_Stream_Bundle))
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
abstract class SwitchNode(implicit p: Parameters) extends SwitchModule{
|
|
|
|
|
val ex: SwitchNodeIO = IO(new SwitchNodeIO)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MacNode(implicit p: Parameters) extends Mac{
|
|
|
|
|
val rxBuff = Module(new RxBuff)
|
|
|
|
|
val txBuff = Module(new TxBuff)
|
|
|
|
|
|
2023-11-06 18:56:02 +08:00
|
|
|
|
2023-11-01 14:48:03 +08:00
|
|
|
|
|
|
|
|
macTileLinkRx.io.rxEnq <> rxBuff.io.enq
|
|
|
|
|
txBuff.io.deq <> macTileLinkTx.io.txDeq
|
|
|
|
|
|
|
|
|
|
rxBuff.io.deq <> ex.rx
|
|
|
|
|
ex.tx <> txBuff.io.enq
|
|
|
|
|
|
2023-11-06 18:56:02 +08:00
|
|
|
|
|
|
|
|
ex.mInfo <> rxBuff.mInfo
|
2023-11-01 14:48:03 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DmaNode(edgeOut: TLEdgeOut)(implicit p: Parameters) extends DMAMst(edgeOut){
|
2023-11-06 18:56:02 +08:00
|
|
|
def DmaMac = "habcdef".U(48.W)
|
|
|
|
|
|
2023-11-01 14:48:03 +08:00
|
|
|
ex.tx <> rxBuff.io.enq
|
|
|
|
|
txBuff.io.deq <> ex.rx
|
2023-11-06 18:56:02 +08:00
|
|
|
|
|
|
|
|
ex.mInfo.dest.valid := mInfoValid
|
|
|
|
|
ex.mInfo.dest.bits := Cat( 1.U, trigTxNum )
|
|
|
|
|
ex.mInfo.source.valid := mInfoValid
|
|
|
|
|
ex.mInfo.source.bits := DmaMac
|
|
|
|
|
|
2023-11-01 14:48:03 +08:00
|
|
|
}
|
|
|
|
|
|