Improve IOBinders implementation | add debug prints
This commit is contained in:
@@ -67,10 +67,29 @@ abstract trait HasIOBinders { this: LazyModule =>
|
|||||||
})
|
})
|
||||||
|
|
||||||
// A publicly accessible list of IO cells (useful for a floorplanning tool, for example)
|
// A publicly accessible list of IO cells (useful for a floorplanning tool, for example)
|
||||||
lazy val iocells = (lzyFlattened.values ++ impFlattened.values).unzip._2.flatten.toBuffer
|
val iocells = InModuleBody { (lzyFlattened.values ++ impFlattened.values).unzip._2.flatten.toBuffer }
|
||||||
|
|
||||||
// A mapping between stringified DigitalSystem traits and their corresponding ChipTop ports
|
// A mapping between stringified DigitalSystem traits and their corresponding ChipTop ports
|
||||||
lazy val portMap = iobinders.keys.map(k => k -> (lzyFlattened(k)._1 ++ impFlattened(k)._1)).toMap
|
val portMap = InModuleBody { iobinders.keys.map(k => k -> (lzyFlattened(k)._1 ++ impFlattened(k)._1)).toMap }
|
||||||
|
|
||||||
|
// A mapping between stringified DigitalSystem traits and their corresponding ChipTop iocells
|
||||||
|
val iocellMap = InModuleBody { iobinders.keys.map(k => k -> (lzyFlattened(k)._2 ++ impFlattened(k)._2)).toMap }
|
||||||
|
|
||||||
|
InModuleBody {
|
||||||
|
println("IOCells generated by IOBinders:")
|
||||||
|
for ((k, v) <- iocellMap) {
|
||||||
|
if (!v.isEmpty) {
|
||||||
|
val cells = v.map(_.getClass.getSimpleName).groupBy(identity).mapValues(_.size)
|
||||||
|
|
||||||
|
println(s" IOBinder for $k generated:")
|
||||||
|
for ((t, c) <- cells) { println(s" $c X $t") }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println()
|
||||||
|
val totals = iocells.map(_.getClass.getSimpleName).groupBy(identity).mapValues(_.size)
|
||||||
|
println(s" Total generated ${iocells.size} IOCells:")
|
||||||
|
for ((t, c) <- totals) { println(s" $c X $t") }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: The parameters instance is accessible only through LazyModule
|
// Note: The parameters instance is accessible only through LazyModule
|
||||||
|
|||||||
Reference in New Issue
Block a user