|
55 | 55 | assign _saxi_bready = 1; |
56 | 56 | assign _saxi_arcache = 3; |
57 | 57 | assign _saxi_arprot = 0; |
58 | | - wire [32-1:0] _tmp_0; |
59 | | - assign _tmp_0 = _saxi_awaddr; |
| 58 | + reg [32-1:0] outstanding_wreq_count_0; |
| 59 | + wire [32-1:0] _tmp_1; |
| 60 | + assign _tmp_1 = _saxi_awaddr; |
60 | 61 |
|
61 | 62 | always @(*) begin |
62 | | - saxi_awaddr = _tmp_0; |
| 63 | + saxi_awaddr = _tmp_1; |
63 | 64 | end |
64 | 65 |
|
65 | | - wire [4-1:0] _tmp_1; |
66 | | - assign _tmp_1 = _saxi_awcache; |
| 66 | + wire [4-1:0] _tmp_2; |
| 67 | + assign _tmp_2 = _saxi_awcache; |
67 | 68 |
|
68 | 69 | always @(*) begin |
69 | | - saxi_awcache = _tmp_1; |
| 70 | + saxi_awcache = _tmp_2; |
70 | 71 | end |
71 | 72 |
|
72 | | - wire [3-1:0] _tmp_2; |
73 | | - assign _tmp_2 = _saxi_awprot; |
| 73 | + wire [3-1:0] _tmp_3; |
| 74 | + assign _tmp_3 = _saxi_awprot; |
74 | 75 |
|
75 | 76 | always @(*) begin |
76 | | - saxi_awprot = _tmp_2; |
| 77 | + saxi_awprot = _tmp_3; |
77 | 78 | end |
78 | 79 |
|
79 | | - wire _tmp_3; |
80 | | - assign _tmp_3 = _saxi_awvalid; |
| 80 | + wire _tmp_4; |
| 81 | + assign _tmp_4 = _saxi_awvalid; |
81 | 82 |
|
82 | 83 | always @(*) begin |
83 | | - saxi_awvalid = _tmp_3; |
| 84 | + saxi_awvalid = _tmp_4; |
84 | 85 | end |
85 | 86 |
|
86 | 87 | assign _saxi_awready = saxi_awready; |
87 | | - wire [32-1:0] _tmp_4; |
88 | | - assign _tmp_4 = _saxi_wdata; |
| 88 | + wire [32-1:0] _tmp_5; |
| 89 | + assign _tmp_5 = _saxi_wdata; |
89 | 90 |
|
90 | 91 | always @(*) begin |
91 | | - saxi_wdata = _tmp_4; |
| 92 | + saxi_wdata = _tmp_5; |
92 | 93 | end |
93 | 94 |
|
94 | | - wire [4-1:0] _tmp_5; |
95 | | - assign _tmp_5 = _saxi_wstrb; |
| 95 | + wire [4-1:0] _tmp_6; |
| 96 | + assign _tmp_6 = _saxi_wstrb; |
96 | 97 |
|
97 | 98 | always @(*) begin |
98 | | - saxi_wstrb = _tmp_5; |
| 99 | + saxi_wstrb = _tmp_6; |
99 | 100 | end |
100 | 101 |
|
101 | | - wire _tmp_6; |
102 | | - assign _tmp_6 = _saxi_wvalid; |
| 102 | + wire _tmp_7; |
| 103 | + assign _tmp_7 = _saxi_wvalid; |
103 | 104 |
|
104 | 105 | always @(*) begin |
105 | | - saxi_wvalid = _tmp_6; |
| 106 | + saxi_wvalid = _tmp_7; |
106 | 107 | end |
107 | 108 |
|
108 | 109 | assign _saxi_wready = saxi_wready; |
109 | 110 | assign _saxi_bresp = saxi_bresp; |
110 | 111 | assign _saxi_bvalid = saxi_bvalid; |
111 | | - wire _tmp_7; |
112 | | - assign _tmp_7 = _saxi_bready; |
| 112 | + wire _tmp_8; |
| 113 | + assign _tmp_8 = _saxi_bready; |
113 | 114 |
|
114 | 115 | always @(*) begin |
115 | | - saxi_bready = _tmp_7; |
| 116 | + saxi_bready = _tmp_8; |
116 | 117 | end |
117 | 118 |
|
118 | | - wire [32-1:0] _tmp_8; |
119 | | - assign _tmp_8 = _saxi_araddr; |
| 119 | + wire [32-1:0] _tmp_9; |
| 120 | + assign _tmp_9 = _saxi_araddr; |
120 | 121 |
|
121 | 122 | always @(*) begin |
122 | | - saxi_araddr = _tmp_8; |
| 123 | + saxi_araddr = _tmp_9; |
123 | 124 | end |
124 | 125 |
|
125 | | - wire [4-1:0] _tmp_9; |
126 | | - assign _tmp_9 = _saxi_arcache; |
| 126 | + wire [4-1:0] _tmp_10; |
| 127 | + assign _tmp_10 = _saxi_arcache; |
127 | 128 |
|
128 | 129 | always @(*) begin |
129 | | - saxi_arcache = _tmp_9; |
| 130 | + saxi_arcache = _tmp_10; |
130 | 131 | end |
131 | 132 |
|
132 | | - wire [3-1:0] _tmp_10; |
133 | | - assign _tmp_10 = _saxi_arprot; |
| 133 | + wire [3-1:0] _tmp_11; |
| 134 | + assign _tmp_11 = _saxi_arprot; |
134 | 135 |
|
135 | 136 | always @(*) begin |
136 | | - saxi_arprot = _tmp_10; |
| 137 | + saxi_arprot = _tmp_11; |
137 | 138 | end |
138 | 139 |
|
139 | | - wire _tmp_11; |
140 | | - assign _tmp_11 = _saxi_arvalid; |
| 140 | + wire _tmp_12; |
| 141 | + assign _tmp_12 = _saxi_arvalid; |
141 | 142 |
|
142 | 143 | always @(*) begin |
143 | | - saxi_arvalid = _tmp_11; |
| 144 | + saxi_arvalid = _tmp_12; |
144 | 145 | end |
145 | 146 |
|
146 | 147 | assign _saxi_arready = saxi_arready; |
147 | 148 | assign _saxi_rdata = saxi_rdata; |
148 | 149 | assign _saxi_rresp = saxi_rresp; |
149 | 150 | assign _saxi_rvalid = saxi_rvalid; |
150 | | - wire _tmp_12; |
151 | | - assign _tmp_12 = _saxi_rready; |
| 151 | + wire _tmp_13; |
| 152 | + assign _tmp_13 = _saxi_rready; |
152 | 153 |
|
153 | 154 | always @(*) begin |
154 | | - saxi_rready = _tmp_12; |
| 155 | + saxi_rready = _tmp_13; |
155 | 156 | end |
156 | 157 |
|
157 | 158 | reg [32-1:0] counter; |
|
170 | 171 | reg __saxi_cond_5_1; |
171 | 172 | reg signed [32-1:0] _th_ctrl_araddr_8; |
172 | 173 | reg __saxi_cond_6_1; |
173 | | - reg signed [32-1:0] axim_rdata_13; |
| 174 | + reg signed [32-1:0] axim_rdata_14; |
174 | 175 | reg signed [32-1:0] _th_ctrl_v_9; |
175 | 176 | reg __saxi_cond_7_1; |
176 | | - reg signed [32-1:0] axim_rdata_14; |
| 177 | + reg signed [32-1:0] axim_rdata_15; |
177 | 178 | reg __saxi_cond_8_1; |
178 | 179 | assign _saxi_rready = (th_ctrl == 21) || (th_ctrl == 25) || (th_ctrl == 30); |
179 | | - reg signed [32-1:0] axim_rdata_15; |
| 180 | + reg signed [32-1:0] axim_rdata_16; |
180 | 181 | reg signed [32-1:0] _th_ctrl_c_10; |
181 | 182 | reg signed [32-1:0] _th_ctrl_end_time_11; |
182 | 183 | reg signed [32-1:0] _th_ctrl_time_12; |
|
233 | 234 | _saxi_wvalid = 0; |
234 | 235 | _saxi_araddr = 0; |
235 | 236 | _saxi_arvalid = 0; |
| 237 | + outstanding_wreq_count_0 = 0; |
236 | 238 | counter = 0; |
237 | 239 | th_ctrl = th_ctrl_init; |
238 | 240 | _th_ctrl_i_3 = 0; |
|
248 | 250 | __saxi_cond_5_1 = 0; |
249 | 251 | _th_ctrl_araddr_8 = 0; |
250 | 252 | __saxi_cond_6_1 = 0; |
251 | | - axim_rdata_13 = 0; |
| 253 | + axim_rdata_14 = 0; |
252 | 254 | _th_ctrl_v_9 = 0; |
253 | 255 | __saxi_cond_7_1 = 0; |
254 | | - axim_rdata_14 = 0; |
255 | | - __saxi_cond_8_1 = 0; |
256 | 256 | axim_rdata_15 = 0; |
| 257 | + __saxi_cond_8_1 = 0; |
| 258 | + axim_rdata_16 = 0; |
257 | 259 | _th_ctrl_c_10 = 0; |
258 | 260 | _th_ctrl_end_time_11 = 0; |
259 | 261 | _th_ctrl_time_12 = 0; |
|
268 | 270 |
|
269 | 271 | always @(posedge CLK) begin |
270 | 272 | if(RST) begin |
| 273 | + outstanding_wreq_count_0 <= 0; |
271 | 274 | _saxi_awaddr <= 0; |
272 | 275 | _saxi_awvalid <= 0; |
273 | 276 | __saxi_cond_0_1 <= 0; |
|
312 | 315 | if(__saxi_cond_8_1) begin |
313 | 316 | _saxi_arvalid <= 0; |
314 | 317 | end |
| 318 | + if(_saxi_awvalid && _saxi_awready && !(_saxi_bvalid && _saxi_bready)) begin |
| 319 | + outstanding_wreq_count_0 <= outstanding_wreq_count_0 + 1; |
| 320 | + end |
| 321 | + if(!(_saxi_awvalid && _saxi_awready) && (_saxi_bvalid && _saxi_bready) && (outstanding_wreq_count_0 > 0)) begin |
| 322 | + outstanding_wreq_count_0 <= outstanding_wreq_count_0 - 1; |
| 323 | + end |
315 | 324 | if((th_ctrl == 7) && (_saxi_awready || !_saxi_awvalid)) begin |
316 | 325 | _saxi_awaddr <= _th_ctrl_awaddr_4; |
317 | 326 | _saxi_awvalid <= 1; |
|
446 | 455 | _th_ctrl_b_6 <= 0; |
447 | 456 | _th_ctrl_start_time_7 <= 0; |
448 | 457 | _th_ctrl_araddr_8 <= 0; |
449 | | - axim_rdata_13 <= 0; |
450 | | - _th_ctrl_v_9 <= 0; |
451 | 458 | axim_rdata_14 <= 0; |
| 459 | + _th_ctrl_v_9 <= 0; |
452 | 460 | axim_rdata_15 <= 0; |
| 461 | + axim_rdata_16 <= 0; |
453 | 462 | _th_ctrl_c_10 <= 0; |
454 | 463 | _th_ctrl_end_time_11 <= 0; |
455 | 464 | _th_ctrl_time_12 <= 0; |
|
550 | 559 | end |
551 | 560 | th_ctrl_21: begin |
552 | 561 | if(_saxi_rready && _saxi_rvalid) begin |
553 | | - axim_rdata_13 <= _saxi_rdata; |
| 562 | + axim_rdata_14 <= _saxi_rdata; |
554 | 563 | end |
555 | 564 | if(_saxi_rready && _saxi_rvalid) begin |
556 | 565 | th_ctrl <= th_ctrl_22; |
557 | 566 | end |
558 | 567 | end |
559 | 568 | th_ctrl_22: begin |
560 | | - _th_ctrl_v_9 <= axim_rdata_13; |
| 569 | + _th_ctrl_v_9 <= axim_rdata_14; |
561 | 570 | th_ctrl <= th_ctrl_23; |
562 | 571 | end |
563 | 572 | th_ctrl_23: begin |
|
574 | 583 | end |
575 | 584 | th_ctrl_25: begin |
576 | 585 | if(_saxi_rready && _saxi_rvalid) begin |
577 | | - axim_rdata_14 <= _saxi_rdata; |
| 586 | + axim_rdata_15 <= _saxi_rdata; |
578 | 587 | end |
579 | 588 | if(_saxi_rready && _saxi_rvalid) begin |
580 | 589 | th_ctrl <= th_ctrl_26; |
581 | 590 | end |
582 | 591 | end |
583 | 592 | th_ctrl_26: begin |
584 | | - _th_ctrl_v_9 <= axim_rdata_14; |
| 593 | + _th_ctrl_v_9 <= axim_rdata_15; |
585 | 594 | th_ctrl <= th_ctrl_27; |
586 | 595 | end |
587 | 596 | th_ctrl_27: begin |
|
598 | 607 | end |
599 | 608 | th_ctrl_30: begin |
600 | 609 | if(_saxi_rready && _saxi_rvalid) begin |
601 | | - axim_rdata_15 <= _saxi_rdata; |
| 610 | + axim_rdata_16 <= _saxi_rdata; |
602 | 611 | end |
603 | 612 | if(_saxi_rready && _saxi_rvalid) begin |
604 | 613 | th_ctrl <= th_ctrl_31; |
605 | 614 | end |
606 | 615 | end |
607 | 616 | th_ctrl_31: begin |
608 | | - _th_ctrl_c_10 <= axim_rdata_15; |
| 617 | + _th_ctrl_c_10 <= axim_rdata_16; |
609 | 618 | th_ctrl <= th_ctrl_32; |
610 | 619 | end |
611 | 620 | th_ctrl_32: begin |
|
695 | 704 | localparam _saxi_shift = 2; |
696 | 705 | reg [32-1:0] _saxi_register_fsm; |
697 | 706 | localparam _saxi_register_fsm_init = 0; |
698 | | - reg [32-1:0] _tmp_0; |
699 | | - reg _tmp_1; |
700 | | - reg _tmp_2; |
701 | | - reg _tmp_3; |
702 | | - reg _tmp_4; |
703 | | - assign saxi_awready = (_saxi_register_fsm == 0) && (!_tmp_1 && !_tmp_2 && !saxi_bvalid && _tmp_3); |
704 | | - assign saxi_arready = (_saxi_register_fsm == 0) && (!_tmp_2 && !_tmp_1 && _tmp_4 && !_tmp_3); |
| 707 | + reg [32-1:0] addr_0; |
| 708 | + reg writevalid_1; |
| 709 | + reg readvalid_2; |
| 710 | + reg prev_awvalid_3; |
| 711 | + reg prev_arvalid_4; |
| 712 | + assign saxi_awready = (_saxi_register_fsm == 0) && (!writevalid_1 && !readvalid_2 && !saxi_bvalid && prev_awvalid_3); |
| 713 | + assign saxi_arready = (_saxi_register_fsm == 0) && (!readvalid_2 && !writevalid_1 && prev_arvalid_4 && !prev_awvalid_3); |
705 | 714 | reg [_saxi_maskwidth-1:0] _tmp_5; |
706 | 715 | wire signed [32-1:0] _tmp_6; |
707 | 716 | assign _tmp_6 = (_tmp_5 == 0)? _saxi_register_0 : |
|
741 | 750 | always @(posedge CLK) begin |
742 | 751 | if(RST) begin |
743 | 752 | saxi_bvalid <= 0; |
744 | | - _tmp_3 <= 0; |
745 | | - _tmp_4 <= 0; |
746 | | - _tmp_1 <= 0; |
747 | | - _tmp_2 <= 0; |
748 | | - _tmp_0 <= 0; |
| 753 | + prev_awvalid_3 <= 0; |
| 754 | + prev_arvalid_4 <= 0; |
| 755 | + writevalid_1 <= 0; |
| 756 | + readvalid_2 <= 0; |
| 757 | + addr_0 <= 0; |
749 | 758 | saxi_rdata <= 0; |
750 | 759 | saxi_rvalid <= 0; |
751 | 760 | _saxi_cond_0_1 <= 0; |
|
783 | 792 | if(saxi_wvalid && saxi_wready) begin |
784 | 793 | saxi_bvalid <= 1; |
785 | 794 | end |
786 | | - _tmp_3 <= saxi_awvalid; |
787 | | - _tmp_4 <= saxi_arvalid; |
788 | | - _tmp_1 <= 0; |
789 | | - _tmp_2 <= 0; |
| 795 | + prev_awvalid_3 <= saxi_awvalid; |
| 796 | + prev_arvalid_4 <= saxi_arvalid; |
| 797 | + writevalid_1 <= 0; |
| 798 | + readvalid_2 <= 0; |
790 | 799 | if(saxi_awready && saxi_awvalid && !saxi_bvalid) begin |
791 | | - _tmp_0 <= saxi_awaddr; |
792 | | - _tmp_1 <= 1; |
| 800 | + addr_0 <= saxi_awaddr; |
| 801 | + writevalid_1 <= 1; |
793 | 802 | end else if(saxi_arready && saxi_arvalid) begin |
794 | | - _tmp_0 <= saxi_araddr; |
795 | | - _tmp_2 <= 1; |
| 803 | + addr_0 <= saxi_araddr; |
| 804 | + readvalid_2 <= 1; |
796 | 805 | end |
797 | 806 | if((_saxi_register_fsm == 1) && (saxi_rready || !saxi_rvalid)) begin |
798 | 807 | saxi_rdata <= _tmp_6; |
|
967 | 976 | end else begin |
968 | 977 | case(_saxi_register_fsm) |
969 | 978 | _saxi_register_fsm_init: begin |
970 | | - if(_tmp_2 || _tmp_1) begin |
971 | | - _tmp_5 <= (_tmp_0 >> _saxi_shift) & _saxi_mask; |
| 979 | + if(readvalid_2 || writevalid_1) begin |
| 980 | + _tmp_5 <= (addr_0 >> _saxi_shift) & _saxi_mask; |
972 | 981 | end |
973 | | - if(_tmp_2) begin |
| 982 | + if(readvalid_2) begin |
974 | 983 | _saxi_register_fsm <= _saxi_register_fsm_1; |
975 | 984 | end |
976 | | - if(_tmp_1) begin |
| 985 | + if(writevalid_1) begin |
977 | 986 | _saxi_register_fsm <= _saxi_register_fsm_3; |
978 | 987 | end |
979 | 988 | end |
|
0 commit comments