From 4af6db34e865b44cc68ed114d35ca6016a37d265 Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Fri, 13 Sep 2019 12:19:12 -0700 Subject: Add requirements to Queue class (#1176) FIRRTL barfs on negative and zero-sized memories--- src/main/scala/chisel3/util/Decoupled.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/main') diff --git a/src/main/scala/chisel3/util/Decoupled.scala b/src/main/scala/chisel3/util/Decoupled.scala index 841f90e6..c20c1eb3 100644 --- a/src/main/scala/chisel3/util/Decoupled.scala +++ b/src/main/scala/chisel3/util/Decoupled.scala @@ -191,7 +191,8 @@ class Queue[T <: Data](gen: T, flow: Boolean = false) (implicit compileOptions: chisel3.CompileOptions) extends Module() { - + require(entries > -1, "Queue must have non-negative number of entries") + require(entries != 0, "Use companion object Queue.apply for zero entries") val genType = if (compileOptions.declaredTypeMustBeUnbound) { requireIsChiselType(gen) gen @@ -283,7 +284,6 @@ object Queue enq.ready := deq.ready deq } else { - require(entries > 0) val q = Module(new Queue(chiselTypeOf(enq.bits), entries, pipe, flow)) q.io.enq.valid := enq.valid // not using <> so that override is allowed q.io.enq.bits := enq.bits @@ -302,9 +302,9 @@ object Queue enq: ReadyValidIO[T], entries: Int = 2, pipe: Boolean = false, - flow: Boolean = false): IrrevocableIO[T] = { - require(entries > 0) // Zero-entry queues don't guarantee Irrevocability + flow: Boolean = false): IrrevocableIO[T] = { val deq = apply(enq, entries, pipe, flow) + require(entries > 0, "Zero-entry queues don't guarantee Irrevocability") val irr = Wire(new IrrevocableIO(deq.bits)) irr.bits := deq.bits irr.valid := deq.valid -- cgit v1.2.3