RTLDoc datamover (lkesting/konark) - RTLDoc example
module

hci_core_fifo

hci.bender/git/checkouts/hci-95bf7c02baf9662e/rtl/core/hci_core_fifo.sv:73elaborated
4in
2out
2sub

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.

hci_core_fifo design-time parameters.

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).

hci_core_fifo output flags.

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 them
G cluster_hci_core_fifo hci_core_fifo p__clear_i clear_i i__i_fifo_incoming i_fifo_incoming hwpe_stream_fifo p__clear_i->i__i_fifo_incoming i__i_fifo_outgoing i_fifo_outgoing hwpe_stream_fifo p__clear_i->i__i_fifo_outgoing
scroll or pinch to zoom · drag to move · click a node to open

Blue: 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

clk_i

Resets

rst_niactive-low

Ports 6

Inputs 4

DirNameTypeWidth
in clk_i logic 1
in rst_ni logic 1
in clear_i logic 1
in tcdm_target hci_core_intf .target -

Outputs 2

DirNameTypeWidth
out flags_o hwpe_stream_package::flags_fifo_t 20
out tcdm_initiator hci_core_intf .initiator -

Parameters 10

NameResolved value
FIFO_DEPTH32'd2
LATCH_FIFO32'd0
HCI_SIZE_tcdm_initiator224'h0
DW32'd0
BW32'd0
AW32'd0
UW32'd0
IW32'd0
EW32'd0
EHW32'd0

Submodules 2

InstanceModuleCountConns
i_fifo_incoming hwpe_stream_fifo 1 6
i_fifo_outgoing hwpe_stream_fifo 1 6

Interfaces / streams 4

stream_outgoing_pushhwpe_stream_intf_stream stream_outgoing_pophwpe_stream_intf_stream stream_incoming_pushhwpe_stream_intf_stream stream_incoming_pophwpe_stream_intf_stream

Instantiated by

Imports

hwpe_stream_package::*hci_package::*