Skip to content

Commit cfe93ac

Browse files
Refactor hci_core_{source,sink}_v2 as thin wrappers
This commit refactors hci_core_{source,sink}_v2, which introduced ready/valid job queues, as thin wrappers around "traditional" hci_core_{source,sink}. Most (if not all) downstream HWPEs use non-v2 streamers, which still receive significant updates and improvements. On the other hand, v2 streamers have been left untouched and are only lightly tested. Moving the v2 streamers to thin wrappers has the primary advantage that any code duplication (and divergence) is removed. Eventually, non-v2 streamers may be deprecated and in that case their functionality may be reintegrated in the v2 streamers, but this can happen only if most downstream HWPEs migrate to v2.
1 parent d6a4872 commit cfe93ac

4 files changed

Lines changed: 237 additions & 620 deletions

File tree

Bender.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ sources:
4646
- rtl/core/hci_core_r_id_filter.sv
4747
- rtl/core/hci_core_rob.sv
4848
- rtl/core/hci_core_source.sv
49-
- rtl/core/hci_core_source_v2.sv
5049
- rtl/core/hci_core_split.sv
5150
- rtl/ecc/hci_ecc_dec.sv
5251
- rtl/ecc/hci_ecc_enc.sv
@@ -63,10 +62,11 @@ sources:
6362
- rtl/parity/hci_copy_sink.sv
6463
# Level 3
6564
- rtl/core/hci_core_sink.sv
65+
- rtl/core/hci_core_source_v2.sv
6666
- rtl/ecc/hci_ecc_source.sv
67-
- rtl/core/hci_core_sink_v2.sv
6867
- rtl/interco/hci_router.sv
6968
# Level 4
69+
- rtl/core/hci_core_sink_v2.sv
7070
- rtl/ecc/hci_ecc_interconnect.sv
7171
- rtl/ecc/hci_ecc_sink.sv
7272
- rtl/hci_interconnect.sv

rtl/common/hci_package.sv

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,18 @@ package hci_package;
6767
hwpe_stream_package::flags_addressgen_v4_t addressgen_flags;
6868
} hci_streamer_flags_t;
6969

70+
// Same as hci_streamer_ctrl_t / hci_streamer_flags_t, except that the v2 streamers accept jobs
71+
// through a valid/ready handshake instead of the req_start/ready_start pair.
7072
typedef struct packed {
7173
logic valid;
72-
hwpe_stream_package::ctrl_addressgen_v3_t addressgen_ctrl;
74+
hwpe_stream_package::ctrl_addressgen_v4_t addressgen_ctrl;
7375
} hci_streamer_v2_ctrl_t;
7476

7577
typedef struct packed {
7678
logic ready;
7779
logic done;
78-
hwpe_stream_package::flags_addressgen_v3_t addressgen_flags;
80+
logic no_valid_transfers;
81+
hwpe_stream_package::flags_addressgen_v4_t addressgen_flags;
7982
} hci_streamer_v2_flags_t;
8083

8184
typedef enum {

0 commit comments

Comments
 (0)