|
56 | 56 | assign _axi_bready = 1; |
57 | 57 | assign _axi_arcache = 3; |
58 | 58 | assign _axi_arprot = 0; |
59 | | - wire [32-1:0] _tmp_0; |
60 | | - assign _tmp_0 = _axi_awaddr; |
| 59 | + reg [32-1:0] outstanding_wreq_count_0; |
| 60 | + wire [32-1:0] _tmp_1; |
| 61 | + assign _tmp_1 = _axi_awaddr; |
61 | 62 |
|
62 | 63 | always @(*) begin |
63 | | - myaxi_awaddr = _tmp_0; |
| 64 | + myaxi_awaddr = _tmp_1; |
64 | 65 | end |
65 | 66 |
|
66 | | - wire [4-1:0] _tmp_1; |
67 | | - assign _tmp_1 = _axi_awcache; |
| 67 | + wire [4-1:0] _tmp_2; |
| 68 | + assign _tmp_2 = _axi_awcache; |
68 | 69 |
|
69 | 70 | always @(*) begin |
70 | | - myaxi_awcache = _tmp_1; |
| 71 | + myaxi_awcache = _tmp_2; |
71 | 72 | end |
72 | 73 |
|
73 | | - wire [3-1:0] _tmp_2; |
74 | | - assign _tmp_2 = _axi_awprot; |
| 74 | + wire [3-1:0] _tmp_3; |
| 75 | + assign _tmp_3 = _axi_awprot; |
75 | 76 |
|
76 | 77 | always @(*) begin |
77 | | - myaxi_awprot = _tmp_2; |
| 78 | + myaxi_awprot = _tmp_3; |
78 | 79 | end |
79 | 80 |
|
80 | | - wire _tmp_3; |
81 | | - assign _tmp_3 = _axi_awvalid; |
| 81 | + wire _tmp_4; |
| 82 | + assign _tmp_4 = _axi_awvalid; |
82 | 83 |
|
83 | 84 | always @(*) begin |
84 | | - myaxi_awvalid = _tmp_3; |
| 85 | + myaxi_awvalid = _tmp_4; |
85 | 86 | end |
86 | 87 |
|
87 | 88 | assign _axi_awready = myaxi_awready; |
88 | | - wire [32-1:0] _tmp_4; |
89 | | - assign _tmp_4 = _axi_wdata; |
| 89 | + wire [32-1:0] _tmp_5; |
| 90 | + assign _tmp_5 = _axi_wdata; |
90 | 91 |
|
91 | 92 | always @(*) begin |
92 | | - myaxi_wdata = _tmp_4; |
| 93 | + myaxi_wdata = _tmp_5; |
93 | 94 | end |
94 | 95 |
|
95 | | - wire [4-1:0] _tmp_5; |
96 | | - assign _tmp_5 = _axi_wstrb; |
| 96 | + wire [4-1:0] _tmp_6; |
| 97 | + assign _tmp_6 = _axi_wstrb; |
97 | 98 |
|
98 | 99 | always @(*) begin |
99 | | - myaxi_wstrb = _tmp_5; |
| 100 | + myaxi_wstrb = _tmp_6; |
100 | 101 | end |
101 | 102 |
|
102 | | - wire _tmp_6; |
103 | | - assign _tmp_6 = _axi_wvalid; |
| 103 | + wire _tmp_7; |
| 104 | + assign _tmp_7 = _axi_wvalid; |
104 | 105 |
|
105 | 106 | always @(*) begin |
106 | | - myaxi_wvalid = _tmp_6; |
| 107 | + myaxi_wvalid = _tmp_7; |
107 | 108 | end |
108 | 109 |
|
109 | 110 | assign _axi_wready = myaxi_wready; |
110 | 111 | assign _axi_bresp = myaxi_bresp; |
111 | 112 | assign _axi_bvalid = myaxi_bvalid; |
112 | | - wire _tmp_7; |
113 | | - assign _tmp_7 = _axi_bready; |
| 113 | + wire _tmp_8; |
| 114 | + assign _tmp_8 = _axi_bready; |
114 | 115 |
|
115 | 116 | always @(*) begin |
116 | | - myaxi_bready = _tmp_7; |
| 117 | + myaxi_bready = _tmp_8; |
117 | 118 | end |
118 | 119 |
|
119 | | - wire [32-1:0] _tmp_8; |
120 | | - assign _tmp_8 = _axi_araddr; |
| 120 | + wire [32-1:0] _tmp_9; |
| 121 | + assign _tmp_9 = _axi_araddr; |
121 | 122 |
|
122 | 123 | always @(*) begin |
123 | | - myaxi_araddr = _tmp_8; |
| 124 | + myaxi_araddr = _tmp_9; |
124 | 125 | end |
125 | 126 |
|
126 | | - wire [4-1:0] _tmp_9; |
127 | | - assign _tmp_9 = _axi_arcache; |
| 127 | + wire [4-1:0] _tmp_10; |
| 128 | + assign _tmp_10 = _axi_arcache; |
128 | 129 |
|
129 | 130 | always @(*) begin |
130 | | - myaxi_arcache = _tmp_9; |
| 131 | + myaxi_arcache = _tmp_10; |
131 | 132 | end |
132 | 133 |
|
133 | | - wire [3-1:0] _tmp_10; |
134 | | - assign _tmp_10 = _axi_arprot; |
| 134 | + wire [3-1:0] _tmp_11; |
| 135 | + assign _tmp_11 = _axi_arprot; |
135 | 136 |
|
136 | 137 | always @(*) begin |
137 | | - myaxi_arprot = _tmp_10; |
| 138 | + myaxi_arprot = _tmp_11; |
138 | 139 | end |
139 | 140 |
|
140 | | - wire _tmp_11; |
141 | | - assign _tmp_11 = _axi_arvalid; |
| 141 | + wire _tmp_12; |
| 142 | + assign _tmp_12 = _axi_arvalid; |
142 | 143 |
|
143 | 144 | always @(*) begin |
144 | | - myaxi_arvalid = _tmp_11; |
| 145 | + myaxi_arvalid = _tmp_12; |
145 | 146 | end |
146 | 147 |
|
147 | 148 | assign _axi_arready = myaxi_arready; |
148 | 149 | assign _axi_rdata = myaxi_rdata; |
149 | 150 | assign _axi_rresp = myaxi_rresp; |
150 | 151 | assign _axi_rvalid = myaxi_rvalid; |
151 | | - wire _tmp_12; |
152 | | - assign _tmp_12 = _axi_rready; |
| 152 | + wire _tmp_13; |
| 153 | + assign _tmp_13 = _axi_rready; |
153 | 154 |
|
154 | 155 | always @(*) begin |
155 | | - myaxi_rready = _tmp_12; |
| 156 | + myaxi_rready = _tmp_13; |
156 | 157 | end |
157 | 158 |
|
158 | 159 | reg [32-1:0] read_fsm; |
|
216 | 217 | _axi_wvalid = 0; |
217 | 218 | _axi_araddr = 0; |
218 | 219 | _axi_arvalid = 0; |
| 220 | + outstanding_wreq_count_0 = 0; |
219 | 221 | read_fsm = read_fsm_init; |
220 | 222 | rsum = 0; |
221 | 223 | __axi_cond_0_1 = 0; |
|
237 | 239 |
|
238 | 240 | always @(posedge CLK) begin |
239 | 241 | if(RST) begin |
| 242 | + outstanding_wreq_count_0 <= 0; |
240 | 243 | _axi_araddr <= 0; |
241 | 244 | _axi_arvalid <= 0; |
242 | 245 | __axi_cond_0_1 <= 0; |
|
269 | 272 | if(__axi_cond_5_1) begin |
270 | 273 | _axi_wvalid <= 0; |
271 | 274 | end |
| 275 | + if(_axi_awvalid && _axi_awready && !(_axi_bvalid && _axi_bready)) begin |
| 276 | + outstanding_wreq_count_0 <= outstanding_wreq_count_0 + 1; |
| 277 | + end |
| 278 | + if(!(_axi_awvalid && _axi_awready) && (_axi_bvalid && _axi_bready) && (outstanding_wreq_count_0 > 0)) begin |
| 279 | + outstanding_wreq_count_0 <= outstanding_wreq_count_0 - 1; |
| 280 | + end |
272 | 281 | if((read_fsm == 0) && (_axi_arready || !_axi_arvalid)) begin |
273 | 282 | _axi_araddr <= 1024; |
274 | 283 | _axi_arvalid <= 1; |
|
487 | 496 | assign myaxi_rresp = 0; |
488 | 497 | reg [32-1:0] fsm; |
489 | 498 | localparam fsm_init = 0; |
490 | | - reg [32-1:0] _tmp_0; |
491 | | - reg _tmp_1; |
492 | | - reg _tmp_2; |
493 | | - reg _tmp_3; |
494 | | - reg _tmp_4; |
495 | | - assign myaxi_awready = (fsm == 0) && (!_tmp_1 && !_tmp_2 && !myaxi_bvalid && _tmp_3); |
496 | | - assign myaxi_arready = (fsm == 0) && (!_tmp_2 && !_tmp_1 && _tmp_4 && !_tmp_3); |
| 499 | + reg [32-1:0] addr_0; |
| 500 | + reg writevalid_1; |
| 501 | + reg readvalid_2; |
| 502 | + reg prev_awvalid_3; |
| 503 | + reg prev_arvalid_4; |
| 504 | + assign myaxi_awready = (fsm == 0) && (!writevalid_1 && !readvalid_2 && !myaxi_bvalid && prev_awvalid_3); |
| 505 | + assign myaxi_arready = (fsm == 0) && (!readvalid_2 && !writevalid_1 && prev_arvalid_4 && !prev_awvalid_3); |
497 | 506 | reg [32-1:0] rdata; |
498 | 507 | reg _myaxi_cond_0_1; |
499 | 508 | assign myaxi_wready = fsm == 100; |
500 | 509 |
|
501 | 510 | always @(posedge CLK) begin |
502 | 511 | if(RST) begin |
503 | 512 | myaxi_bvalid <= 0; |
504 | | - _tmp_3 <= 0; |
505 | | - _tmp_4 <= 0; |
506 | | - _tmp_1 <= 0; |
507 | | - _tmp_2 <= 0; |
508 | | - _tmp_0 <= 0; |
| 513 | + prev_awvalid_3 <= 0; |
| 514 | + prev_arvalid_4 <= 0; |
| 515 | + writevalid_1 <= 0; |
| 516 | + readvalid_2 <= 0; |
| 517 | + addr_0 <= 0; |
509 | 518 | myaxi_rdata <= 0; |
510 | 519 | myaxi_rvalid <= 0; |
511 | 520 | _myaxi_cond_0_1 <= 0; |
|
519 | 528 | if(myaxi_wvalid && myaxi_wready) begin |
520 | 529 | myaxi_bvalid <= 1; |
521 | 530 | end |
522 | | - _tmp_3 <= myaxi_awvalid; |
523 | | - _tmp_4 <= myaxi_arvalid; |
524 | | - _tmp_1 <= 0; |
525 | | - _tmp_2 <= 0; |
| 531 | + prev_awvalid_3 <= myaxi_awvalid; |
| 532 | + prev_arvalid_4 <= myaxi_arvalid; |
| 533 | + writevalid_1 <= 0; |
| 534 | + readvalid_2 <= 0; |
526 | 535 | if(myaxi_awready && myaxi_awvalid && !myaxi_bvalid) begin |
527 | | - _tmp_0 <= myaxi_awaddr; |
528 | | - _tmp_1 <= 1; |
| 536 | + addr_0 <= myaxi_awaddr; |
| 537 | + writevalid_1 <= 1; |
529 | 538 | end else if(myaxi_arready && myaxi_arvalid) begin |
530 | | - _tmp_0 <= myaxi_araddr; |
531 | | - _tmp_2 <= 1; |
| 539 | + addr_0 <= myaxi_araddr; |
| 540 | + readvalid_2 <= 1; |
532 | 541 | end |
533 | 542 | if((fsm == 1) && (myaxi_rready || !myaxi_rvalid)) begin |
534 | 543 | myaxi_rdata <= rdata; |
|
554 | 563 | end else begin |
555 | 564 | case(fsm) |
556 | 565 | fsm_init: begin |
557 | | - if(_tmp_2) begin |
558 | | - rdata <= _tmp_0 >> 2; |
| 566 | + if(readvalid_2) begin |
| 567 | + rdata <= addr_0 >> 2; |
559 | 568 | end |
560 | | - if(_tmp_1) begin |
| 569 | + if(writevalid_1) begin |
561 | 570 | fsm <= fsm_100; |
562 | 571 | end |
563 | | - if(_tmp_2) begin |
| 572 | + if(readvalid_2) begin |
564 | 573 | fsm <= fsm_1; |
565 | 574 | end |
566 | 575 | end |
|
0 commit comments