FILO

FILOs (first-in, last-out) are on-chip scratchpads with additional control logic for address-less enqueue/dequeue operations. FILOs acts as a Stack, reversing the order of elements it receives. A FILO’s pop operation always returns the most recently pushed element.


Static methods

object FILO
def apply[T:Type:Bits](size: Index): FILO[T]
Creates a FILO with given depth.

Depth must be a statically determinable signed integer.

Infix methods

class FILO[T]
def par(p: Index): FILO[T] = { val x = FILO(s); x.p
Annotates that addresses in this FIFO can be read in parallel by factor p.

Used when creating references to sparse regions of DRAM.
def empty(): Bit
Returns true when this FILO contains no elements, false otherwise.
def full(): Bit
Returns true when this FILO cannot fit any more elements, false otherwise.
def almostEmpty(): Bit
Returns true when this FILO contains exactly one element, false otherwise.
def almostFull(): Bit
Returns true when this FILO can fit exactly one more element, false otherwise.
def numel(): Index
Returns the number of elements currently in this FILO.
def push(data: T): Unit
Creates a push (write) port to this FILO of data.
def push(data: T, en: Bit): Unit
Creates a conditional push (write) port to this FILO of data enabled by en.
def pop(): T
Creates a pop (destructive read) port to this FILO.
def pop(en: Bit): T
Creates a conditional pop (destructive read) port to this FILO enabled by en.
def peek(): T
Creates a non-destructive read port to this FILO.
def load(dram: DRAMDenseTile1[T]): Unit
Creates a dense, burst load from the specified region of DRAM to this on-chip memory.
def gather(dram: DRAMSparseTile[T]): Unit
Creates a sparse load from the specified sparse region of DRAM to this on-chip memory.