hwpe_stream_fifo
The hwpe_stream_fifo module implements a hardware FIFO queue for
HWPE-Stream streams, used to withstand data scarcity (valid`=0) or
backpressure (`ready`=0), decoupling two architectural domains.
This FIFO is single-clock and therefore cannot be used to cross two
distinct clock domains.
The FIFO will lower its `ready signal on the input stream push_i
interface when it is completely full, and will lower its valid
signal on the output stream pop_o interface when it is completely
empty.
The regular FIFO does not allow for transactions to fall through the FIFO
queue if there are no stalls, therefore any transaction always
"pays" at least 1 cycle latency through the FIFO.
The alternative is the passthrough FIFO hwpe_stream_fifo_passthrough.
Name |
Default |
Description |
DATA_WIDTH |
32 |
Width of the HWPE-Streams (typically multiple of 32, but this module does not care). |
FIFO_DEPTH |
8 |
Depth of the FIFO queue (multiple of 2). |
LATCH_FIFO |
0 |
If 1, use latches instead of flip-flops (requires special constraints in synthesis). |
LATCH_FIFO_TEST_WRAP |
0 |
If 1 and LATCH_FIFO is 1, wrap latches with BIST wrappers. |
Name |
Type |
Description |
empty |
logic |
1 if the FIFO is currently empty. |
full |
logic |
1 if the FIFO is currently full. |
push_pointer |
logic[7:0] |
Unused. |
pop_pointer |
logic[7:0] |
Unused. |
This module instantiates no other module.
Clocks
Resets
Ports 6
Inputs 4
| Dir | Name | Type | Width |
|---|---|---|---|
| in | clk_i | logic | 1 |
| in | rst_ni | logic | 1 |
| in | clear_i | logic | 1 |
| in | push_i | hwpe_stream_intf_stream .sink | - |
Outputs 2
| Dir | Name | Type | Width |
|---|---|---|---|
| out | flags_o | hwpe_stream_package::flags_fifo_t | 20 |
| out | pop_o | hwpe_stream_intf_stream .source | - |
Parameters 8
| Name | Resolved value |
|---|---|
| DATA_WIDTH | 32'd512 |
| ELEMENT_WIDTH | 32'd8 |
| FIFO_DEPTH | 32'd2 |
| LATCH_FIFO | 32'd0 |
| LATCH_FIFO_TEST_WRAP | 32'd0 |
| STRB_WIDTH | 32'd64 |
| DATA_STRB_WIDTH | 32'd576 |
| ADDR_DEPTH | 1 |