Как очистить очередь ChiselUtil?

В классе ChiselUtil есть очередь, которая описана в руководстве как:

// Generic hardware queue. Required
// parameter entries controls the
// depth of the queues. The width of
// the queue is determined from the
// inputs.
// Example usage:
//    val q = new Queue(UInt(), 16)
//    q.io.enq <> producer.io.out
//    consumer.io.in <> q.io.deq
class Queue[T <: Data]
    (type: T, entries: Int,
     pipe: Boolean = false,
     flow: Boolean = false
     flushable: Boolean = false)
    extends Module  

Но в коде scala параметры интерфейса другие: https://github.com/ucb-bar/chisel/blob/master/src/main/scala/ChiselUtil.scala#L426

В коде нет «промываемого» логического ввода. Не могу найти значения параметров "труба" и "поток".

Кто-нибудь знает, как использовать очередь, чтобы ее очистить?


person FabienM    schedule 18.09.2015    source источник


Ответы (1)


Параметр flushable не существует. Не уверен, что они имели в виду. Однако есть способ очистить очередь, нажав параметр _reset, как показано ниже:

val my_queue = Module(new Queue(gen = new MyBundle,
                            entries = queue_sz,
                               pipe = false,
                               flow = true,
                             _reset = (kill_queue || reset.toBool)))

Параметр flow указывает, могут ли входы использоваться в одном цикле (входы «проходят» через очередь немедленно). «Действительные» сигналы объединяются.

Параметр pipe указывает, связаны ли "готовые" сигналы комбинационно. Это позволяет очереди с одной записью работать с полной пропускной способностью (как конвейер).

person Chris    schedule 21.09.2015
comment
Спасибо @Chris. Вы думаете, что это хороший способ использовать сигнал _reset для промывки? - person FabienM; 22.09.2015