tlul_socket_1n
Steer one TL-UL host onto N device ports.
Route each A-channel request to tl_d_o[dev_select_i] through optional host and per-device FIFOs; dev_select_i travels through the host FIFO with its request. Ports that are not selected see a_valid low, blanked a_data and deliberately bad integrity. Maximum N is 63.
Stall switching to another device until all outstanding responses from other devices have returned: keep a counter of outstanding requests and wait until it is zero before switching.
Return an error response from an internal tlul_err_resp when dev_select_i is outside 0..N-1. The instantiator may force an error with any illegal select; all ones is recommended for visibility. When EXPLICIT_ERRS is set, size dev_select_i as $clog2(N+1) bits so value N is always representable and can request that error.
FIFO parameters:
- H_REQ_PASS/H_RSP_PASS and D_REQ_PASS/D_RSP_PASS allow fall-through when the corresponding FIFO is empty.
- H_REQ_DEPTH/H_RSP_DEPTH and D_REQ_DEPTH/D_RSP_DEPTH set FIFO depths; the D* depths pack one nibble per device.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
N | int unsigned | 4 | Number of device ports (max 63). |
H_REQ_PASS | bit | 1'b1 | Host request FIFO fall-through. |
H_RSP_PASS | bit | 1'b1 | Host response FIFO fall-through. |
D_REQ_PASS | bit [N-1:0] | {N{1'b1}} | Per-device request FIFO fall-through. |
D_RSP_PASS | bit [N-1:0] | {N{1'b1}} | Per-device response FIFO fall-through. |
H_REQ_DEPTH | bit [3:0] | 4'h1 | Host request FIFO depth. |
H_RSP_DEPTH | bit [3:0] | 4'h1 | Host response FIFO depth. |
D_REQ_DEPTH | bit [N*4-1:0] | {N{4'h1}} | Packed per-device request FIFO depths. |
D_RSP_DEPTH | bit [N*4-1:0] | {N{4'h1}} | Packed per-device response FIFO depths. |
EXPLICIT_ERRS | bit | 1'b1 | Widen select so N can request an error. |
Nwd | int unsigned | $clog2(EXPLICIT_ERRS ? N+1 : N) | Width of dev_select_i. |
Ports
| Name | Direction | Type | Description |
|---|---|---|---|
clk_i | input | | System clock. |
rst_ni | input | | Active-low reset. |
tl_h_i | input | tlul_pkg::tl_h2d_t | Host-side TL-UL request. |
tl_h_o | output | tlul_pkg::tl_d2h_t | Host-side TL-UL response. |
tl_d_o | output | tlul_pkg::tl_h2d_t | Per-device TL-UL requests. |
tl_d_i | input | tlul_pkg::tl_d2h_t | Per-device TL-UL responses. |
dev_select_i | input | [Nwd-1:0] | Device index; N and above return an error. |