diff --git a/macros/src/main/scala/barstools/macros/CostMetric.scala b/macros/src/main/scala/barstools/macros/CostMetric.scala index 3b9de124..a6111d2e 100644 --- a/macros/src/main/scala/barstools/macros/CostMetric.scala +++ b/macros/src/main/scala/barstools/macros/CostMetric.scala @@ -126,6 +126,10 @@ object DefaultMetric extends CostMetric with CostMetricCompanion { else (mem.src.width / p) * m //Waste the extra maskbits } } + val maskPenalty = (memMask, libMask) match { + case (None, Some(m)) => 0.001 + case (_, _) => 0 + } val depthCost = math.ceil(mem.src.depth.toDouble / lib.src.depth.toDouble) val widthCost = math.ceil(memWidth.toDouble / lib.src.width.toDouble) val bitsCost = (lib.src.depth * lib.src.width).toDouble @@ -134,7 +138,7 @@ object DefaultMetric extends CostMetric with CostMetricCompanion { val bitsWasted = depthCost * widthCost * bitsCost - requestedBits val wastedConst = 0.05 // 0 means waste as few bits with no regard for instance count val costPerInst = wastedConst * depthCost * widthCost - Some(1.0 * bitsWasted / requestedBits + costPerInst) + Some(1.0 * bitsWasted / requestedBits + costPerInst + maskPenalty) } override def commandLineParams = Map()