@@ -375,6 +375,7 @@ localparam DMA_IW_CONTRIB_FAC = Cfg.DmaUseHwpePort ? 0 : 1;
375375// if using MCHAN, must be 32
376376localparam int unsigned DMA_HCI_DATA_WIDTH = Cfg.DmaUseHwpePort ? Cfg.AxiDataOutWideWidth : DataWidth;
377377
378+
378379localparam hci_package :: hci_size_parameter_t HciCoreSizeParam = '{
379380 DW : DataWidth,
380381 AW : AddrWidth,
@@ -616,6 +617,7 @@ hci_core_intf #(
616617 c2s_out_int_req_t s_dma_narrow_master_req; // Narrow DMA master (64-bit)
617618 c2s_out_int_resp_t s_dma_narrow_master_resp;
618619
620+
619621 // core per2axi -> ext
620622 c2s_in_int_req_t s_core_ext_bus_req;
621623 c2s_in_int_resp_t s_core_ext_bus_resp;
@@ -906,6 +908,7 @@ end else begin : gen_narrow_port_idma
906908 );
907909end
908910
911+
909912// ***************************************************
910913// **************CLUSTER PERIPHERALS******************
911914// ***************************************************
@@ -2047,12 +2050,13 @@ if (Cfg.AxiDataInWidth != Cfg.AxiDataOutWidth) begin
20472050 `AXI_ASSIGN_REQ_STRUCT (s_data_slave_32_req,dst_remap_req)
20482051 `AXI_ASSIGN_RESP_STRUCT (dst_remap_resp,s_data_slave_32_resp)
20492052
2050- axi_dw_converter # (
2051- .AxiIdWidth ( AxiIdInWidth ),
2052- .AxiAddrWidth ( Cfg.AxiAddrWidth ),
2053- .AxiSlvPortDataWidth ( Cfg.AxiDataInWidth ),
2054- .AxiMstPortDataWidth ( Cfg.AxiDataOutWidth ),
2055- .AxiMaxReads ( 1 ),
2053+ axi_dw_converter_intf # (
2054+ .AXI_ID_WIDTH ( AxiIdInWidth ),
2055+ .AXI_ADDR_WIDTH ( Cfg.AxiAddrWidth ),
2056+ .AXI_SLV_PORT_DATA_WIDTH ( Cfg.AxiDataInWidth ),
2057+ .AXI_MST_PORT_DATA_WIDTH ( Cfg.AxiDataOutWidth ),
2058+ .AXI_USER_WIDTH ( Cfg.AxiUserWidth ),
2059+ .AXI_MAX_READS ( 1 ),
20562060 .aw_chan_t ( s2c_in_int_aw_chan_t ),
20572061 .mst_w_chan_t ( c2s_w_chan_t ),
20582062 .slv_w_chan_t ( s2c_in_int_w_chan_t ),
@@ -2128,6 +2132,9 @@ initial begin : p_assert
21282132 assert (DMA_HCI_DATA_WIDTH == DataWidth)
21292133 else $fatal (1 , " When Cfg.DmaUseHwpePort is 0, DMA_HCI_DATA_WIDTH must be equal to DataWidth!" );
21302134 end
2135+ // Note: iDMA now uses conditional data width and AXI path selection
2136+ // EnableWidePort=0: iDMA uses 64-bit narrow transfers via cluster bus AXI path
2137+ // EnableWidePort=1: iDMA uses 256-bit wide transfers via dedicated wide AXI path
21312138 `endif
21322139end
21332140`endif
0 commit comments