Skip to content

Commit 7d378e0

Browse files
committed
Merge branch 'fix_dma_wait' into develop
2 parents 765ef7e + 3ddb7b5 commit 7d378e0

File tree

20 files changed

+881
-406
lines changed

20 files changed

+881
-406
lines changed

examples/axi_stream_ultra96v2_pynq/test_axi_stream.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,11 @@
8989
reg [32-1:0] _axi_a_read_local_addr_buf;
9090
reg [32-1:0] _axi_a_read_local_stride_buf;
9191
reg [33-1:0] _axi_a_read_local_size_buf;
92-
reg _axi_a_read_data_idle;
92+
reg _axi_a_read_data_busy;
93+
wire _axi_a_read_data_idle;
9394
wire _axi_a_read_idle;
94-
assign _axi_a_read_idle = _axi_a_read_req_fifo_empty && _axi_a_read_data_idle;
95+
assign _axi_a_read_data_idle = _axi_a_read_req_fifo_empty && !_axi_a_read_data_busy;
96+
assign _axi_a_read_idle = _axi_a_read_data_idle;
9597
wire _axi_b_write_req_fifo_enq;
9698
wire [105-1:0] _axi_b_write_req_fifo_wdata;
9799
wire _axi_b_write_req_fifo_full;
@@ -140,9 +142,11 @@
140142
reg [32-1:0] _axi_b_write_local_addr_buf;
141143
reg [32-1:0] _axi_b_write_local_stride_buf;
142144
reg [33-1:0] _axi_b_write_size_buf;
143-
reg _axi_b_write_data_idle;
145+
reg _axi_b_write_data_busy;
146+
wire _axi_b_write_data_idle;
144147
wire _axi_b_write_idle;
145-
assign _axi_b_write_idle = _axi_b_write_req_fifo_empty && _axi_b_write_data_idle;
148+
assign _axi_b_write_data_idle = _axi_b_write_req_fifo_empty && !_axi_b_write_data_busy;
149+
assign _axi_b_write_idle = _axi_b_write_data_idle;
146150
assign saxi_bresp = 0;
147151
assign saxi_rresp = 0;
148152
reg signed [32-1:0] _saxi_register_0;
@@ -202,13 +206,13 @@
202206
203207
always @(posedge CLK) begin
204208
if(RST) begin
205-
_axi_a_read_data_idle <= 1;
209+
_axi_a_read_data_busy <= 0;
206210
end else begin
207-
if((th_comp == 7) && _axi_a_read_data_idle) begin
208-
_axi_a_read_data_idle <= 0;
211+
if((th_comp == 7) && _axi_a_read_idle) begin
212+
_axi_a_read_data_busy <= 1;
209213
end
210214
if((th_comp == 8) && axi_a_tvalid) begin
211-
_axi_a_read_data_idle <= 1;
215+
_axi_a_read_data_busy <= 0;
212216
end
213217
end
214218
end
@@ -231,7 +235,7 @@
231235
232236
always @(posedge CLK) begin
233237
if(RST) begin
234-
_axi_b_write_data_idle <= 1;
238+
_axi_b_write_data_busy <= 0;
235239
axi_b_tdata <= 0;
236240
axi_b_tvalid <= 0;
237241
axi_b_tlast <= 0;
@@ -241,8 +245,8 @@
241245
axi_b_tvalid <= 0;
242246
axi_b_tlast <= 0;
243247
end
244-
if((th_comp == 12) && _axi_b_write_data_idle) begin
245-
_axi_b_write_data_idle <= 0;
248+
if((th_comp == 12) && _axi_b_write_idle) begin
249+
_axi_b_write_data_busy <= 1;
246250
end
247251
if((th_comp == 13) && (axi_b_tready || !axi_b_tvalid)) begin
248252
axi_b_tdata <= _th_comp_b_4;
@@ -255,7 +259,7 @@
255259
axi_b_tlast <= axi_b_tlast;
256260
end
257261
if((th_comp == 13) && (axi_b_tready || !axi_b_tvalid)) begin
258-
_axi_b_write_data_idle <= 1;
262+
_axi_b_write_data_busy <= 0;
259263
end
260264
end
261265
end
@@ -511,7 +515,7 @@
511515
end
512516
end
513517
th_comp_7: begin
514-
if(_axi_a_read_data_idle) begin
518+
if(_axi_a_read_idle) begin
515519
th_comp <= th_comp_8;
516520
end
517521
end
@@ -540,7 +544,7 @@
540544
th_comp <= th_comp_12;
541545
end
542546
th_comp_12: begin
543-
if(_axi_b_write_data_idle) begin
547+
if(_axi_b_write_idle) begin
544548
th_comp <= th_comp_13;
545549
end
546550
end

examples/simulation_verilator/test_simulation_verilator.py

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -995,10 +995,14 @@
995995
reg [32-1:0] _myaxi_read_local_stride_buf;
996996
reg [33-1:0] _myaxi_read_local_size_buf;
997997
reg [32-1:0] _myaxi_read_local_blocksize_buf;
998-
reg _myaxi_read_req_idle;
999-
reg _myaxi_read_data_idle;
998+
reg _myaxi_read_req_busy;
999+
reg _myaxi_read_data_busy;
1000+
wire _myaxi_read_req_idle;
1001+
wire _myaxi_read_data_idle;
10001002
wire _myaxi_read_idle;
1001-
assign _myaxi_read_idle = !_myaxi_read_start && _myaxi_read_req_idle && _myaxi_read_req_fifo_empty && _myaxi_read_data_idle;
1003+
assign _myaxi_read_req_idle = !_myaxi_read_start && !_myaxi_read_req_busy;
1004+
assign _myaxi_read_data_idle = _myaxi_read_req_fifo_empty && !_myaxi_read_data_busy;
1005+
assign _myaxi_read_idle = _myaxi_read_req_idle && _myaxi_read_data_idle;
10021006
reg _myaxi_write_start;
10031007
reg [8-1:0] _myaxi_write_op_sel;
10041008
reg [32-1:0] _myaxi_write_global_addr;
@@ -1057,10 +1061,14 @@
10571061
reg [32-1:0] _myaxi_write_local_stride_buf;
10581062
reg [33-1:0] _myaxi_write_size_buf;
10591063
reg [32-1:0] _myaxi_write_local_blocksize_buf;
1060-
reg _myaxi_write_req_idle;
1061-
reg _myaxi_write_data_idle;
1064+
reg _myaxi_write_req_busy;
1065+
reg _myaxi_write_data_busy;
1066+
wire _myaxi_write_req_idle;
1067+
wire _myaxi_write_data_idle;
10621068
wire _myaxi_write_idle;
1063-
assign _myaxi_write_idle = !_myaxi_write_start && _myaxi_write_req_idle && _myaxi_write_req_fifo_empty && _myaxi_write_data_idle;
1069+
assign _myaxi_write_req_idle = !_myaxi_write_start && !_myaxi_write_req_busy;
1070+
assign _myaxi_write_data_idle = _myaxi_write_req_fifo_empty && !_myaxi_write_data_busy;
1071+
assign _myaxi_write_idle = _myaxi_write_req_idle && _myaxi_write_data_idle;
10641072
reg [32-1:0] th_matmul;
10651073
localparam th_matmul_init = 0;
10661074
reg signed [32-1:0] _th_matmul_matrix_size_0;
@@ -1257,7 +1265,7 @@
12571265
wire [32-1:0] read_burst_rdata_86;
12581266
assign read_burst_rdata_86 = ram_c_0_rdata;
12591267
assign _myaxi_write_req_fifo_deq = ((_myaxi_write_data_fsm == 2) && (!_myaxi_write_req_fifo_empty && (_myaxi_write_size_buf == 0)) && !_myaxi_write_req_fifo_empty)? 1 :
1260-
((_myaxi_write_data_fsm == 0) && (_myaxi_write_data_idle && !_myaxi_write_req_fifo_empty && (_myaxi_write_op_sel_fifo == 1)) && !_myaxi_write_req_fifo_empty)? 1 : 0;
1268+
((_myaxi_write_data_fsm == 0) && (!_myaxi_write_data_busy && !_myaxi_write_req_fifo_empty && (_myaxi_write_op_sel_fifo == 1)) && !_myaxi_write_req_fifo_empty)? 1 : 0;
12611269
reg _myaxi_cond_2_1;
12621270
reg signed [32-1:0] _th_matmul_end_time_18;
12631271
reg signed [32-1:0] _th_matmul_time_19;
@@ -1272,9 +1280,9 @@
12721280
assign mask_addr_shifted_87 = _th_matmul_c_addr_25 >> 2;
12731281
wire [32-1:0] mask_addr_masked_88;
12741282
assign mask_addr_masked_88 = mask_addr_shifted_87 << 2;
1275-
assign _myaxi_read_req_fifo_deq = ((_myaxi_read_data_fsm == 0) && (_myaxi_read_data_idle && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 3)) && !_myaxi_read_req_fifo_empty)? 1 :
1276-
((_myaxi_read_data_fsm == 0) && (_myaxi_read_data_idle && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 2)) && !_myaxi_read_req_fifo_empty)? 1 :
1277-
((_myaxi_read_data_fsm == 0) && (_myaxi_read_data_idle && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 1)) && !_myaxi_read_req_fifo_empty)? 1 : 0;
1283+
assign _myaxi_read_req_fifo_deq = ((_myaxi_read_data_fsm == 0) && (!_myaxi_read_data_busy && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 3)) && !_myaxi_read_req_fifo_empty)? 1 :
1284+
((_myaxi_read_data_fsm == 0) && (!_myaxi_read_data_busy && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 2)) && !_myaxi_read_req_fifo_empty)? 1 :
1285+
((_myaxi_read_data_fsm == 0) && (!_myaxi_read_data_busy && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 1)) && !_myaxi_read_req_fifo_empty)? 1 : 0;
12781286
reg [32-1:0] write_burst_fsm_3;
12791287
localparam write_burst_fsm_3_init = 0;
12801288
reg [10-1:0] write_burst_addr_89;
@@ -1352,13 +1360,13 @@
13521360
_myaxi_read_local_stride <= 0;
13531361
_myaxi_read_local_size <= 0;
13541362
_myaxi_read_local_blocksize <= 0;
1355-
_myaxi_read_req_idle <= 1;
1363+
_myaxi_read_req_busy <= 0;
13561364
_myaxi_read_cur_global_size <= 0;
13571365
myaxi_araddr <= 0;
13581366
myaxi_arlen <= 0;
13591367
myaxi_arvalid <= 0;
13601368
_myaxi_cond_0_1 <= 0;
1361-
_myaxi_read_data_idle <= 1;
1369+
_myaxi_read_data_busy <= 0;
13621370
_myaxi_read_op_sel_buf <= 0;
13631371
_myaxi_read_local_addr_buf <= 0;
13641372
_myaxi_read_local_stride_buf <= 0;
@@ -1371,13 +1379,13 @@
13711379
_myaxi_write_local_stride <= 0;
13721380
_myaxi_write_local_size <= 0;
13731381
_myaxi_write_local_blocksize <= 0;
1374-
_myaxi_write_req_idle <= 1;
1382+
_myaxi_write_req_busy <= 0;
13751383
_myaxi_write_cur_global_size <= 0;
13761384
myaxi_awaddr <= 0;
13771385
myaxi_awlen <= 0;
13781386
myaxi_awvalid <= 0;
13791387
_myaxi_cond_1_1 <= 0;
1380-
_myaxi_write_data_idle <= 1;
1388+
_myaxi_write_data_busy <= 0;
13811389
_myaxi_write_op_sel_buf <= 0;
13821390
_myaxi_write_local_addr_buf <= 0;
13831391
_myaxi_write_local_stride_buf <= 0;
@@ -1418,7 +1426,7 @@
14181426
_myaxi_read_local_blocksize <= 1;
14191427
end
14201428
if((_myaxi_read_req_fsm == 0) && _myaxi_read_start) begin
1421-
_myaxi_read_req_idle <= 0;
1429+
_myaxi_read_req_busy <= 1;
14221430
end
14231431
if(_myaxi_read_start && _myaxi_read_req_fifo_almost_full) begin
14241432
_myaxi_read_start <= 1;
@@ -1449,10 +1457,10 @@
14491457
_myaxi_read_global_addr <= _myaxi_read_global_addr + (_myaxi_read_cur_global_size << 2);
14501458
end
14511459
if((_myaxi_read_req_fsm == 1) && (myaxi_arready || !myaxi_arvalid) && (_myaxi_read_global_size == 0)) begin
1452-
_myaxi_read_req_idle <= 1;
1460+
_myaxi_read_req_busy <= 0;
14531461
end
1454-
if((_myaxi_read_data_fsm == 0) && (_myaxi_read_data_idle && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 1))) begin
1455-
_myaxi_read_data_idle <= 0;
1462+
if((_myaxi_read_data_fsm == 0) && (!_myaxi_read_data_busy && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 1))) begin
1463+
_myaxi_read_data_busy <= 1;
14561464
_myaxi_read_op_sel_buf <= _myaxi_read_op_sel_fifo;
14571465
_myaxi_read_local_addr_buf <= _myaxi_read_local_addr_fifo;
14581466
_myaxi_read_local_stride_buf <= _myaxi_read_local_stride_fifo;
@@ -1463,7 +1471,7 @@
14631471
_myaxi_read_local_size_buf <= _myaxi_read_local_size_buf - 1;
14641472
end
14651473
if((_myaxi_read_data_fsm == 2) && myaxi_rvalid && (_myaxi_read_local_size_buf <= 1)) begin
1466-
_myaxi_read_data_idle <= 1;
1474+
_myaxi_read_data_busy <= 0;
14671475
end
14681476
if((th_matmul == 11) && _myaxi_read_req_idle) begin
14691477
_myaxi_read_start <= 1;
@@ -1475,8 +1483,8 @@
14751483
_myaxi_read_local_size <= _th_matmul_matrix_size_5;
14761484
_myaxi_read_local_blocksize <= 1;
14771485
end
1478-
if((_myaxi_read_data_fsm == 0) && (_myaxi_read_data_idle && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 2))) begin
1479-
_myaxi_read_data_idle <= 0;
1486+
if((_myaxi_read_data_fsm == 0) && (!_myaxi_read_data_busy && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 2))) begin
1487+
_myaxi_read_data_busy <= 1;
14801488
_myaxi_read_op_sel_buf <= _myaxi_read_op_sel_fifo;
14811489
_myaxi_read_local_addr_buf <= _myaxi_read_local_addr_fifo;
14821490
_myaxi_read_local_stride_buf <= _myaxi_read_local_stride_fifo;
@@ -1487,7 +1495,7 @@
14871495
_myaxi_read_local_size_buf <= _myaxi_read_local_size_buf - 1;
14881496
end
14891497
if((_myaxi_read_data_fsm == 2) && myaxi_rvalid && (_myaxi_read_local_size_buf <= 1)) begin
1490-
_myaxi_read_data_idle <= 1;
1498+
_myaxi_read_data_busy <= 0;
14911499
end
14921500
if((th_matmul == 25) && _myaxi_write_req_idle) begin
14931501
_myaxi_write_start <= 1;
@@ -1500,7 +1508,7 @@
15001508
_myaxi_write_local_blocksize <= 1;
15011509
end
15021510
if((_myaxi_write_req_fsm == 0) && _myaxi_write_start) begin
1503-
_myaxi_write_req_idle <= 0;
1511+
_myaxi_write_req_busy <= 1;
15041512
end
15051513
if(_myaxi_write_start && _myaxi_write_req_fifo_almost_full) begin
15061514
_myaxi_write_start <= 1;
@@ -1534,10 +1542,10 @@
15341542
_myaxi_write_global_addr <= _myaxi_write_global_addr + (_myaxi_write_cur_global_size << 2);
15351543
end
15361544
if((_myaxi_write_req_fsm == 1) && ((_myaxi_write_req_fsm == 1) && !_myaxi_write_req_fifo_almost_full && (myaxi_awready || !myaxi_awvalid) && (outstanding_wcount_0 < 6)) && (_myaxi_write_global_size == 0)) begin
1537-
_myaxi_write_req_idle <= 1;
1545+
_myaxi_write_req_busy <= 0;
15381546
end
1539-
if((_myaxi_write_data_fsm == 0) && (_myaxi_write_data_idle && !_myaxi_write_req_fifo_empty && (_myaxi_write_op_sel_fifo == 1))) begin
1540-
_myaxi_write_data_idle <= 0;
1547+
if((_myaxi_write_data_fsm == 0) && (!_myaxi_write_data_busy && !_myaxi_write_req_fifo_empty && (_myaxi_write_op_sel_fifo == 1))) begin
1548+
_myaxi_write_data_busy <= 1;
15411549
_myaxi_write_op_sel_buf <= _myaxi_write_op_sel_fifo;
15421550
_myaxi_write_local_addr_buf <= _myaxi_write_local_addr_fifo;
15431551
_myaxi_write_local_stride_buf <= _myaxi_write_local_stride_fifo;
@@ -1565,7 +1573,7 @@
15651573
_myaxi_write_size_buf <= _myaxi_write_size_buf - 1;
15661574
end
15671575
if((_myaxi_write_data_fsm == 2) && ((_myaxi_write_op_sel_buf == 1) && read_burst_rvalid_82 && ((myaxi_wready || !myaxi_wvalid) && (_myaxi_write_size_buf > 0))) && read_burst_rlast_83) begin
1568-
_myaxi_write_data_idle <= 1;
1576+
_myaxi_write_data_busy <= 0;
15691577
end
15701578
if((th_matmul == 38) && _myaxi_read_req_idle) begin
15711579
_myaxi_read_start <= 1;
@@ -1577,8 +1585,8 @@
15771585
_myaxi_read_local_size <= _th_matmul_matrix_size_20;
15781586
_myaxi_read_local_blocksize <= 1;
15791587
end
1580-
if((_myaxi_read_data_fsm == 0) && (_myaxi_read_data_idle && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 3))) begin
1581-
_myaxi_read_data_idle <= 0;
1588+
if((_myaxi_read_data_fsm == 0) && (!_myaxi_read_data_busy && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 3))) begin
1589+
_myaxi_read_data_busy <= 1;
15821590
_myaxi_read_op_sel_buf <= _myaxi_read_op_sel_fifo;
15831591
_myaxi_read_local_addr_buf <= _myaxi_read_local_addr_fifo;
15841592
_myaxi_read_local_stride_buf <= _myaxi_read_local_stride_fifo;
@@ -1589,7 +1597,7 @@
15891597
_myaxi_read_local_size_buf <= _myaxi_read_local_size_buf - 1;
15901598
end
15911599
if((_myaxi_read_data_fsm == 2) && myaxi_rvalid && (_myaxi_read_local_size_buf <= 1)) begin
1592-
_myaxi_read_data_idle <= 1;
1600+
_myaxi_read_data_busy <= 0;
15931601
end
15941602
end
15951603
end
@@ -2051,13 +2059,13 @@
20512059
end else begin
20522060
case(_myaxi_read_data_fsm)
20532061
_myaxi_read_data_fsm_init: begin
2054-
if(_myaxi_read_data_idle && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 1)) begin
2062+
if(!_myaxi_read_data_busy && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 1)) begin
20552063
_myaxi_read_data_fsm <= _myaxi_read_data_fsm_1;
20562064
end
2057-
if(_myaxi_read_data_idle && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 2)) begin
2065+
if(!_myaxi_read_data_busy && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 2)) begin
20582066
_myaxi_read_data_fsm <= _myaxi_read_data_fsm_1;
20592067
end
2060-
if(_myaxi_read_data_idle && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 3)) begin
2068+
if(!_myaxi_read_data_busy && !_myaxi_read_req_fifo_empty && (_myaxi_read_op_sel_fifo == 3)) begin
20612069
_myaxi_read_data_fsm <= _myaxi_read_data_fsm_1;
20622070
end
20632071
end
@@ -2210,7 +2218,7 @@
22102218
end else begin
22112219
case(_myaxi_write_data_fsm)
22122220
_myaxi_write_data_fsm_init: begin
2213-
if(_myaxi_write_data_idle && !_myaxi_write_req_fifo_empty && (_myaxi_write_op_sel_fifo == 1)) begin
2221+
if(!_myaxi_write_data_busy && !_myaxi_write_req_fifo_empty && (_myaxi_write_op_sel_fifo == 1)) begin
22142222
_myaxi_write_data_fsm <= _myaxi_write_data_fsm_1;
22152223
end
22162224
end

0 commit comments

Comments
 (0)