hci_core_fifo
The hci_core_fifo module implements a hardware FIFO queue for
HCI-Core interfaces, used to withstand data scarcity (req=0) or
backpressure (gnt=0), decoupling two architectural domains.
This FIFO is single-clock and therefore cannot be used to cross two
distinct clock domains.
The FIFO treats a HCI-Core load stream as a combination of two
32-bit HWPE-Streams, one going from the tcdm_initiator to the tcdm_target interface
carrying the addr (outgoing stream); the other from the tcdm_target to the
tcdm_initiator interface, carrying the r_data (incoming stream).
On the target side, the req and gnt of the HCI-Core interfaces are mapped on valid and ready respectively in the outgoing stream. Backpressure on the incoming stream (target side) cannot be enforced by means of the HCI-Core target interface and thus is carried by a specific input ready_i that must be generated outside of the TCDM FIFO, typically by a hwpe_stream_source module (output tcdm_fifo_ready_o). On the initiator side, req is mapped to the AND of the incoming stream ready signal and the outgoing stream valid signal. gnt is hooked to the outgoing stream ready signal. The r_valid is mapped on valid in the incoming stream. :numref:`_hci_core_fifo_mapping` shows this mapping.
Mapping of HCI-Core and HWPE-Stream signals inside the load FIFO.
Name |
Default |
Description |
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). |
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. |
Internal connectivity
the submodules of hci_core_fifo and the signals between themBlue: an input. Magenta: an output. Green: an interface. Orange: no direction. A hexagon shows a port that goes in two directions. The clock and the reset nets are not in the graph.
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 | tcdm_target | hci_core_intf .target | - |
Outputs 2
| Dir | Name | Type | Width |
|---|---|---|---|
| out | flags_o | hwpe_stream_package::flags_fifo_t | 20 |
| out | tcdm_initiator | hci_core_intf .initiator | - |
Parameters 10
| Name | Resolved value |
|---|---|
| FIFO_DEPTH | 32'd2 |
| LATCH_FIFO | 32'd0 |
| HCI_SIZE_tcdm_initiator | 224'h0 |
| DW | 32'd0 |
| BW | 32'd0 |
| AW | 32'd0 |
| UW | 32'd0 |
| IW | 32'd0 |
| EW | 32'd0 |
| EHW | 32'd0 |
Submodules 2
| Instance | Module | Count | Conns |
|---|---|---|---|
| i_fifo_incoming | hwpe_stream_fifo | 1 | 6 |
| i_fifo_outgoing | hwpe_stream_fifo | 1 | 6 |