1
0

diplomacy: optimize IdRange overlap detection

This commit is contained in:
Wesley W. Terpstra
2017-04-26 20:49:18 -07:00
parent 30f1f1e7c7
commit 40f18e6e43
3 changed files with 20 additions and 8 deletions

View File

@ -79,7 +79,9 @@ case class AXI4MasterPortParameters(
require (userBits >= 0)
// Require disjoint ranges for ids
masters.combinations(2).foreach { case Seq(x,y) => require (!x.id.overlaps(y.id), s"$x and $y overlap") }
IdRange.overlaps(masters.map(_.id)).foreach { case (x, y) =>
require (!x.overlaps(y), s"AXI4MasterParameters.id $x and $y overlap")
}
}
case class AXI4BundleParameters(

View File

@ -199,9 +199,9 @@ case class TLClientPortParameters(
require (minLatency >= 0)
// Require disjoint ranges for Ids
clients.combinations(2).foreach({ case Seq(x,y) =>
require (!x.sourceId.overlaps(y.sourceId))
})
IdRange.overlaps(clients.map(_.sourceId)).foreach { case (x, y) =>
require (!x.overlaps(y), s"TLClientParameters.sourceId ${x} overlaps ${y}")
}
// Bounds on required sizes
def endSourceId = clients.map(_.sourceId.end).max