24 lines
754 B
Scala
24 lines
754 B
Scala
// See LICENSE.SiFive for license details.
|
|
|
|
package freechips.rocketchip.interrupts
|
|
|
|
import Chisel._
|
|
import freechips.rocketchip.config.Parameters
|
|
import freechips.rocketchip.diplomacy._
|
|
|
|
class IntXbar()(implicit p: Parameters) extends LazyModule
|
|
{
|
|
val intnode = IntNexusNode(
|
|
sinkFn = { _ => IntSinkPortParameters(Seq(IntSinkParameters())) },
|
|
sourceFn = { seq =>
|
|
IntSourcePortParameters((seq zip seq.map(_.num).scanLeft(0)(_+_).init).map {
|
|
case (s, o) => s.sources.map(z => z.copy(range = z.range.offset(o)))
|
|
}.flatten)
|
|
})
|
|
|
|
lazy val module = new LazyModuleImp(this) {
|
|
val cat = intnode.in.map { case (i, e) => i.take(e.source.num) }.flatten
|
|
intnode.out.foreach { case (o, _) => o := cat }
|
|
}
|
|
}
|