summaryrefslogtreecommitdiff
path: root/src/main/scala/Chisel/util/Valid.scala
diff options
context:
space:
mode:
authorJim Lawson2016-07-19 13:43:48 -0700
committerJim Lawson2016-07-19 13:43:48 -0700
commitb27f29902d9f1d886e8edf1fc5e960cf9a634184 (patch)
treec6f3e27e46e5ed9c3cc62f2c368c766cdded74c6 /src/main/scala/Chisel/util/Valid.scala
parent083610b2faa456dfccc4365dd115565d36e522fa (diff)
parent12810b5efe6a8f872fbc1c63cdfb835ca354624f (diff)
Merge branch 'sdtwigg_rebase_renamechisel3' into sdtwigg_wrap_renamechisel3
Diffstat (limited to 'src/main/scala/Chisel/util/Valid.scala')
-rw-r--r--src/main/scala/Chisel/util/Valid.scala57
1 files changed, 0 insertions, 57 deletions
diff --git a/src/main/scala/Chisel/util/Valid.scala b/src/main/scala/Chisel/util/Valid.scala
deleted file mode 100644
index 38997cab..00000000
--- a/src/main/scala/Chisel/util/Valid.scala
+++ /dev/null
@@ -1,57 +0,0 @@
-// See LICENSE for license details.
-
-/** Wrappers for valid interfaces and associated circuit generators using them.
- */
-
-package Chisel
-
-/** An Bundle containing data and a signal determining if it is valid */
-class Valid[+T <: Data](gen: T) extends Bundle
-{
- val valid = Output(Bool())
- val bits = Output(gen.cloneType)
- def fire(dummy: Int = 0): Bool = valid
- override def cloneType: this.type = Valid(gen).asInstanceOf[this.type]
-}
-
-/** Adds a valid protocol to any interface */
-object Valid {
- def apply[T <: Data](gen: T): Valid[T] = new Valid(gen)
-}
-
-/** A hardware module that delays data coming down the pipeline
- by the number of cycles set by the latency parameter. Functionality
- is similar to ShiftRegister but this exposes a Pipe interface.
-
- Example usage:
- val pipe = new Pipe(UInt())
- pipe.io.enq <> produce.io.out
- consumer.io.in <> pipe.io.deq
- */
-object Pipe
-{
- def apply[T <: Data](enqValid: Bool, enqBits: T, latency: Int): Valid[T] = {
- if (latency == 0) {
- val out = Wire(Valid(enqBits))
- out.valid <> enqValid
- out.bits <> enqBits
- out
- } else {
- val v = Reg(Bool(), next=enqValid, init=Bool(false))
- val b = RegEnable(enqBits, enqValid)
- apply(v, b, latency-1)
- }
- }
- def apply[T <: Data](enqValid: Bool, enqBits: T): Valid[T] = apply(enqValid, enqBits, 1)
- def apply[T <: Data](enq: Valid[T], latency: Int = 1): Valid[T] = apply(enq.valid, enq.bits, latency)
-}
-
-class Pipe[T <: Data](gen: T, latency: Int = 1) extends Module
-{
- val io = IO(new Bundle {
- val enq = Input(Valid(gen))
- val deq = Output(Valid(gen))
- })
-
- io.deq <> Pipe(io.enq, latency)
-}