diff --git a/src/main/scala/rocketchip/TestHarness.scala b/src/main/scala/rocketchip/TestHarness.scala index 7b7dd239..33a26444 100644 --- a/src/main/scala/rocketchip/TestHarness.scala +++ b/src/main/scala/rocketchip/TestHarness.scala @@ -5,6 +5,7 @@ package rocketchip import Chisel._ import cde.{Parameters, Field} import rocket.Util._ +import util.LatencyPipe import junctions._ import junctions.NastiConstants._ @@ -175,23 +176,3 @@ class JTAGVPI(implicit val p: Parameters) extends BlackBox { tbsuccess := Bool(false) } } - -class LatencyPipe[T <: Data](typ: T, latency: Int) extends Module { - val io = new Bundle { - val in = Decoupled(typ).flip - val out = Decoupled(typ) - } - - def doN[T](n: Int, func: T => T, in: T): T = - (0 until n).foldLeft(in)((last, _) => func(last)) - - io.out <> doN(latency, (last: DecoupledIO[T]) => Queue(last, 1, pipe=true), io.in) -} - -object LatencyPipe { - def apply[T <: Data](in: DecoupledIO[T], latency: Int): DecoupledIO[T] = { - val pipe = Module(new LatencyPipe(in.bits, latency)) - pipe.io.in <> in - pipe.io.out - } -} diff --git a/src/main/scala/util/LatencyPipe.scala b/src/main/scala/util/LatencyPipe.scala new file mode 100644 index 00000000..b629bef8 --- /dev/null +++ b/src/main/scala/util/LatencyPipe.scala @@ -0,0 +1,25 @@ +// See LICENSE for license details. + +package util + +import Chisel._ + +class LatencyPipe[T <: Data](typ: T, latency: Int) extends Module { + val io = new Bundle { + val in = Decoupled(typ).flip + val out = Decoupled(typ) + } + + def doN[T](n: Int, func: T => T, in: T): T = + (0 until n).foldLeft(in)((last, _) => func(last)) + + io.out <> doN(latency, (last: DecoupledIO[T]) => Queue(last, 1, pipe=true), io.in) +} + +object LatencyPipe { + def apply[T <: Data](in: DecoupledIO[T], latency: Int): DecoupledIO[T] = { + val pipe = Module(new LatencyPipe(in.bits, latency)) + pipe.io.in <> in + pipe.io.out + } +}