diff options
Diffstat (limited to 'src/main/scala/utils.scala')
| -rw-r--r-- | src/main/scala/utils.scala | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/main/scala/utils.scala b/src/main/scala/utils.scala index 8e6ce571..4135d92b 100644 --- a/src/main/scala/utils.scala +++ b/src/main/scala/utils.scala @@ -275,12 +275,12 @@ object Counter } } -class ValidIO[+T <: Data](gen: T) extends Bundle +class ValidIO[+T <: Data](gen2: T) extends Bundle { val valid = Bool(OUTPUT) - val bits = gen.cloneType.asOutput + val bits = gen2.cloneType.asOutput def fire(dummy: Int = 0): Bool = valid - override def cloneType: this.type = new ValidIO(gen).asInstanceOf[this.type] + override def cloneType: this.type = new ValidIO(gen2).asInstanceOf[this.type] } /** Adds a valid protocol to any interface. The standard used is @@ -310,16 +310,20 @@ object Decoupled { class EnqIO[T <: Data](gen: T) extends DecoupledIO(gen) { def enq(dat: T): T = { valid := Bool(true); bits := dat; dat } - valid := Bool(false); - for (io <- bits.flatten) - io := UInt(0) + override def init(dummy: Int = 0) = { + valid := Bool(false); + for (io <- bits.flatten) + io := UInt(0) + } override def cloneType: this.type = { new EnqIO(gen).asInstanceOf[this.type]; } } class DeqIO[T <: Data](gen: T) extends DecoupledIO(gen) { flip() - ready := Bool(false); + override def init(dummy: Int = 0) = { + ready := Bool(false) + } def deq(b: Boolean = false): T = { ready := Bool(true); bits } override def cloneType: this.type = { new DeqIO(gen).asInstanceOf[this.type]; } } |
