diff options
Diffstat (limited to 'src/main/scala')
| -rw-r--r-- | src/main/scala/firrtl/passes/memlib/MemConf.scala | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/MemConf.scala b/src/main/scala/firrtl/passes/memlib/MemConf.scala index 637b57e0..8063c627 100644 --- a/src/main/scala/firrtl/passes/memlib/MemConf.scala +++ b/src/main/scala/firrtl/passes/memlib/MemConf.scala @@ -13,7 +13,21 @@ case object MaskedReadWritePort extends MemPort("mrw") object MemPort { - val all = Set(ReadPort, WritePort, MaskedWritePort, ReadWritePort, MaskedReadWritePort) + // This is the order that ports will render in MemConf.portsStr + val ordered: Seq[MemPort] = Seq( + MaskedReadWritePort, + MaskedWritePort, + ReadWritePort, + WritePort, + ReadPort + ) + + val all: Set[MemPort] = ordered.toSet + // uses orderedPorts when sorting MemPorts + implicit def ordering: Ordering[MemPort] = { + val orderedPorts = ordered.zipWithIndex.toMap + Ordering.by(e => orderedPorts(e)) + } def apply(s: String): Option[MemPort] = MemPort.all.find(_.name == s) @@ -38,7 +52,8 @@ case class MemConf( ports: Map[MemPort, Int], maskGranularity: Option[Int]) { - private def portsStr = ports.map { case (port, num) => Seq.fill(num)(port.name).mkString(",") }.mkString(",") + private def portsStr = + ports.toSeq.sortBy(_._1).map { case (port, num) => Seq.fill(num)(port.name).mkString(",") }.mkString(",") private def maskGranStr = maskGranularity.map((p) => s"mask_gran $p").getOrElse("") // Assert that all of the entries in the port map are greater than zero to make it easier to compare two of these case classes |
