diff options
| author | chick | 2020-08-14 19:47:53 -0700 |
|---|---|---|
| committer | Jack Koenig | 2020-08-14 19:47:53 -0700 |
| commit | 6fc742bfaf5ee508a34189400a1a7dbffe3f1cac (patch) | |
| tree | 2ed103ee80b0fba613c88a66af854ae9952610ce /src/main/scala/firrtl/constraint/IsMax.scala | |
| parent | b516293f703c4de86397862fee1897aded2ae140 (diff) | |
All of src/ formatted with scalafmt
Diffstat (limited to 'src/main/scala/firrtl/constraint/IsMax.scala')
| -rw-r--r-- | src/main/scala/firrtl/constraint/IsMax.scala | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/src/main/scala/firrtl/constraint/IsMax.scala b/src/main/scala/firrtl/constraint/IsMax.scala index 3f24b7c0..0ba20c08 100644 --- a/src/main/scala/firrtl/constraint/IsMax.scala +++ b/src/main/scala/firrtl/constraint/IsMax.scala @@ -4,7 +4,7 @@ package firrtl.constraint object IsMax { def apply(left: Constraint, right: Constraint): Constraint = (left, right) match { - case (l: IsKnown, r: IsKnown) => l max r + case (l: IsKnown, r: IsKnown) => l.max(r) case _ => apply(Seq(left, right)) } def apply(children: Seq[Constraint]): Constraint = { @@ -15,33 +15,32 @@ object IsMax { } } -case class IsMax private[constraint](known: Option[IsKnown], - mins: Vector[IsMin], - others: Vector[Constraint] - ) extends MultiAry { +case class IsMax private[constraint] (known: Option[IsKnown], mins: Vector[IsMin], others: Vector[Constraint]) + extends MultiAry { - def op(b1: IsKnown, b2: IsKnown): IsKnown = b1 max b2 + def op(b1: IsKnown, b2: IsKnown): IsKnown = b1.max(b2) override def serialize: String = "max(" + children.map(_.serialize).mkString(", ") + ")" - override def map(f: Constraint=>Constraint): Constraint = IsMax(children.map(f)) + override def map(f: Constraint => Constraint): Constraint = IsMax(children.map(f)) lazy val children: Vector[Constraint] = { - if(known.nonEmpty) known.get +: (mins ++ others) else mins ++ others + if (known.nonEmpty) known.get +: (mins ++ others) else mins ++ others } def reduce(): Constraint = { - if(children.size == 1) children.head else { + if (children.size == 1) children.head + else { (known, mins, others) match { case (Some(IsKnown(a)), _, _) => // Eliminate minimums who have a known minimum value which is smaller than known maximum value val filteredMins = mins.filter { case IsMin(Some(IsKnown(i)), _, _) if i <= a => false - case other => true + case other => true } // If a successful filter, rerun reduce val newMax = new IsMax(known, filteredMins, others) - if(filteredMins.size != mins.size) { + if (filteredMins.size != mins.size) { newMax.reduce() } else newMax case _ => this @@ -50,10 +49,9 @@ case class IsMax private[constraint](known: Option[IsKnown], } def addChild(x: Constraint): IsMax = x match { - case k: IsKnown => new IsMax(known = merge(Some(k), known), mins, others) - case max: IsMax => new IsMax(known = merge(known, max.known), max.mins ++ mins, others ++ max.others) - case min: IsMin => new IsMax(known, mins :+ min, others) - case other => new IsMax(known, mins, others :+ other) + case k: IsKnown => new IsMax(known = merge(Some(k), known), mins, others) + case max: IsMax => new IsMax(known = merge(known, max.known), max.mins ++ mins, others ++ max.others) + case min: IsMin => new IsMax(known, mins :+ min, others) + case other => new IsMax(known, mins, others :+ other) } } - |
