@@ -119,8 +119,7 @@ module dmac_wrap #(
119
119
`AXI_TYPEDEF_RESP_T (mst_resp_t, mst_b_chan_t, mst_r_chan_t)
120
120
// BUS definitions
121
121
mst_req_t tcdm_req, soc_req;
122
- mem_req_t tcdm_read_req, tcdm_write_req;
123
- mst_resp_t soc_rsp, tcdm_read_rsp, tcdm_write_rsp;
122
+ mst_resp_t soc_rsp;
124
123
mst_resp_t tcdm_rsp;
125
124
slv_req_t [NUM_STREAMS - 1 : 0 ] dma_req;
126
125
slv_resp_t [NUM_STREAMS - 1 : 0 ] dma_rsp;
@@ -242,7 +241,7 @@ module dmac_wrap #(
242
241
localparam logic [1 : 0 ][31 : 0 ] RepWidths = '{ default : 32'd32 } ;
243
242
244
243
idma_nd_midend # (
245
- .NumDim ( 32'd2 ),
244
+ .NumDim ( NumDim ),
246
245
.addr_t ( addr_t ),
247
246
.idma_req_t ( idma_req_t ),
248
247
.idma_rsp_t ( idma_rsp_t ),
@@ -388,92 +387,49 @@ module dmac_wrap #(
388
387
.clk_i ( clk_i ),
389
388
.rst_ni ( rst_ni ),
390
389
.test_i ( test_mode_i ),
391
- .slv_ports_req_i ( dma_req ),
392
- .slv_ports_resp_o ( dma_rsp ),
390
+ .slv_ports_req_i ( dma_req ),
391
+ .slv_ports_resp_o ( dma_rsp ),
393
392
.mst_ports_req_o ( { tcdm_req, soc_req } ),
394
393
.mst_ports_resp_i ( { tcdm_rsp, soc_rsp } ),
395
394
.addr_map_i ( addr_map ),
396
395
.en_default_mst_port_i ( '0 ),
397
396
.default_mst_port_i ( '0 )
398
397
);
399
398
400
- // split AXI bus in read and write
401
- always_comb begin : proc_tcdm_axi_rw_split
402
- `AXI_SET_R_STRUCT (tcdm_rsp.r, tcdm_read_rsp.r)
403
- tcdm_rsp.r_valid = tcdm_read_rsp.r_valid;
404
- tcdm_rsp.ar_ready = tcdm_read_rsp.ar_ready;
405
- `AXI_SET_B_STRUCT (tcdm_rsp.b, tcdm_write_rsp.b)
406
- tcdm_rsp.b_valid = tcdm_write_rsp.b_valid;
407
- tcdm_rsp.w_ready = tcdm_write_rsp.w_ready;
408
- tcdm_rsp.aw_ready = tcdm_write_rsp.aw_ready;
409
-
410
- tcdm_write_req = '0 ;
411
- `AXI_SET_AW_STRUCT (tcdm_write_req.aw, tcdm_req.aw)
412
- tcdm_write_req.aw.addr = tcdm_req.aw.addr[ADDR_WIDTH - 1 : 0 ];
413
- tcdm_write_req.aw_valid = tcdm_req.aw_valid;
414
- `AXI_SET_W_STRUCT (tcdm_write_req.w, tcdm_req.w)
415
- tcdm_write_req.w_valid = tcdm_req.w_valid;
416
- tcdm_write_req.b_ready = tcdm_req.b_ready;
417
-
418
- tcdm_read_req = '0 ;
419
- `AXI_SET_AR_STRUCT (tcdm_read_req.ar, tcdm_req.ar)
420
- tcdm_read_req.ar.addr = tcdm_req.ar.addr[ADDR_WIDTH - 1 : 0 ];
421
- tcdm_read_req.ar_valid = tcdm_req.ar_valid;
422
- tcdm_read_req.r_ready = tcdm_req.r_ready;
423
- end
424
-
425
- logic tcdm_master_we_0, tcdm_master_we_1, tcdm_master_we_2, tcdm_master_we_3;
426
-
427
399
localparam int unsigned TcdmFifoDepth = 1 ;
428
400
429
- idma_axi_to_mem # (
430
- .axi_req_t ( mem_req_t ),
431
- .axi_resp_t ( mst_resp_t ),
432
- .AddrWidth ( ADDR_WIDTH ),
433
- .DataWidth ( AXI_DATA_WIDTH ),
434
- .IdWidth ( MstIdxWidth ),
435
- .NumBanks ( 2 ),
436
- .BufDepth ( TcdmFifoDepth )
437
- ) i_axi_to_mem_read (
438
- .clk_i ( clk_i ),
439
- .rst_ni ( rst_ni ),
440
- .busy_o ( ),
441
- .axi_req_i ( tcdm_read_req ),
442
- .axi_resp_o ( tcdm_read_rsp ),
443
- .mem_req_o ( { tcdm_master[0 ].req, tcdm_master[1 ].req } ),
444
- .mem_gnt_i ( { tcdm_master[0 ].gnt, tcdm_master[1 ].gnt } ),
445
- .mem_addr_o ( { tcdm_master[0 ].add, tcdm_master[1 ].add } ),
446
- .mem_wdata_o ( { tcdm_master[0 ].data, tcdm_master[1 ].data } ),
447
- .mem_strb_o ( { tcdm_master[0 ].be, tcdm_master[1 ].be } ),
448
- // .mem_atop_o ( ),
449
- .mem_we_o ( { tcdm_master_we_0, tcdm_master_we_1 } ),
450
- .mem_rvalid_i ( { tcdm_master[0 ].r_valid, tcdm_master[1 ].r_valid } ),
451
- .mem_rdata_i ( { tcdm_master[0 ].r_data, tcdm_master[1 ].r_data } )
452
- );
453
-
454
- idma_axi_to_mem # (
455
- .axi_req_t ( mem_req_t ),
456
- .axi_resp_t ( mst_resp_t ),
457
- .AddrWidth ( ADDR_WIDTH ),
458
- .DataWidth ( AXI_DATA_WIDTH ),
459
- .IdWidth ( MstIdxWidth ),
460
- .NumBanks ( 2 ),
461
- .BufDepth ( TcdmFifoDepth )
462
- ) i_axi_to_mem_write (
463
- .clk_i ( clk_i ),
464
- .rst_ni ( rst_ni ),
465
- .busy_o ( ),
466
- .axi_req_i ( tcdm_write_req ),
467
- .axi_resp_o ( tcdm_write_rsp ),
468
- .mem_req_o ( { tcdm_master[2 ].req, tcdm_master[3 ].req } ),
469
- .mem_gnt_i ( { tcdm_master[2 ].gnt, tcdm_master[3 ].gnt } ),
470
- .mem_addr_o ( { tcdm_master[2 ].add, tcdm_master[3 ].add } ),
471
- .mem_wdata_o ( { tcdm_master[2 ].data, tcdm_master[3 ].data } ),
472
- .mem_strb_o ( { tcdm_master[2 ].be, tcdm_master[3 ].be } ),
473
- // .mem_atop_o ( ),
474
- .mem_we_o ( { tcdm_master_we_2, tcdm_master_we_3 } ),
475
- .mem_rvalid_i ( { tcdm_master[2 ].r_valid, tcdm_master[3 ].r_valid } ),
476
- .mem_rdata_i ( { tcdm_master[2 ].r_data, tcdm_master[3 ].r_data } )
401
+ axi_to_mem_split # (
402
+ .axi_req_t ( mem_req_t ),
403
+ .axi_resp_t ( mst_resp_t ),
404
+ .AddrWidth ( ADDR_WIDTH ),
405
+ .AxiDataWidth ( AXI_DATA_WIDTH ),
406
+ .IdWidth ( MstIdxWidth ),
407
+ .MemDataWidth ( DATA_WIDTH ),
408
+ .BufDepth ( TcdmFifoDepth ),
409
+ .HideStrb ( 1'b1 )
410
+ ) i_axi_to_mem (
411
+ .clk_i,
412
+ .rst_ni,
413
+ .busy_o (),
414
+ .axi_req_i ( tcdm_req ),
415
+ .axi_resp_o ( tcdm_rsp ),
416
+ .mem_req_o ( { tcdm_master[0 ].req, tcdm_master[1 ].req,
417
+ tcdm_master[2 ].req, tcdm_master[3 ].req } ),
418
+ .mem_gnt_i ( { tcdm_master[0 ].gnt, tcdm_master[1 ].gnt,
419
+ tcdm_master[2 ].gnt, tcdm_master[3 ].gnt } ),
420
+ .mem_addr_o ( { tcdm_master[0 ].add, tcdm_master[1 ].add,
421
+ tcdm_master[2 ].add, tcdm_master[3 ].add } ),
422
+ .mem_wdata_o ( { tcdm_master[0 ].data, tcdm_master[1 ].data,
423
+ tcdm_master[2 ].data, tcdm_master[3 ].data } ),
424
+ .mem_strb_o ( { tcdm_master[0 ].be, tcdm_master[1 ].be,
425
+ tcdm_master[2 ].be, tcdm_master[3 ].be } ),
426
+ .mem_atop_o ( ),
427
+ .mem_we_o ( { tcdm_master_we_0, tcdm_master_we_1,
428
+ tcdm_master_we_2, tcdm_master_we_3 } ),
429
+ .mem_rvalid_i ( { tcdm_master[0 ].r_valid, tcdm_master[1 ].r_valid,
430
+ tcdm_master[2 ].r_valid, tcdm_master[3 ].r_valid } ),
431
+ .mem_rdata_i ( { tcdm_master[0 ].r_data, tcdm_master[1 ].r_data,
432
+ tcdm_master[2 ].r_data, tcdm_master[3 ].r_data } )
477
433
);
478
434
479
435
// tie-off TCDM master port
0 commit comments