diplomacy: support zero-port Nodes
This commit is contained in:
@ -11,14 +11,9 @@ object AXI4Imp extends NodeImp[AXI4MasterPortParameters, AXI4SlavePortParameters
|
||||
{
|
||||
def edgeO(pd: AXI4MasterPortParameters, pu: AXI4SlavePortParameters): AXI4EdgeParameters = AXI4EdgeParameters(pd, pu)
|
||||
def edgeI(pd: AXI4MasterPortParameters, pu: AXI4SlavePortParameters): AXI4EdgeParameters = AXI4EdgeParameters(pd, pu)
|
||||
def bundleO(eo: Seq[AXI4EdgeParameters]): Vec[AXI4Bundle] = {
|
||||
require (!eo.isEmpty)
|
||||
Vec(eo.size, AXI4Bundle(eo.map(_.bundle).reduce(_.union(_))))
|
||||
}
|
||||
def bundleI(ei: Seq[AXI4EdgeParameters]): Vec[AXI4Bundle] = {
|
||||
require (!ei.isEmpty)
|
||||
Vec(ei.size, AXI4Bundle(ei.map(_.bundle).reduce(_.union(_))))
|
||||
}
|
||||
|
||||
def bundleO(eo: Seq[AXI4EdgeParameters]): Vec[AXI4Bundle] = Vec(eo.size, AXI4Bundle(AXI4BundleParameters.union(eo.map(_.bundle))))
|
||||
def bundleI(ei: Seq[AXI4EdgeParameters]): Vec[AXI4Bundle] = Vec(ei.size, AXI4Bundle(AXI4BundleParameters.union(ei.map(_.bundle))))
|
||||
|
||||
def colour = "#00ccff" // bluish
|
||||
override def labelI(ei: AXI4EdgeParameters) = (ei.slave.beatBytes * 8).toString
|
||||
|
@ -101,6 +101,9 @@ case class AXI4BundleParameters(
|
||||
|
||||
object AXI4BundleParameters
|
||||
{
|
||||
val emptyBundleParams = AXI4BundleParameters(addrBits=1, dataBits=8, idBits=1)
|
||||
def union(x: Seq[AXI4BundleParameters]) = x.foldLeft(emptyBundleParams)((x,y) => x.union(y))
|
||||
|
||||
def apply(master: AXI4MasterPortParameters, slave: AXI4SlavePortParameters) =
|
||||
new AXI4BundleParameters(
|
||||
addrBits = log2Up(slave.maxAddress+1),
|
||||
|
Reference in New Issue
Block a user