rtrevinnoc commited on
Commit
8879ccc
·
verified ·
1 Parent(s): 651502a

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. myproject_prj/solution1/impl/verilog/myproject_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s.v +0 -0
  2. myproject_prj/solution1/impl/verilog/myproject_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config35_s.v +397 -0
  3. myproject_prj/solution1/impl/verilog/myproject_conv_2d_cl_array_array_ap_fixed_41_21_5_3_0_32u_config12_s.v +373 -0
  4. myproject_prj/solution1/impl/verilog/myproject_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_64u_config19_s.v +517 -0
  5. myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_37_17_5_3_0_config2_mult_s_oudEe.v +42 -0
  6. myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_w14_ROM_NP_BRdlF.dat +576 -0
  7. myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_w14_ROM_NP_BRdlF.v +42 -0
  8. myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_36_16_5_3_0_config58_mult_s.v +648 -0
  9. myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config12_mult_s_w12_Rcgu.v +42 -0
  10. myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbrm.v +42 -0
  11. myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbtn.v +42 -0
  12. myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_42_22_5_3_0_config14_mult_s.v +0 -0
  13. myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_42_22_5_3_0_config14_mult_s_w14_RdjF.v +42 -0
  14. myproject_prj/solution1/impl/verilog/myproject_fifo_w1376_d256_A.v +237 -0
  15. myproject_prj/solution1/impl/verilog/myproject_fifo_w1536_d256_A.v +237 -0
  16. myproject_prj/solution1/impl/verilog/myproject_fifo_w16_d4096_A.v +237 -0
  17. myproject_prj/solution1/impl/verilog/myproject_fifo_w16_d64_S.v +155 -0
  18. myproject_prj/solution1/impl/verilog/myproject_fifo_w320_d4096_A.v +237 -0
  19. myproject_prj/solution1/impl/verilog/myproject_fifo_w328_d4096_A.v +237 -0
  20. myproject_prj/solution1/impl/verilog/myproject_fifo_w36_d4096_A.v +237 -0
  21. myproject_prj/solution1/impl/verilog/myproject_fifo_w384_d4096_A.v +237 -0
  22. myproject_prj/solution1/impl/verilog/myproject_fifo_w512_d256_A.v +237 -0
  23. myproject_prj/solution1/impl/verilog/myproject_fifo_w768_d1024_A.v +237 -0
  24. myproject_prj/solution1/impl/verilog/myproject_flow_control_loop_pipe_no_ap_cont.v +104 -0
  25. myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_10s_33s_33_1_1.v +66 -0
  26. myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_16s_33s_33_1_1.v +66 -0
  27. myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_16s_40s_41_1_1.v +66 -0
  28. myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_16s_41s_42_1_1.v +66 -0
  29. myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_9s_31s_31_1_1.v +66 -0
  30. myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_9s_34s_34_1_1.v +66 -0
  31. myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_9s_43s_44_1_1.v +66 -0
  32. myproject_prj/solution1/impl/verilog/myproject_mul_16s_16s_32_1_1.v +75 -0
  33. myproject_prj/solution1/impl/verilog/myproject_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config30_s.v +473 -0
  34. myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_1u_config2_s.v +352 -0
  35. myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_24u_config35_s.v +0 -0
  36. myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_32u_config17_s_p_ZZN4nnet26conv_2dOK.v +88 -0
  37. myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_48u_config29_s.v +0 -0
  38. myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_8u_config7_s.v +0 -0
  39. myproject_prj/solution1/impl/verilog/myproject_start_for_clone_stream_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_16384oqc.v +151 -0
  40. myproject_prj/solution1/impl/verilog/myproject_start_for_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config3ozc.v +151 -0
  41. myproject_prj/solution1/impl/verilog/myproject_start_for_conv_2d_cl_array_ap_fixed_8u_array_ap_fixed_40_20_5_3_0_16u_config7okc.v +151 -0
  42. myproject_prj/solution1/impl/verilog/myproject_start_for_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_32u_config23_U0.v +151 -0
  43. myproject_prj/solution1/impl/verilog/myproject_start_for_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config32ovc.v +151 -0
  44. myproject_prj/solution1/impl/verilog/myproject_start_for_zeropad2d_cl_array_ap_fixed_1u_array_ap_fixed_16_6_5_3_0_1u_config4ohc.v +151 -0
  45. myproject_prj/solution1/impl/verilog/myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config50_U0.v +151 -0
  46. myproject_prj/solution1/impl/verilog/myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config52_U0.v +151 -0
  47. myproject_prj/solution1/impl/verilog/myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_48u_config56_U0.v +151 -0
  48. myproject_prj/solution1/impl/verilog/myproject_transpose_array_array_ap_fixed_1u_config41_Pipeline_VITIS_LOOP_45_1.v +230 -0
  49. myproject_prj/solution1/impl/verilog/myproject_zeropad2d_cl_array_ap_fixed_8u_array_ap_fixed_16_6_5_3_0_8u_config47_s.v +430 -0
  50. myproject_prj/solution1/impl/verilog/myproject_zeropad2d_cl_array_ap_fixed_8u_array_ap_fixed_16_6_5_3_0_8u_config48_s.v +430 -0
myproject_prj/solution1/impl/verilog/myproject_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/impl/verilog/myproject_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config35_s.v ADDED
@@ -0,0 +1,397 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config35_s (
10
+ ap_clk,
11
+ ap_rst,
12
+ ap_start,
13
+ start_full_n,
14
+ ap_done,
15
+ ap_continue,
16
+ ap_idle,
17
+ ap_ready,
18
+ start_out,
19
+ start_write,
20
+ layer58_out_dout,
21
+ layer58_out_num_data_valid,
22
+ layer58_out_fifo_cap,
23
+ layer58_out_empty_n,
24
+ layer58_out_read,
25
+ layer35_out_din,
26
+ layer35_out_num_data_valid,
27
+ layer35_out_fifo_cap,
28
+ layer35_out_full_n,
29
+ layer35_out_write
30
+ );
31
+
32
+ parameter ap_ST_fsm_state1 = 3'd1;
33
+ parameter ap_ST_fsm_state2 = 3'd2;
34
+ parameter ap_ST_fsm_state3 = 3'd4;
35
+
36
+ input ap_clk;
37
+ input ap_rst;
38
+ input ap_start;
39
+ input start_full_n;
40
+ output ap_done;
41
+ input ap_continue;
42
+ output ap_idle;
43
+ output ap_ready;
44
+ output start_out;
45
+ output start_write;
46
+ input [383:0] layer58_out_dout;
47
+ input [13:0] layer58_out_num_data_valid;
48
+ input [13:0] layer58_out_fifo_cap;
49
+ input layer58_out_empty_n;
50
+ output layer58_out_read;
51
+ output [327:0] layer35_out_din;
52
+ input [12:0] layer35_out_num_data_valid;
53
+ input [12:0] layer35_out_fifo_cap;
54
+ input layer35_out_full_n;
55
+ output layer35_out_write;
56
+
57
+ reg ap_done;
58
+ reg ap_idle;
59
+ reg start_write;
60
+ reg layer35_out_write;
61
+
62
+ reg real_start;
63
+ reg start_once_reg;
64
+ reg ap_done_reg;
65
+ (* fsm_encoding = "none" *) reg [2:0] ap_CS_fsm;
66
+ wire ap_CS_fsm_state1;
67
+ reg internal_ap_ready;
68
+ reg layer58_out_blk_n;
69
+ wire ap_CS_fsm_state2;
70
+ wire [0:0] icmp_ln52_fu_1252_p2;
71
+ wire [15:0] trunc_ln58_fu_1264_p1;
72
+ reg [15:0] trunc_ln58_reg_1537;
73
+ reg ap_block_state2;
74
+ reg [15:0] trunc_ln58_s_reg_1542;
75
+ reg [15:0] trunc_ln58_10_reg_1547;
76
+ reg [15:0] trunc_ln58_11_reg_1552;
77
+ reg [15:0] trunc_ln58_12_reg_1557;
78
+ reg [15:0] trunc_ln58_13_reg_1562;
79
+ reg [15:0] trunc_ln58_14_reg_1567;
80
+ reg [15:0] trunc_ln58_15_reg_1572;
81
+ reg [15:0] trunc_ln58_16_reg_1577;
82
+ reg [15:0] trunc_ln58_17_reg_1582;
83
+ reg [15:0] trunc_ln58_18_reg_1587;
84
+ reg [15:0] trunc_ln58_19_reg_1592;
85
+ reg [15:0] trunc_ln58_20_reg_1597;
86
+ reg [15:0] trunc_ln58_21_reg_1602;
87
+ reg [15:0] trunc_ln58_22_reg_1607;
88
+ reg [15:0] trunc_ln58_23_reg_1612;
89
+ reg [15:0] trunc_ln58_24_reg_1617;
90
+ reg [15:0] trunc_ln58_25_reg_1622;
91
+ reg [15:0] trunc_ln58_26_reg_1627;
92
+ reg [15:0] trunc_ln58_27_reg_1632;
93
+ reg [15:0] trunc_ln58_28_reg_1637;
94
+ reg [15:0] trunc_ln58_29_reg_1642;
95
+ reg [15:0] trunc_ln58_30_reg_1647;
96
+ reg [15:0] trunc_ln58_31_reg_1652;
97
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_start;
98
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_done;
99
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_idle;
100
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_ready;
101
+ wire [327:0] grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_layer35_out_din;
102
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_layer35_out_write;
103
+ reg grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_start_reg;
104
+ reg ap_block_state2_ignore_call27;
105
+ wire ap_CS_fsm_state3;
106
+ reg [12:0] indvar_flatten_fu_666;
107
+ wire [12:0] add_ln52_fu_1258_p2;
108
+ reg ap_block_state1;
109
+ reg layer58_out_read_local;
110
+ reg [2:0] ap_NS_fsm;
111
+ reg ap_ST_fsm_state1_blk;
112
+ reg ap_ST_fsm_state2_blk;
113
+ reg ap_ST_fsm_state3_blk;
114
+ wire ap_ce_reg;
115
+
116
+ // power-on initialization
117
+ initial begin
118
+ #0 start_once_reg = 1'b0;
119
+ #0 ap_done_reg = 1'b0;
120
+ #0 ap_CS_fsm = 3'd1;
121
+ #0 grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_start_reg = 1'b0;
122
+ #0 indvar_flatten_fu_666 = 13'd0;
123
+ end
124
+
125
+ myproject_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676(
126
+ .ap_clk(ap_clk),
127
+ .ap_rst(ap_rst),
128
+ .ap_start(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_start),
129
+ .ap_done(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_done),
130
+ .ap_idle(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_idle),
131
+ .ap_ready(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_ready),
132
+ .p_read(trunc_ln58_reg_1537),
133
+ .p_read1(trunc_ln58_s_reg_1542),
134
+ .p_read2(trunc_ln58_10_reg_1547),
135
+ .p_read3(trunc_ln58_11_reg_1552),
136
+ .p_read4(trunc_ln58_12_reg_1557),
137
+ .p_read5(trunc_ln58_13_reg_1562),
138
+ .p_read6(trunc_ln58_14_reg_1567),
139
+ .p_read7(trunc_ln58_15_reg_1572),
140
+ .p_read8(trunc_ln58_16_reg_1577),
141
+ .p_read9(trunc_ln58_17_reg_1582),
142
+ .p_read10(trunc_ln58_18_reg_1587),
143
+ .p_read11(trunc_ln58_19_reg_1592),
144
+ .p_read12(trunc_ln58_20_reg_1597),
145
+ .p_read13(trunc_ln58_21_reg_1602),
146
+ .p_read14(trunc_ln58_22_reg_1607),
147
+ .p_read15(trunc_ln58_23_reg_1612),
148
+ .p_read16(trunc_ln58_24_reg_1617),
149
+ .p_read17(trunc_ln58_25_reg_1622),
150
+ .p_read18(trunc_ln58_26_reg_1627),
151
+ .p_read19(trunc_ln58_27_reg_1632),
152
+ .p_read20(trunc_ln58_28_reg_1637),
153
+ .p_read21(trunc_ln58_29_reg_1642),
154
+ .p_read22(trunc_ln58_30_reg_1647),
155
+ .p_read23(trunc_ln58_31_reg_1652),
156
+ .layer35_out_din(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_layer35_out_din),
157
+ .layer35_out_num_data_valid(13'd0),
158
+ .layer35_out_fifo_cap(13'd0),
159
+ .layer35_out_full_n(layer35_out_full_n),
160
+ .layer35_out_write(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_layer35_out_write)
161
+ );
162
+
163
+ always @ (posedge ap_clk) begin
164
+ if (ap_rst == 1'b1) begin
165
+ ap_CS_fsm <= ap_ST_fsm_state1;
166
+ end else begin
167
+ ap_CS_fsm <= ap_NS_fsm;
168
+ end
169
+ end
170
+
171
+ always @ (posedge ap_clk) begin
172
+ if (ap_rst == 1'b1) begin
173
+ ap_done_reg <= 1'b0;
174
+ end else begin
175
+ if ((ap_continue == 1'b1)) begin
176
+ ap_done_reg <= 1'b0;
177
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_1252_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
178
+ ap_done_reg <= 1'b1;
179
+ end
180
+ end
181
+ end
182
+
183
+ always @ (posedge ap_clk) begin
184
+ if (ap_rst == 1'b1) begin
185
+ grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_start_reg <= 1'b0;
186
+ end else begin
187
+ if (((1'b0 == ap_block_state2_ignore_call27) & (icmp_ln52_fu_1252_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
188
+ grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_start_reg <= 1'b1;
189
+ end else if ((grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_ready == 1'b1)) begin
190
+ grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_start_reg <= 1'b0;
191
+ end
192
+ end
193
+ end
194
+
195
+ always @ (posedge ap_clk) begin
196
+ if (ap_rst == 1'b1) begin
197
+ start_once_reg <= 1'b0;
198
+ end else begin
199
+ if (((real_start == 1'b1) & (internal_ap_ready == 1'b0))) begin
200
+ start_once_reg <= 1'b1;
201
+ end else if ((internal_ap_ready == 1'b1)) begin
202
+ start_once_reg <= 1'b0;
203
+ end
204
+ end
205
+ end
206
+
207
+ always @ (posedge ap_clk) begin
208
+ if (((1'b0 == ap_block_state1) & (1'b1 == ap_CS_fsm_state1))) begin
209
+ indvar_flatten_fu_666 <= 13'd0;
210
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_1252_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
211
+ indvar_flatten_fu_666 <= add_ln52_fu_1258_p2;
212
+ end
213
+ end
214
+
215
+ always @ (posedge ap_clk) begin
216
+ if (((1'b0 == ap_block_state2) & (1'b1 == ap_CS_fsm_state2))) begin
217
+ trunc_ln58_10_reg_1547 <= {{layer58_out_dout[47:32]}};
218
+ trunc_ln58_11_reg_1552 <= {{layer58_out_dout[63:48]}};
219
+ trunc_ln58_12_reg_1557 <= {{layer58_out_dout[79:64]}};
220
+ trunc_ln58_13_reg_1562 <= {{layer58_out_dout[95:80]}};
221
+ trunc_ln58_14_reg_1567 <= {{layer58_out_dout[111:96]}};
222
+ trunc_ln58_15_reg_1572 <= {{layer58_out_dout[127:112]}};
223
+ trunc_ln58_16_reg_1577 <= {{layer58_out_dout[143:128]}};
224
+ trunc_ln58_17_reg_1582 <= {{layer58_out_dout[159:144]}};
225
+ trunc_ln58_18_reg_1587 <= {{layer58_out_dout[175:160]}};
226
+ trunc_ln58_19_reg_1592 <= {{layer58_out_dout[191:176]}};
227
+ trunc_ln58_20_reg_1597 <= {{layer58_out_dout[207:192]}};
228
+ trunc_ln58_21_reg_1602 <= {{layer58_out_dout[223:208]}};
229
+ trunc_ln58_22_reg_1607 <= {{layer58_out_dout[239:224]}};
230
+ trunc_ln58_23_reg_1612 <= {{layer58_out_dout[255:240]}};
231
+ trunc_ln58_24_reg_1617 <= {{layer58_out_dout[271:256]}};
232
+ trunc_ln58_25_reg_1622 <= {{layer58_out_dout[287:272]}};
233
+ trunc_ln58_26_reg_1627 <= {{layer58_out_dout[303:288]}};
234
+ trunc_ln58_27_reg_1632 <= {{layer58_out_dout[319:304]}};
235
+ trunc_ln58_28_reg_1637 <= {{layer58_out_dout[335:320]}};
236
+ trunc_ln58_29_reg_1642 <= {{layer58_out_dout[351:336]}};
237
+ trunc_ln58_30_reg_1647 <= {{layer58_out_dout[367:352]}};
238
+ trunc_ln58_31_reg_1652 <= {{layer58_out_dout[383:368]}};
239
+ trunc_ln58_reg_1537 <= trunc_ln58_fu_1264_p1;
240
+ trunc_ln58_s_reg_1542 <= {{layer58_out_dout[31:16]}};
241
+ end
242
+ end
243
+
244
+ always @ (*) begin
245
+ if ((1'b1 == ap_block_state1)) begin
246
+ ap_ST_fsm_state1_blk = 1'b1;
247
+ end else begin
248
+ ap_ST_fsm_state1_blk = 1'b0;
249
+ end
250
+ end
251
+
252
+ always @ (*) begin
253
+ if ((1'b1 == ap_block_state2)) begin
254
+ ap_ST_fsm_state2_blk = 1'b1;
255
+ end else begin
256
+ ap_ST_fsm_state2_blk = 1'b0;
257
+ end
258
+ end
259
+
260
+ always @ (*) begin
261
+ if ((grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_done == 1'b0)) begin
262
+ ap_ST_fsm_state3_blk = 1'b1;
263
+ end else begin
264
+ ap_ST_fsm_state3_blk = 1'b0;
265
+ end
266
+ end
267
+
268
+ always @ (*) begin
269
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_1252_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
270
+ ap_done = 1'b1;
271
+ end else begin
272
+ ap_done = ap_done_reg;
273
+ end
274
+ end
275
+
276
+ always @ (*) begin
277
+ if (((real_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin
278
+ ap_idle = 1'b1;
279
+ end else begin
280
+ ap_idle = 1'b0;
281
+ end
282
+ end
283
+
284
+ always @ (*) begin
285
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_1252_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
286
+ internal_ap_ready = 1'b1;
287
+ end else begin
288
+ internal_ap_ready = 1'b0;
289
+ end
290
+ end
291
+
292
+ always @ (*) begin
293
+ if ((1'b1 == ap_CS_fsm_state3)) begin
294
+ layer35_out_write = grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_layer35_out_write;
295
+ end else begin
296
+ layer35_out_write = 1'b0;
297
+ end
298
+ end
299
+
300
+ always @ (*) begin
301
+ if (((icmp_ln52_fu_1252_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
302
+ layer58_out_blk_n = layer58_out_empty_n;
303
+ end else begin
304
+ layer58_out_blk_n = 1'b1;
305
+ end
306
+ end
307
+
308
+ always @ (*) begin
309
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_1252_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
310
+ layer58_out_read_local = 1'b1;
311
+ end else begin
312
+ layer58_out_read_local = 1'b0;
313
+ end
314
+ end
315
+
316
+ always @ (*) begin
317
+ if (((start_once_reg == 1'b0) & (start_full_n == 1'b0))) begin
318
+ real_start = 1'b0;
319
+ end else begin
320
+ real_start = ap_start;
321
+ end
322
+ end
323
+
324
+ always @ (*) begin
325
+ if (((real_start == 1'b1) & (start_once_reg == 1'b0))) begin
326
+ start_write = 1'b1;
327
+ end else begin
328
+ start_write = 1'b0;
329
+ end
330
+ end
331
+
332
+ always @ (*) begin
333
+ case (ap_CS_fsm)
334
+ ap_ST_fsm_state1 : begin
335
+ if (((1'b0 == ap_block_state1) & (1'b1 == ap_CS_fsm_state1))) begin
336
+ ap_NS_fsm = ap_ST_fsm_state2;
337
+ end else begin
338
+ ap_NS_fsm = ap_ST_fsm_state1;
339
+ end
340
+ end
341
+ ap_ST_fsm_state2 : begin
342
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_1252_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
343
+ ap_NS_fsm = ap_ST_fsm_state1;
344
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_1252_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
345
+ ap_NS_fsm = ap_ST_fsm_state3;
346
+ end else begin
347
+ ap_NS_fsm = ap_ST_fsm_state2;
348
+ end
349
+ end
350
+ ap_ST_fsm_state3 : begin
351
+ if (((1'b1 == ap_CS_fsm_state3) & (grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_done == 1'b1))) begin
352
+ ap_NS_fsm = ap_ST_fsm_state2;
353
+ end else begin
354
+ ap_NS_fsm = ap_ST_fsm_state3;
355
+ end
356
+ end
357
+ default : begin
358
+ ap_NS_fsm = 'bx;
359
+ end
360
+ endcase
361
+ end
362
+
363
+ assign add_ln52_fu_1258_p2 = (indvar_flatten_fu_666 + 13'd1);
364
+
365
+ assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];
366
+
367
+ assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1];
368
+
369
+ assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2];
370
+
371
+ always @ (*) begin
372
+ ap_block_state1 = ((real_start == 1'b0) | (ap_done_reg == 1'b1));
373
+ end
374
+
375
+ always @ (*) begin
376
+ ap_block_state2 = ((icmp_ln52_fu_1252_p2 == 1'd0) & (layer58_out_empty_n == 1'b0));
377
+ end
378
+
379
+ always @ (*) begin
380
+ ap_block_state2_ignore_call27 = ((icmp_ln52_fu_1252_p2 == 1'd0) & (layer58_out_empty_n == 1'b0));
381
+ end
382
+
383
+ assign ap_ready = internal_ap_ready;
384
+
385
+ assign grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_start = grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_ap_start_reg;
386
+
387
+ assign icmp_ln52_fu_1252_p2 = ((indvar_flatten_fu_666 == 13'd4356) ? 1'b1 : 1'b0);
388
+
389
+ assign layer35_out_din = grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s_fu_676_layer35_out_din;
390
+
391
+ assign layer58_out_read = layer58_out_read_local;
392
+
393
+ assign start_out = real_start;
394
+
395
+ assign trunc_ln58_fu_1264_p1 = layer58_out_dout[15:0];
396
+
397
+ endmodule //myproject_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config35_s
myproject_prj/solution1/impl/verilog/myproject_conv_2d_cl_array_array_ap_fixed_41_21_5_3_0_32u_config12_s.v ADDED
@@ -0,0 +1,373 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_conv_2d_cl_array_array_ap_fixed_41_21_5_3_0_32u_config12_s (
10
+ ap_clk,
11
+ ap_rst,
12
+ ap_start,
13
+ start_full_n,
14
+ ap_done,
15
+ ap_continue,
16
+ ap_idle,
17
+ ap_ready,
18
+ start_out,
19
+ start_write,
20
+ layer50_out_dout,
21
+ layer50_out_num_data_valid,
22
+ layer50_out_fifo_cap,
23
+ layer50_out_empty_n,
24
+ layer50_out_read,
25
+ layer12_out_din,
26
+ layer12_out_num_data_valid,
27
+ layer12_out_fifo_cap,
28
+ layer12_out_full_n,
29
+ layer12_out_write
30
+ );
31
+
32
+ parameter ap_ST_fsm_state1 = 3'd1;
33
+ parameter ap_ST_fsm_state2 = 3'd2;
34
+ parameter ap_ST_fsm_state3 = 3'd4;
35
+
36
+ input ap_clk;
37
+ input ap_rst;
38
+ input ap_start;
39
+ input start_full_n;
40
+ output ap_done;
41
+ input ap_continue;
42
+ output ap_idle;
43
+ output ap_ready;
44
+ output start_out;
45
+ output start_write;
46
+ input [255:0] layer50_out_dout;
47
+ input [9:0] layer50_out_num_data_valid;
48
+ input [9:0] layer50_out_fifo_cap;
49
+ input layer50_out_empty_n;
50
+ output layer50_out_read;
51
+ output [1311:0] layer12_out_din;
52
+ input [8:0] layer12_out_num_data_valid;
53
+ input [8:0] layer12_out_fifo_cap;
54
+ input layer12_out_full_n;
55
+ output layer12_out_write;
56
+
57
+ reg ap_done;
58
+ reg ap_idle;
59
+ reg start_write;
60
+ reg layer12_out_write;
61
+
62
+ reg real_start;
63
+ reg start_once_reg;
64
+ reg ap_done_reg;
65
+ (* fsm_encoding = "none" *) reg [2:0] ap_CS_fsm;
66
+ wire ap_CS_fsm_state1;
67
+ reg internal_ap_ready;
68
+ reg layer50_out_blk_n;
69
+ wire ap_CS_fsm_state2;
70
+ wire [0:0] icmp_ln52_fu_860_p2;
71
+ wire [15:0] trunc_ln58_fu_872_p1;
72
+ reg [15:0] trunc_ln58_reg_1057;
73
+ reg ap_block_state2;
74
+ reg [15:0] trunc_ln58_s_reg_1062;
75
+ reg [15:0] trunc_ln58_226_reg_1067;
76
+ reg [15:0] trunc_ln58_227_reg_1072;
77
+ reg [15:0] trunc_ln58_228_reg_1077;
78
+ reg [15:0] trunc_ln58_229_reg_1082;
79
+ reg [15:0] trunc_ln58_230_reg_1087;
80
+ reg [15:0] trunc_ln58_231_reg_1092;
81
+ reg [15:0] trunc_ln58_232_reg_1097;
82
+ reg [15:0] trunc_ln58_233_reg_1102;
83
+ reg [15:0] trunc_ln58_234_reg_1107;
84
+ reg [15:0] trunc_ln58_235_reg_1112;
85
+ reg [15:0] trunc_ln58_236_reg_1117;
86
+ reg [15:0] trunc_ln58_237_reg_1122;
87
+ reg [15:0] trunc_ln58_238_reg_1127;
88
+ reg [15:0] trunc_ln58_239_reg_1132;
89
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_start;
90
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_done;
91
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_idle;
92
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_ready;
93
+ wire [1311:0] grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_layer12_out_din;
94
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_layer12_out_write;
95
+ reg grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_start_reg;
96
+ reg ap_block_state2_ignore_call19;
97
+ wire ap_CS_fsm_state3;
98
+ reg [8:0] indvar_flatten_fu_458;
99
+ wire [8:0] add_ln52_fu_866_p2;
100
+ reg ap_block_state1;
101
+ reg layer50_out_read_local;
102
+ reg [2:0] ap_NS_fsm;
103
+ reg ap_ST_fsm_state1_blk;
104
+ reg ap_ST_fsm_state2_blk;
105
+ reg ap_ST_fsm_state3_blk;
106
+ wire ap_ce_reg;
107
+
108
+ // power-on initialization
109
+ initial begin
110
+ #0 start_once_reg = 1'b0;
111
+ #0 ap_done_reg = 1'b0;
112
+ #0 ap_CS_fsm = 3'd1;
113
+ #0 grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_start_reg = 1'b0;
114
+ #0 indvar_flatten_fu_458 = 9'd0;
115
+ end
116
+
117
+ myproject_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468(
118
+ .ap_clk(ap_clk),
119
+ .ap_rst(ap_rst),
120
+ .ap_start(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_start),
121
+ .ap_done(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_done),
122
+ .ap_idle(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_idle),
123
+ .ap_ready(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_ready),
124
+ .p_read(trunc_ln58_reg_1057),
125
+ .p_read1(trunc_ln58_s_reg_1062),
126
+ .p_read2(trunc_ln58_226_reg_1067),
127
+ .p_read3(trunc_ln58_227_reg_1072),
128
+ .p_read4(trunc_ln58_228_reg_1077),
129
+ .p_read5(trunc_ln58_229_reg_1082),
130
+ .p_read6(trunc_ln58_230_reg_1087),
131
+ .p_read7(trunc_ln58_231_reg_1092),
132
+ .p_read8(trunc_ln58_232_reg_1097),
133
+ .p_read9(trunc_ln58_233_reg_1102),
134
+ .p_read10(trunc_ln58_234_reg_1107),
135
+ .p_read11(trunc_ln58_235_reg_1112),
136
+ .p_read12(trunc_ln58_236_reg_1117),
137
+ .p_read13(trunc_ln58_237_reg_1122),
138
+ .p_read14(trunc_ln58_238_reg_1127),
139
+ .p_read15(trunc_ln58_239_reg_1132),
140
+ .layer12_out_din(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_layer12_out_din),
141
+ .layer12_out_num_data_valid(9'd0),
142
+ .layer12_out_fifo_cap(9'd0),
143
+ .layer12_out_full_n(layer12_out_full_n),
144
+ .layer12_out_write(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_layer12_out_write)
145
+ );
146
+
147
+ always @ (posedge ap_clk) begin
148
+ if (ap_rst == 1'b1) begin
149
+ ap_CS_fsm <= ap_ST_fsm_state1;
150
+ end else begin
151
+ ap_CS_fsm <= ap_NS_fsm;
152
+ end
153
+ end
154
+
155
+ always @ (posedge ap_clk) begin
156
+ if (ap_rst == 1'b1) begin
157
+ ap_done_reg <= 1'b0;
158
+ end else begin
159
+ if ((ap_continue == 1'b1)) begin
160
+ ap_done_reg <= 1'b0;
161
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_860_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
162
+ ap_done_reg <= 1'b1;
163
+ end
164
+ end
165
+ end
166
+
167
+ always @ (posedge ap_clk) begin
168
+ if (ap_rst == 1'b1) begin
169
+ grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_start_reg <= 1'b0;
170
+ end else begin
171
+ if (((1'b0 == ap_block_state2_ignore_call19) & (icmp_ln52_fu_860_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
172
+ grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_start_reg <= 1'b1;
173
+ end else if ((grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_ready == 1'b1)) begin
174
+ grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_start_reg <= 1'b0;
175
+ end
176
+ end
177
+ end
178
+
179
+ always @ (posedge ap_clk) begin
180
+ if (ap_rst == 1'b1) begin
181
+ start_once_reg <= 1'b0;
182
+ end else begin
183
+ if (((real_start == 1'b1) & (internal_ap_ready == 1'b0))) begin
184
+ start_once_reg <= 1'b1;
185
+ end else if ((internal_ap_ready == 1'b1)) begin
186
+ start_once_reg <= 1'b0;
187
+ end
188
+ end
189
+ end
190
+
191
+ always @ (posedge ap_clk) begin
192
+ if (((1'b0 == ap_block_state1) & (1'b1 == ap_CS_fsm_state1))) begin
193
+ indvar_flatten_fu_458 <= 9'd0;
194
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_860_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
195
+ indvar_flatten_fu_458 <= add_ln52_fu_866_p2;
196
+ end
197
+ end
198
+
199
+ always @ (posedge ap_clk) begin
200
+ if (((1'b0 == ap_block_state2) & (1'b1 == ap_CS_fsm_state2))) begin
201
+ trunc_ln58_226_reg_1067 <= {{layer50_out_dout[47:32]}};
202
+ trunc_ln58_227_reg_1072 <= {{layer50_out_dout[63:48]}};
203
+ trunc_ln58_228_reg_1077 <= {{layer50_out_dout[79:64]}};
204
+ trunc_ln58_229_reg_1082 <= {{layer50_out_dout[95:80]}};
205
+ trunc_ln58_230_reg_1087 <= {{layer50_out_dout[111:96]}};
206
+ trunc_ln58_231_reg_1092 <= {{layer50_out_dout[127:112]}};
207
+ trunc_ln58_232_reg_1097 <= {{layer50_out_dout[143:128]}};
208
+ trunc_ln58_233_reg_1102 <= {{layer50_out_dout[159:144]}};
209
+ trunc_ln58_234_reg_1107 <= {{layer50_out_dout[175:160]}};
210
+ trunc_ln58_235_reg_1112 <= {{layer50_out_dout[191:176]}};
211
+ trunc_ln58_236_reg_1117 <= {{layer50_out_dout[207:192]}};
212
+ trunc_ln58_237_reg_1122 <= {{layer50_out_dout[223:208]}};
213
+ trunc_ln58_238_reg_1127 <= {{layer50_out_dout[239:224]}};
214
+ trunc_ln58_239_reg_1132 <= {{layer50_out_dout[255:240]}};
215
+ trunc_ln58_reg_1057 <= trunc_ln58_fu_872_p1;
216
+ trunc_ln58_s_reg_1062 <= {{layer50_out_dout[31:16]}};
217
+ end
218
+ end
219
+
220
+ always @ (*) begin
221
+ if ((1'b1 == ap_block_state1)) begin
222
+ ap_ST_fsm_state1_blk = 1'b1;
223
+ end else begin
224
+ ap_ST_fsm_state1_blk = 1'b0;
225
+ end
226
+ end
227
+
228
+ always @ (*) begin
229
+ if ((1'b1 == ap_block_state2)) begin
230
+ ap_ST_fsm_state2_blk = 1'b1;
231
+ end else begin
232
+ ap_ST_fsm_state2_blk = 1'b0;
233
+ end
234
+ end
235
+
236
+ always @ (*) begin
237
+ if ((grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_done == 1'b0)) begin
238
+ ap_ST_fsm_state3_blk = 1'b1;
239
+ end else begin
240
+ ap_ST_fsm_state3_blk = 1'b0;
241
+ end
242
+ end
243
+
244
+ always @ (*) begin
245
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_860_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
246
+ ap_done = 1'b1;
247
+ end else begin
248
+ ap_done = ap_done_reg;
249
+ end
250
+ end
251
+
252
+ always @ (*) begin
253
+ if (((real_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin
254
+ ap_idle = 1'b1;
255
+ end else begin
256
+ ap_idle = 1'b0;
257
+ end
258
+ end
259
+
260
+ always @ (*) begin
261
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_860_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
262
+ internal_ap_ready = 1'b1;
263
+ end else begin
264
+ internal_ap_ready = 1'b0;
265
+ end
266
+ end
267
+
268
+ always @ (*) begin
269
+ if ((1'b1 == ap_CS_fsm_state3)) begin
270
+ layer12_out_write = grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_layer12_out_write;
271
+ end else begin
272
+ layer12_out_write = 1'b0;
273
+ end
274
+ end
275
+
276
+ always @ (*) begin
277
+ if (((icmp_ln52_fu_860_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
278
+ layer50_out_blk_n = layer50_out_empty_n;
279
+ end else begin
280
+ layer50_out_blk_n = 1'b1;
281
+ end
282
+ end
283
+
284
+ always @ (*) begin
285
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_860_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
286
+ layer50_out_read_local = 1'b1;
287
+ end else begin
288
+ layer50_out_read_local = 1'b0;
289
+ end
290
+ end
291
+
292
+ always @ (*) begin
293
+ if (((start_once_reg == 1'b0) & (start_full_n == 1'b0))) begin
294
+ real_start = 1'b0;
295
+ end else begin
296
+ real_start = ap_start;
297
+ end
298
+ end
299
+
300
+ always @ (*) begin
301
+ if (((real_start == 1'b1) & (start_once_reg == 1'b0))) begin
302
+ start_write = 1'b1;
303
+ end else begin
304
+ start_write = 1'b0;
305
+ end
306
+ end
307
+
308
+ always @ (*) begin
309
+ case (ap_CS_fsm)
310
+ ap_ST_fsm_state1 : begin
311
+ if (((1'b0 == ap_block_state1) & (1'b1 == ap_CS_fsm_state1))) begin
312
+ ap_NS_fsm = ap_ST_fsm_state2;
313
+ end else begin
314
+ ap_NS_fsm = ap_ST_fsm_state1;
315
+ end
316
+ end
317
+ ap_ST_fsm_state2 : begin
318
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_860_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
319
+ ap_NS_fsm = ap_ST_fsm_state1;
320
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_860_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
321
+ ap_NS_fsm = ap_ST_fsm_state3;
322
+ end else begin
323
+ ap_NS_fsm = ap_ST_fsm_state2;
324
+ end
325
+ end
326
+ ap_ST_fsm_state3 : begin
327
+ if (((1'b1 == ap_CS_fsm_state3) & (grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_done == 1'b1))) begin
328
+ ap_NS_fsm = ap_ST_fsm_state2;
329
+ end else begin
330
+ ap_NS_fsm = ap_ST_fsm_state3;
331
+ end
332
+ end
333
+ default : begin
334
+ ap_NS_fsm = 'bx;
335
+ end
336
+ endcase
337
+ end
338
+
339
+ assign add_ln52_fu_866_p2 = (indvar_flatten_fu_458 + 9'd1);
340
+
341
+ assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];
342
+
343
+ assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1];
344
+
345
+ assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2];
346
+
347
+ always @ (*) begin
348
+ ap_block_state1 = ((real_start == 1'b0) | (ap_done_reg == 1'b1));
349
+ end
350
+
351
+ always @ (*) begin
352
+ ap_block_state2 = ((icmp_ln52_fu_860_p2 == 1'd0) & (layer50_out_empty_n == 1'b0));
353
+ end
354
+
355
+ always @ (*) begin
356
+ ap_block_state2_ignore_call19 = ((icmp_ln52_fu_860_p2 == 1'd0) & (layer50_out_empty_n == 1'b0));
357
+ end
358
+
359
+ assign ap_ready = internal_ap_ready;
360
+
361
+ assign grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_start = grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_ap_start_reg;
362
+
363
+ assign icmp_ln52_fu_860_p2 = ((indvar_flatten_fu_458 == 9'd324) ? 1'b1 : 1'b0);
364
+
365
+ assign layer12_out_din = grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_468_layer12_out_din;
366
+
367
+ assign layer50_out_read = layer50_out_read_local;
368
+
369
+ assign start_out = real_start;
370
+
371
+ assign trunc_ln58_fu_872_p1 = layer50_out_dout[15:0];
372
+
373
+ endmodule //myproject_conv_2d_cl_array_array_ap_fixed_41_21_5_3_0_32u_config12_s
myproject_prj/solution1/impl/verilog/myproject_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_64u_config19_s.v ADDED
@@ -0,0 +1,517 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_64u_config19_s (
10
+ ap_clk,
11
+ ap_rst,
12
+ ap_start,
13
+ start_full_n,
14
+ ap_done,
15
+ ap_continue,
16
+ ap_idle,
17
+ ap_ready,
18
+ start_out,
19
+ start_write,
20
+ layer53_out_dout,
21
+ layer53_out_num_data_valid,
22
+ layer53_out_fifo_cap,
23
+ layer53_out_empty_n,
24
+ layer53_out_read,
25
+ layer19_out_din,
26
+ layer19_out_num_data_valid,
27
+ layer19_out_fifo_cap,
28
+ layer19_out_full_n,
29
+ layer19_out_write
30
+ );
31
+
32
+ parameter ap_ST_fsm_state1 = 3'd1;
33
+ parameter ap_ST_fsm_state2 = 3'd2;
34
+ parameter ap_ST_fsm_state3 = 3'd4;
35
+
36
+ input ap_clk;
37
+ input ap_rst;
38
+ input ap_start;
39
+ input start_full_n;
40
+ output ap_done;
41
+ input ap_continue;
42
+ output ap_idle;
43
+ output ap_ready;
44
+ output start_out;
45
+ output start_write;
46
+ input [1023:0] layer53_out_dout;
47
+ input [7:0] layer53_out_num_data_valid;
48
+ input [7:0] layer53_out_fifo_cap;
49
+ input layer53_out_empty_n;
50
+ output layer53_out_read;
51
+ output [2751:0] layer19_out_din;
52
+ input [6:0] layer19_out_num_data_valid;
53
+ input [6:0] layer19_out_fifo_cap;
54
+ input layer19_out_full_n;
55
+ output layer19_out_write;
56
+
57
+ reg ap_done;
58
+ reg ap_idle;
59
+ reg start_write;
60
+ reg layer19_out_write;
61
+
62
+ reg real_start;
63
+ reg start_once_reg;
64
+ reg ap_done_reg;
65
+ (* fsm_encoding = "none" *) reg [2:0] ap_CS_fsm;
66
+ wire ap_CS_fsm_state1;
67
+ reg internal_ap_ready;
68
+ reg layer53_out_blk_n;
69
+ wire ap_CS_fsm_state2;
70
+ wire [0:0] icmp_ln52_fu_3212_p2;
71
+ wire [15:0] trunc_ln58_fu_3224_p1;
72
+ reg [15:0] trunc_ln58_reg_3937;
73
+ reg ap_block_state2;
74
+ reg [15:0] trunc_ln58_s_reg_3942;
75
+ reg [15:0] trunc_ln58_46_reg_3947;
76
+ reg [15:0] trunc_ln58_47_reg_3952;
77
+ reg [15:0] trunc_ln58_48_reg_3957;
78
+ reg [15:0] trunc_ln58_49_reg_3962;
79
+ reg [15:0] trunc_ln58_50_reg_3967;
80
+ reg [15:0] trunc_ln58_51_reg_3972;
81
+ reg [15:0] trunc_ln58_52_reg_3977;
82
+ reg [15:0] trunc_ln58_53_reg_3982;
83
+ reg [15:0] trunc_ln58_54_reg_3987;
84
+ reg [15:0] trunc_ln58_55_reg_3992;
85
+ reg [15:0] trunc_ln58_56_reg_3997;
86
+ reg [15:0] trunc_ln58_57_reg_4002;
87
+ reg [15:0] trunc_ln58_58_reg_4007;
88
+ reg [15:0] trunc_ln58_59_reg_4012;
89
+ reg [15:0] trunc_ln58_60_reg_4017;
90
+ reg [15:0] trunc_ln58_61_reg_4022;
91
+ reg [15:0] trunc_ln58_62_reg_4027;
92
+ reg [15:0] trunc_ln58_63_reg_4032;
93
+ reg [15:0] trunc_ln58_64_reg_4037;
94
+ reg [15:0] trunc_ln58_65_reg_4042;
95
+ reg [15:0] trunc_ln58_66_reg_4047;
96
+ reg [15:0] trunc_ln58_67_reg_4052;
97
+ reg [15:0] trunc_ln58_68_reg_4057;
98
+ reg [15:0] trunc_ln58_69_reg_4062;
99
+ reg [15:0] trunc_ln58_70_reg_4067;
100
+ reg [15:0] trunc_ln58_71_reg_4072;
101
+ reg [15:0] trunc_ln58_72_reg_4077;
102
+ reg [15:0] trunc_ln58_73_reg_4082;
103
+ reg [15:0] trunc_ln58_74_reg_4087;
104
+ reg [15:0] trunc_ln58_75_reg_4092;
105
+ reg [15:0] trunc_ln58_76_reg_4097;
106
+ reg [15:0] trunc_ln58_77_reg_4102;
107
+ reg [15:0] trunc_ln58_78_reg_4107;
108
+ reg [15:0] trunc_ln58_79_reg_4112;
109
+ reg [15:0] trunc_ln58_80_reg_4117;
110
+ reg [15:0] trunc_ln58_81_reg_4122;
111
+ reg [15:0] trunc_ln58_82_reg_4127;
112
+ reg [15:0] trunc_ln58_83_reg_4132;
113
+ reg [15:0] trunc_ln58_84_reg_4137;
114
+ reg [15:0] trunc_ln58_85_reg_4142;
115
+ reg [15:0] trunc_ln58_86_reg_4147;
116
+ reg [15:0] trunc_ln58_87_reg_4152;
117
+ reg [15:0] trunc_ln58_88_reg_4157;
118
+ reg [15:0] trunc_ln58_89_reg_4162;
119
+ reg [15:0] trunc_ln58_90_reg_4167;
120
+ reg [15:0] trunc_ln58_91_reg_4172;
121
+ reg [15:0] trunc_ln58_92_reg_4177;
122
+ reg [15:0] trunc_ln58_93_reg_4182;
123
+ reg [15:0] trunc_ln58_94_reg_4187;
124
+ reg [15:0] trunc_ln58_95_reg_4192;
125
+ reg [15:0] trunc_ln58_96_reg_4197;
126
+ reg [15:0] trunc_ln58_97_reg_4202;
127
+ reg [15:0] trunc_ln58_98_reg_4207;
128
+ reg [15:0] trunc_ln58_99_reg_4212;
129
+ reg [15:0] trunc_ln58_100_reg_4217;
130
+ reg [15:0] trunc_ln58_101_reg_4222;
131
+ reg [15:0] trunc_ln58_102_reg_4227;
132
+ reg [15:0] trunc_ln58_103_reg_4232;
133
+ reg [15:0] trunc_ln58_104_reg_4237;
134
+ reg [15:0] trunc_ln58_105_reg_4242;
135
+ reg [15:0] trunc_ln58_106_reg_4247;
136
+ reg [15:0] trunc_ln58_107_reg_4252;
137
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_start;
138
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_done;
139
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_idle;
140
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_ready;
141
+ wire [2751:0] grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_layer19_out_din;
142
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_layer19_out_write;
143
+ reg grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_start_reg;
144
+ reg ap_block_state2_ignore_call67;
145
+ wire ap_CS_fsm_state3;
146
+ reg [6:0] indvar_flatten_fu_1706;
147
+ wire [6:0] add_ln52_fu_3218_p2;
148
+ reg ap_block_state1;
149
+ reg layer53_out_read_local;
150
+ reg [2:0] ap_NS_fsm;
151
+ reg ap_ST_fsm_state1_blk;
152
+ reg ap_ST_fsm_state2_blk;
153
+ reg ap_ST_fsm_state3_blk;
154
+ wire ap_ce_reg;
155
+
156
+ // power-on initialization
157
+ initial begin
158
+ #0 start_once_reg = 1'b0;
159
+ #0 ap_done_reg = 1'b0;
160
+ #0 ap_CS_fsm = 3'd1;
161
+ #0 grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_start_reg = 1'b0;
162
+ #0 indvar_flatten_fu_1706 = 7'd0;
163
+ end
164
+
165
+ myproject_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716(
166
+ .ap_clk(ap_clk),
167
+ .ap_rst(ap_rst),
168
+ .ap_start(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_start),
169
+ .ap_done(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_done),
170
+ .ap_idle(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_idle),
171
+ .ap_ready(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_ready),
172
+ .p_read(trunc_ln58_reg_3937),
173
+ .p_read1(trunc_ln58_s_reg_3942),
174
+ .p_read2(trunc_ln58_46_reg_3947),
175
+ .p_read3(trunc_ln58_47_reg_3952),
176
+ .p_read4(trunc_ln58_48_reg_3957),
177
+ .p_read5(trunc_ln58_49_reg_3962),
178
+ .p_read6(trunc_ln58_50_reg_3967),
179
+ .p_read7(trunc_ln58_51_reg_3972),
180
+ .p_read8(trunc_ln58_52_reg_3977),
181
+ .p_read9(trunc_ln58_53_reg_3982),
182
+ .p_read10(trunc_ln58_54_reg_3987),
183
+ .p_read11(trunc_ln58_55_reg_3992),
184
+ .p_read12(trunc_ln58_56_reg_3997),
185
+ .p_read13(trunc_ln58_57_reg_4002),
186
+ .p_read14(trunc_ln58_58_reg_4007),
187
+ .p_read15(trunc_ln58_59_reg_4012),
188
+ .p_read16(trunc_ln58_60_reg_4017),
189
+ .p_read17(trunc_ln58_61_reg_4022),
190
+ .p_read18(trunc_ln58_62_reg_4027),
191
+ .p_read19(trunc_ln58_63_reg_4032),
192
+ .p_read20(trunc_ln58_64_reg_4037),
193
+ .p_read21(trunc_ln58_65_reg_4042),
194
+ .p_read22(trunc_ln58_66_reg_4047),
195
+ .p_read23(trunc_ln58_67_reg_4052),
196
+ .p_read24(trunc_ln58_68_reg_4057),
197
+ .p_read25(trunc_ln58_69_reg_4062),
198
+ .p_read26(trunc_ln58_70_reg_4067),
199
+ .p_read27(trunc_ln58_71_reg_4072),
200
+ .p_read28(trunc_ln58_72_reg_4077),
201
+ .p_read29(trunc_ln58_73_reg_4082),
202
+ .p_read30(trunc_ln58_74_reg_4087),
203
+ .p_read31(trunc_ln58_75_reg_4092),
204
+ .p_read32(trunc_ln58_76_reg_4097),
205
+ .p_read33(trunc_ln58_77_reg_4102),
206
+ .p_read34(trunc_ln58_78_reg_4107),
207
+ .p_read35(trunc_ln58_79_reg_4112),
208
+ .p_read36(trunc_ln58_80_reg_4117),
209
+ .p_read37(trunc_ln58_81_reg_4122),
210
+ .p_read38(trunc_ln58_82_reg_4127),
211
+ .p_read39(trunc_ln58_83_reg_4132),
212
+ .p_read40(trunc_ln58_84_reg_4137),
213
+ .p_read41(trunc_ln58_85_reg_4142),
214
+ .p_read42(trunc_ln58_86_reg_4147),
215
+ .p_read43(trunc_ln58_87_reg_4152),
216
+ .p_read44(trunc_ln58_88_reg_4157),
217
+ .p_read45(trunc_ln58_89_reg_4162),
218
+ .p_read46(trunc_ln58_90_reg_4167),
219
+ .p_read47(trunc_ln58_91_reg_4172),
220
+ .p_read48(trunc_ln58_92_reg_4177),
221
+ .p_read49(trunc_ln58_93_reg_4182),
222
+ .p_read50(trunc_ln58_94_reg_4187),
223
+ .p_read51(trunc_ln58_95_reg_4192),
224
+ .p_read52(trunc_ln58_96_reg_4197),
225
+ .p_read53(trunc_ln58_97_reg_4202),
226
+ .p_read54(trunc_ln58_98_reg_4207),
227
+ .p_read55(trunc_ln58_99_reg_4212),
228
+ .p_read56(trunc_ln58_100_reg_4217),
229
+ .p_read57(trunc_ln58_101_reg_4222),
230
+ .p_read58(trunc_ln58_102_reg_4227),
231
+ .p_read59(trunc_ln58_103_reg_4232),
232
+ .p_read60(trunc_ln58_104_reg_4237),
233
+ .p_read61(trunc_ln58_105_reg_4242),
234
+ .p_read62(trunc_ln58_106_reg_4247),
235
+ .p_read63(trunc_ln58_107_reg_4252),
236
+ .layer19_out_din(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_layer19_out_din),
237
+ .layer19_out_num_data_valid(7'd0),
238
+ .layer19_out_fifo_cap(7'd0),
239
+ .layer19_out_full_n(layer19_out_full_n),
240
+ .layer19_out_write(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_layer19_out_write)
241
+ );
242
+
243
+ always @ (posedge ap_clk) begin
244
+ if (ap_rst == 1'b1) begin
245
+ ap_CS_fsm <= ap_ST_fsm_state1;
246
+ end else begin
247
+ ap_CS_fsm <= ap_NS_fsm;
248
+ end
249
+ end
250
+
251
+ always @ (posedge ap_clk) begin
252
+ if (ap_rst == 1'b1) begin
253
+ ap_done_reg <= 1'b0;
254
+ end else begin
255
+ if ((ap_continue == 1'b1)) begin
256
+ ap_done_reg <= 1'b0;
257
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_3212_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
258
+ ap_done_reg <= 1'b1;
259
+ end
260
+ end
261
+ end
262
+
263
+ always @ (posedge ap_clk) begin
264
+ if (ap_rst == 1'b1) begin
265
+ grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_start_reg <= 1'b0;
266
+ end else begin
267
+ if (((1'b0 == ap_block_state2_ignore_call67) & (icmp_ln52_fu_3212_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
268
+ grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_start_reg <= 1'b1;
269
+ end else if ((grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_ready == 1'b1)) begin
270
+ grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_start_reg <= 1'b0;
271
+ end
272
+ end
273
+ end
274
+
275
+ always @ (posedge ap_clk) begin
276
+ if (ap_rst == 1'b1) begin
277
+ start_once_reg <= 1'b0;
278
+ end else begin
279
+ if (((real_start == 1'b1) & (internal_ap_ready == 1'b0))) begin
280
+ start_once_reg <= 1'b1;
281
+ end else if ((internal_ap_ready == 1'b1)) begin
282
+ start_once_reg <= 1'b0;
283
+ end
284
+ end
285
+ end
286
+
287
+ always @ (posedge ap_clk) begin
288
+ if (((1'b0 == ap_block_state1) & (1'b1 == ap_CS_fsm_state1))) begin
289
+ indvar_flatten_fu_1706 <= 7'd0;
290
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_3212_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
291
+ indvar_flatten_fu_1706 <= add_ln52_fu_3218_p2;
292
+ end
293
+ end
294
+
295
+ always @ (posedge ap_clk) begin
296
+ if (((1'b0 == ap_block_state2) & (1'b1 == ap_CS_fsm_state2))) begin
297
+ trunc_ln58_100_reg_4217 <= {{layer53_out_dout[911:896]}};
298
+ trunc_ln58_101_reg_4222 <= {{layer53_out_dout[927:912]}};
299
+ trunc_ln58_102_reg_4227 <= {{layer53_out_dout[943:928]}};
300
+ trunc_ln58_103_reg_4232 <= {{layer53_out_dout[959:944]}};
301
+ trunc_ln58_104_reg_4237 <= {{layer53_out_dout[975:960]}};
302
+ trunc_ln58_105_reg_4242 <= {{layer53_out_dout[991:976]}};
303
+ trunc_ln58_106_reg_4247 <= {{layer53_out_dout[1007:992]}};
304
+ trunc_ln58_107_reg_4252 <= {{layer53_out_dout[1023:1008]}};
305
+ trunc_ln58_46_reg_3947 <= {{layer53_out_dout[47:32]}};
306
+ trunc_ln58_47_reg_3952 <= {{layer53_out_dout[63:48]}};
307
+ trunc_ln58_48_reg_3957 <= {{layer53_out_dout[79:64]}};
308
+ trunc_ln58_49_reg_3962 <= {{layer53_out_dout[95:80]}};
309
+ trunc_ln58_50_reg_3967 <= {{layer53_out_dout[111:96]}};
310
+ trunc_ln58_51_reg_3972 <= {{layer53_out_dout[127:112]}};
311
+ trunc_ln58_52_reg_3977 <= {{layer53_out_dout[143:128]}};
312
+ trunc_ln58_53_reg_3982 <= {{layer53_out_dout[159:144]}};
313
+ trunc_ln58_54_reg_3987 <= {{layer53_out_dout[175:160]}};
314
+ trunc_ln58_55_reg_3992 <= {{layer53_out_dout[191:176]}};
315
+ trunc_ln58_56_reg_3997 <= {{layer53_out_dout[207:192]}};
316
+ trunc_ln58_57_reg_4002 <= {{layer53_out_dout[223:208]}};
317
+ trunc_ln58_58_reg_4007 <= {{layer53_out_dout[239:224]}};
318
+ trunc_ln58_59_reg_4012 <= {{layer53_out_dout[255:240]}};
319
+ trunc_ln58_60_reg_4017 <= {{layer53_out_dout[271:256]}};
320
+ trunc_ln58_61_reg_4022 <= {{layer53_out_dout[287:272]}};
321
+ trunc_ln58_62_reg_4027 <= {{layer53_out_dout[303:288]}};
322
+ trunc_ln58_63_reg_4032 <= {{layer53_out_dout[319:304]}};
323
+ trunc_ln58_64_reg_4037 <= {{layer53_out_dout[335:320]}};
324
+ trunc_ln58_65_reg_4042 <= {{layer53_out_dout[351:336]}};
325
+ trunc_ln58_66_reg_4047 <= {{layer53_out_dout[367:352]}};
326
+ trunc_ln58_67_reg_4052 <= {{layer53_out_dout[383:368]}};
327
+ trunc_ln58_68_reg_4057 <= {{layer53_out_dout[399:384]}};
328
+ trunc_ln58_69_reg_4062 <= {{layer53_out_dout[415:400]}};
329
+ trunc_ln58_70_reg_4067 <= {{layer53_out_dout[431:416]}};
330
+ trunc_ln58_71_reg_4072 <= {{layer53_out_dout[447:432]}};
331
+ trunc_ln58_72_reg_4077 <= {{layer53_out_dout[463:448]}};
332
+ trunc_ln58_73_reg_4082 <= {{layer53_out_dout[479:464]}};
333
+ trunc_ln58_74_reg_4087 <= {{layer53_out_dout[495:480]}};
334
+ trunc_ln58_75_reg_4092 <= {{layer53_out_dout[511:496]}};
335
+ trunc_ln58_76_reg_4097 <= {{layer53_out_dout[527:512]}};
336
+ trunc_ln58_77_reg_4102 <= {{layer53_out_dout[543:528]}};
337
+ trunc_ln58_78_reg_4107 <= {{layer53_out_dout[559:544]}};
338
+ trunc_ln58_79_reg_4112 <= {{layer53_out_dout[575:560]}};
339
+ trunc_ln58_80_reg_4117 <= {{layer53_out_dout[591:576]}};
340
+ trunc_ln58_81_reg_4122 <= {{layer53_out_dout[607:592]}};
341
+ trunc_ln58_82_reg_4127 <= {{layer53_out_dout[623:608]}};
342
+ trunc_ln58_83_reg_4132 <= {{layer53_out_dout[639:624]}};
343
+ trunc_ln58_84_reg_4137 <= {{layer53_out_dout[655:640]}};
344
+ trunc_ln58_85_reg_4142 <= {{layer53_out_dout[671:656]}};
345
+ trunc_ln58_86_reg_4147 <= {{layer53_out_dout[687:672]}};
346
+ trunc_ln58_87_reg_4152 <= {{layer53_out_dout[703:688]}};
347
+ trunc_ln58_88_reg_4157 <= {{layer53_out_dout[719:704]}};
348
+ trunc_ln58_89_reg_4162 <= {{layer53_out_dout[735:720]}};
349
+ trunc_ln58_90_reg_4167 <= {{layer53_out_dout[751:736]}};
350
+ trunc_ln58_91_reg_4172 <= {{layer53_out_dout[767:752]}};
351
+ trunc_ln58_92_reg_4177 <= {{layer53_out_dout[783:768]}};
352
+ trunc_ln58_93_reg_4182 <= {{layer53_out_dout[799:784]}};
353
+ trunc_ln58_94_reg_4187 <= {{layer53_out_dout[815:800]}};
354
+ trunc_ln58_95_reg_4192 <= {{layer53_out_dout[831:816]}};
355
+ trunc_ln58_96_reg_4197 <= {{layer53_out_dout[847:832]}};
356
+ trunc_ln58_97_reg_4202 <= {{layer53_out_dout[863:848]}};
357
+ trunc_ln58_98_reg_4207 <= {{layer53_out_dout[879:864]}};
358
+ trunc_ln58_99_reg_4212 <= {{layer53_out_dout[895:880]}};
359
+ trunc_ln58_reg_3937 <= trunc_ln58_fu_3224_p1;
360
+ trunc_ln58_s_reg_3942 <= {{layer53_out_dout[31:16]}};
361
+ end
362
+ end
363
+
364
+ always @ (*) begin
365
+ if ((1'b1 == ap_block_state1)) begin
366
+ ap_ST_fsm_state1_blk = 1'b1;
367
+ end else begin
368
+ ap_ST_fsm_state1_blk = 1'b0;
369
+ end
370
+ end
371
+
372
+ always @ (*) begin
373
+ if ((1'b1 == ap_block_state2)) begin
374
+ ap_ST_fsm_state2_blk = 1'b1;
375
+ end else begin
376
+ ap_ST_fsm_state2_blk = 1'b0;
377
+ end
378
+ end
379
+
380
+ always @ (*) begin
381
+ if ((grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_done == 1'b0)) begin
382
+ ap_ST_fsm_state3_blk = 1'b1;
383
+ end else begin
384
+ ap_ST_fsm_state3_blk = 1'b0;
385
+ end
386
+ end
387
+
388
+ always @ (*) begin
389
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_3212_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
390
+ ap_done = 1'b1;
391
+ end else begin
392
+ ap_done = ap_done_reg;
393
+ end
394
+ end
395
+
396
+ always @ (*) begin
397
+ if (((real_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin
398
+ ap_idle = 1'b1;
399
+ end else begin
400
+ ap_idle = 1'b0;
401
+ end
402
+ end
403
+
404
+ always @ (*) begin
405
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_3212_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
406
+ internal_ap_ready = 1'b1;
407
+ end else begin
408
+ internal_ap_ready = 1'b0;
409
+ end
410
+ end
411
+
412
+ always @ (*) begin
413
+ if ((1'b1 == ap_CS_fsm_state3)) begin
414
+ layer19_out_write = grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_layer19_out_write;
415
+ end else begin
416
+ layer19_out_write = 1'b0;
417
+ end
418
+ end
419
+
420
+ always @ (*) begin
421
+ if (((icmp_ln52_fu_3212_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
422
+ layer53_out_blk_n = layer53_out_empty_n;
423
+ end else begin
424
+ layer53_out_blk_n = 1'b1;
425
+ end
426
+ end
427
+
428
+ always @ (*) begin
429
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_3212_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
430
+ layer53_out_read_local = 1'b1;
431
+ end else begin
432
+ layer53_out_read_local = 1'b0;
433
+ end
434
+ end
435
+
436
+ always @ (*) begin
437
+ if (((start_once_reg == 1'b0) & (start_full_n == 1'b0))) begin
438
+ real_start = 1'b0;
439
+ end else begin
440
+ real_start = ap_start;
441
+ end
442
+ end
443
+
444
+ always @ (*) begin
445
+ if (((real_start == 1'b1) & (start_once_reg == 1'b0))) begin
446
+ start_write = 1'b1;
447
+ end else begin
448
+ start_write = 1'b0;
449
+ end
450
+ end
451
+
452
+ always @ (*) begin
453
+ case (ap_CS_fsm)
454
+ ap_ST_fsm_state1 : begin
455
+ if (((1'b0 == ap_block_state1) & (1'b1 == ap_CS_fsm_state1))) begin
456
+ ap_NS_fsm = ap_ST_fsm_state2;
457
+ end else begin
458
+ ap_NS_fsm = ap_ST_fsm_state1;
459
+ end
460
+ end
461
+ ap_ST_fsm_state2 : begin
462
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_3212_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin
463
+ ap_NS_fsm = ap_ST_fsm_state1;
464
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_3212_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
465
+ ap_NS_fsm = ap_ST_fsm_state3;
466
+ end else begin
467
+ ap_NS_fsm = ap_ST_fsm_state2;
468
+ end
469
+ end
470
+ ap_ST_fsm_state3 : begin
471
+ if (((grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin
472
+ ap_NS_fsm = ap_ST_fsm_state2;
473
+ end else begin
474
+ ap_NS_fsm = ap_ST_fsm_state3;
475
+ end
476
+ end
477
+ default : begin
478
+ ap_NS_fsm = 'bx;
479
+ end
480
+ endcase
481
+ end
482
+
483
+ assign add_ln52_fu_3218_p2 = (indvar_flatten_fu_1706 + 7'd1);
484
+
485
+ assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];
486
+
487
+ assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1];
488
+
489
+ assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2];
490
+
491
+ always @ (*) begin
492
+ ap_block_state1 = ((real_start == 1'b0) | (ap_done_reg == 1'b1));
493
+ end
494
+
495
+ always @ (*) begin
496
+ ap_block_state2 = ((icmp_ln52_fu_3212_p2 == 1'd0) & (layer53_out_empty_n == 1'b0));
497
+ end
498
+
499
+ always @ (*) begin
500
+ ap_block_state2_ignore_call67 = ((icmp_ln52_fu_3212_p2 == 1'd0) & (layer53_out_empty_n == 1'b0));
501
+ end
502
+
503
+ assign ap_ready = internal_ap_ready;
504
+
505
+ assign grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_start = grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_ap_start_reg;
506
+
507
+ assign icmp_ln52_fu_3212_p2 = ((indvar_flatten_fu_1706 == 7'd100) ? 1'b1 : 1'b0);
508
+
509
+ assign layer19_out_din = grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1716_layer19_out_din;
510
+
511
+ assign layer53_out_read = layer53_out_read_local;
512
+
513
+ assign start_out = real_start;
514
+
515
+ assign trunc_ln58_fu_3224_p1 = layer53_out_dout[15:0];
516
+
517
+ endmodule //myproject_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_64u_config19_s
myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_37_17_5_3_0_config2_mult_s_oudEe.v ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ `timescale 1 ns / 1 ps
7
+ module myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_37_17_5_3_0_config2_mult_s_oudEe (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 3;
12
+ parameter AddressWidth = 7;
13
+ parameter AddressRange = 72;
14
+
15
+ input[AddressWidth-1:0] address0;
16
+ input ce0;
17
+ output reg[DataWidth-1:0] q0;
18
+
19
+ input reset;
20
+ input clk;
21
+
22
+
23
+ reg [DataWidth-1:0] rom0[0:AddressRange-1];
24
+
25
+
26
+ initial begin
27
+
28
+ $readmemh("./myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_37_17_5_3_0_config2_mult_s_oudEe.dat", rom0);
29
+ end
30
+
31
+
32
+ always @(posedge clk)
33
+ begin
34
+ if (ce0)
35
+ begin
36
+ q0 <= rom0[address0];
37
+ end
38
+ end
39
+
40
+
41
+ endmodule
42
+
myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_w14_ROM_NP_BRdlF.dat ADDED
@@ -0,0 +1,576 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 056000D0031FF7B000DFFAB00D0FFCC006CFF40FFEC00250043FFF2FFB00004
2
+ 066FFF5FF3EFF98005B01070071FFF9007F002800070006FFDAFFDC00CE0009
3
+ 39AFFBEFFF500800049FF47FF630057005C0070001600550000003CFFABFF9F
4
+ 3E6FFFB0010FFBCFFEAFFD9008EFFFB008B002CFFC80024FFE80054007EFF4F
5
+ 0260005004E00A7006300A90015003C00140037FFD0FF46FFB8002B00BD0069
6
+ 3A4FF7C000900E5002AFFC70075001600350015001AFFDEFFA0FF8FFF53FF34
7
+ 3E7FFD1FE0200DBFFA100C20021004F001E006B0013FE3AFFA4FFF1FF770086
8
+ 396FFD2FF35FFD6FFCEFFD5FF8F00340030FFD2FF9C000DFF6EFFDE00180015
9
+ 0820003009DFFE1001D000E008FFF9BFFE8FFAAFFABFFF40031000EFF650048
10
+ 3C400010090FF16FFD60086FFC700310002005F0031FFDDFFE9FFD200280088
11
+ 020002D002BFFA70020FFDA0059FFE0FFB8000B0061FFADFFFA0000FFC8FFA4
12
+ 062FFFD00D5FF36001DFF56FF7CFF86005AFFE300060061001AFFEAFFBBFFB6
13
+ 365FFC5FF75FFA0FFFE0023FF4E000200390009FFE2FF7EFFD5FFF4FFA8FFD4
14
+ 048FFD0FFAAFF3600140093FFA3FFEAFFFFFF4E003600660046FF7FFFDAFF22
15
+ 02D0040FFC1FFFFFFEAFF56FFF8FF560074FFA6FFB8005C002BFFF0FFF5FF98
16
+ 35F003CFF7A0008FFCBFFB900240021FFB2003EFFDBFEFBFFAD0014FFCDFF4C
17
+ 3BFFFADFFAB003C000FFFCDFFBB0042003E004900BCFF53FF9CFFE80005FFAF
18
+ 3EFFF68FFFDFF8FFF72FF39000D000EFFB2FFD7FFDA001D004CFFECFF7DFF8E
19
+ 38A0020FF89FFB8FF7200CB0066FF7FFFA8FFDC000CFF85FFFB00150012FF51
20
+ 007FFF2FFBBFFCF000600C30058000BFFE3FFE8FF950029FFDEFFA90027FFCB
21
+ 3300013FF15FF99FF9C006BFFE9FFD1FF77FF8BFF580068FFE1FFABFFD6FF3C
22
+ 397FF490043FFBD0031FF090060FFF30023000E0028000EFFB7FFF80036FF83
23
+ 3E10011FF85008F00290076FFFF002EFF72FFC5FFC3007CFFE9FFD3FF96FFE6
24
+ 37EFF6A00D2FFFAFFE3FF59001400530033002D000BFF98FFDA0004FF50FFD0
25
+ 3ECFFEC00F300B20048FECF00F900320078FF730063FFF6FFCFFFE1001D0052
26
+ 3D3FFD4FF9EFEB8FFFBFF79FFB0FF9CFFF1FF92FFC500D6FFF2FFE3FFE7FFE3
27
+ 06600190061FF610034FFB6FFCA006B002A0007FFE1007800260052003BFFDF
28
+ 01DFFE8FFB6FFF5FF94FF52FEEC00ADFFF8FF8E005500CD00440001FFD0FFA6
29
+ 09CFFF2FF55FE7400080021FF17FF0C00CBFF29FF9B007E001C001EFFA8FFAC
30
+ 3CF000E006DFFBEFFB7FF30FF9CFFAF0055FFB90044FFF60006FFD1FFAEFFD5
31
+ 3CCFEC8FFDF0034005FFFC6001EFEB8FF68005900330059FFDEFFB3FFB8FFC0
32
+ 3EB005CFF58FEDC0005FF1AFF1CFFCA0018FFDB008AFFFF000DFFB20004FFF0
33
+ 007FF38000400A9007B008E000FFFB8004DFF74FFD7FFE7FFF5FFBAFF860026
34
+ 0910032FFE40037FFF3FFA7FF6C000F0034FFE5FFE500CC0047FF9000B9FFB2
35
+ 027FFF70072006F00400056FEC8FFF8FFEC001C006000210014FFB3FF6AFFF8
36
+ 3C80017FFD20010FF6DFFC8FFA4FFEEFF6B0035FFEAFFA70007003100DBFF5C
37
+ 048001200B600A2FFD20002FFED0037003EFFF4007AFFEEFFF1002900B00058
38
+ 015001800240078FFCD006600100004FF7D0007000CFF1CFFC2FFF800730025
39
+ 3DD0090FEE40053FFB4FFC00064003B00B700620019FF00FF52004CFFA7FFC3
40
+ 008FFA0FF84FF8E0049FFCDFF9A007500C00048FF8F0076000CFFEB0017FF19
41
+ 06FFF75FFAEFFB3006EFFFD00C8FFD80030FFD7FF91FFEF002AFFE6FFFC0024
42
+ 3FC004DFFD5FFDA0001FF2BFF79FFE9FF94FFDA004DFF80FFFEFFC40056006E
43
+ 3A1001B000AFE7A002A007A00C4FFBCFFECFFD8FFA6FEFA0007003AFFEAFF95
44
+ 061FFC80026FFAA003C005E003EFFCF0041FFE1003F00740067FFB2FFE2FF8E
45
+ 35CFFBEFF7AFFA0FF850047FFB2FFD9FF7DFFCFFFE5FF9FFF88FFECFFB50033
46
+ 02CFFCEFFF5FFA50016009D0059000E000FFFCC002EFFF1FFE3FFCE0018FF09
47
+ 063FFACFFB8002E000900CE002BFF62002FFFC3001A001C0030FFE2FFABFF11
48
+ 3BC001EFFF10000FFC7FEBA000A0052FFD1008CFF95FFB3FFC10056FF96FF5D
49
+ 07A002CFEC9001BFFF5FFCB000B0042FFC8FFC9FFF9000AFFE8FFEB001FFF64
50
+ 3F9FFDB0092FFAEFFCBFFCFFF9BFFF60011FFDCFFF0001A00400014FF46FF83
51
+ 3920050000EFF83FFE9007FFF9DFFD3FF510054FFC0FF87FFE200810073FF54
52
+ 00B000CFF9000080012FF6EFF94FFEBFFA2000900290007FFC3FFCAFFEFFFFE
53
+ 3E7FF92FF61FFBB0054009AFF41FFD70027FF7800300042FFD70001FFF9FF44
54
+ 01BFFD2FFCAFFDAFFBD0088FFAAFFE9FFD1FFAF001C004FFFFD0001FFAB0044
55
+ 003FFCD001AFFEB0022FFBFFFB9001300BF002A0018FFC2FF950020002BFFCF
56
+ 3CA00620111FFD600510083FFA90008FFDC002500760044FFE7FFC700080071
57
+ 067004D004F0059FFD800A6004C0013FF2BFF6BFFCD0009FFD5001600F2FFE7
58
+ 3E3FF51FF44FF74000E0030FFE3FFA4FFDBFF98FFEA00AE0010FFDAFF6EFF0D
59
+ 0010035FF75FFE0FFA50053FF95000800320053FFEE006B003E0006FFC4FF44
60
+ 3C1FFC5FF14FFD0FFDC003FFFC7FFFB0060FF8A00180023005BFFB7000FFF2D
61
+ 075FF28FF9B00590056004CFF59FF53FFD0FFCAFFC000700016FFCA000AFF44
62
+ 0390012001EFF4B0018FFAD0024FFFC00ADFF5A006800510071FF9E0005FFD8
63
+ 3960053FFDFFF740020FFAC00D4FEFB001C002EFFFEFFE1FFFA001100010079
64
+ 03D00FAFFB3FF47FFEE001BFFF50032FFE5FFE20044FFE00025FF9BFF63003F
65
+ 02DFF53FFD4009400FCFFE1FEFFFFCDFF90FFE4FFF40005FFFBFFA900010037
66
+ 3B80002FFEF0099001D0034001F002000190030FFC4FFDB0000002E008E0027
67
+ 3BB0021FFF2FFCF0094FFCFFF59FFE5FE92FFDC0045FFF60005FFBAFFE2FFCA
68
+ 04A00200057006CFFFA0094FF660009002D001AFFE40049FFE800780085FFA8
69
+ 00400B5003300A0FFCE00D0FFF4003300600040004C0027FFFCFFDB00BE002C
70
+ 03A004E00690075FF8DFE67FE330006FF14FFE2FF8BFFDFFFE0001FFFFAFF39
71
+ 03B0087002E0021FFE500790027FFDD0052001B0026FFC1FFC8001EFED5FFB1
72
+ 32AFFC2003CFF2DFFECFFE9005E0019FF930049FFC1FFB2001A00220074FF0F
73
+ 02DFECEFEA300520007FF9AFFB0FFB200240037FFD2FFD4002300180001FFE2
74
+ 01F0017FFDCFFD7FF44004CFFD2004000C6007E0015FFCE001CFFAB00810096
75
+ 3CFFFE2FF760016FF8AFF21FFFCFF210122FFDAFF9FFFCBFFE9FFC2FFBEFF79
76
+ 018FF54FF4100330042FFECFF78FFD3FFC9FFAFFFCFFFC80052FF8EFF78FF6E
77
+ 3C7004EFF99FF88FF5500A3FFB4FFFAFFCBFFEFFFF2FFFCFFCA000100750078
78
+ 02D000EFFE1FF6F0018003AFFFFFFE0FF6AFFF3FFFAFFD3001200030015FF7B
79
+ 3E7FFEA003BFFBE005E00ADFF3EFF6CFEF3001D0010FFC2002AFF8EFFB2FFBA
80
+ 3DF001B00A0FFA50000FFD600040042FFB90044FF750042FFF30044FFB1FFC1
81
+ 01600020004FFB9001CFFB6FEDB0017FE0FFF76FFA0004EFFD0FFE0003DFF4C
82
+ 031FFFD0067FFD80021011800FFFFD3003CFFFD000CFFDF001CFFB5FF76FFE2
83
+ 3C5004EFF8DFF9AFFE400D0FF9FFF74003B0031FF6AFFFDFFCA00420035FFB3
84
+ 34F0003FFA3006DFFDF008BFF4AFFF300750018FFE7FF80FFEF0047002A0021
85
+ 3D8FFA1FFB2FF76002EFF87FEA5FFBEFF25FFC5FFD7003D003F006200CCFFB8
86
+ 3CC0019FFC7FFF8FFC30032FF660003FF32FFFAFFBE0031FFCEFFEDFFDFFFA3
87
+ 3E80016FFCDFF87FF83FF85FDF00025FFBE0006FFA800160032001F000C003A
88
+ 32F00A5009BFF3500460050012BFFECFF5EFFCDFFCA0016001EFF9C0043FFC8
89
+ 00A001600B3FFFAFFEDFE820009FFE7FE08FF8EFFA0000E003DFFFBFFF2FEEE
90
+ 3C4FF65FFB2FF50FFF4FFCE000EFF93001BFFA1FF47FFFF001FFFE5FFB3FFA7
91
+ 3C50003FF190061FFB80089006BFFCCFF53003F000FFFA4000EFFC3FF4BFF91
92
+ 3C80044FFA4FF4FFF5100590178FFE8FFD5FFC4FFE5FFA4000FFF8CFFEDFFF4
93
+ 081FF05FF9E00B600350018FDECFF720098FFC9FF45FFE50000FFBAFFF5FFA3
94
+ 3D1FF83FF4CFEF3FFEA0090FF60FFDC0007FFFBFFF1FFC00047FFA3FFD40013
95
+ 02F00ACFFF5FF33FF92FFD10130FF38007D001A000400390045FFD700340080
96
+ 04F0034FF36FF9D001C0065FFBEFFAA00030010006CFF63003F0007FF6B0036
97
+ 05B006FFFA5FEC9FFE900A70005FFF50032000D0025FFAA001E00180051FFBD
98
+ 02A005EFF6DFF5B0090FFF100680041005F0011FFE50054FFE4FF8B003D000E
99
+ 3A1FFDE00CB005F0023FF65000AFF8C00A70098000400120012005AFFB10087
100
+ 3ECFF6F0016FFFA000EFF77FFB9FFCF0064FFF2003DFFEAFFCA001FFFD400AE
101
+ 030000100150031008D0015011E00320007FFF8FFF2FFECFF8A000A0094006D
102
+ 3BDFF0BFFFC003C001500AAFFE8000EFFEE001AFF73FF68FFA6FFC40062FF59
103
+ 004FF22FE670024FFEA00FFFFDC0047FFEB001CFFAAFFC7FFD3FFC5004DFF02
104
+ 3D90014FFE00009FFD0FFF3FE56001BFFDEFF76FFEC002700030042FF9700D8
105
+ 01CFFD1FFCDFF7D0024009E0096FFA0FFABFF8BFFD3FFADFFFBFFF6003600AA
106
+ 009004FFF6EFFFBFFCF000D002A001BFF88FFF8FF95000D0011FF950029FFC1
107
+ 040FF9AFFCA001F001AFF61001EFFEDFFAB0026007DFF93FFECFFEEFFA5002C
108
+ 041002B0103FF7E005CFF84FF74FFF100020052FFA6FFFBFFE60031001B008A
109
+ 371FFB8FF23003DFFF0FF92FFF3000E005E0035FFB8FF26FF430008FF2D0009
110
+ 3C80052FF55FF99003FFFA6001EFFED005EFFBAFF73FFF1FFC8FFE1FFE2005E
111
+ 053005E0134FFF7FFD6FFD7FF400034005DFFF0FFEB005F0003FFE6FF960059
112
+ 382001DFF0DFFAD000DFFF4FF57004E001EFFE8FFEAFF77FF670023FF70009B
113
+ 3BBFFC20068001FFFA5FFED00220070FFD5009A0030FFDCFFC6FFFFFF8EFFA1
114
+ 37AFE95005FFF9A0003FFCCFF5F0022FFE6FF87004F0028004BFFC6FF59FF0A
115
+ 384FF5F0009001CFFD6001F006B0069FF69FFA9FFFD00210029FFEFFF41004F
116
+ 012001CFF11FFE9004AFFD7005F00080039FF7BFF73FFF3FFEFFFC4002CFFB8
117
+ 352002B005DFFC5FFA8FFE7FEB9FFD6FF8FFFD3FFB100100011FFF1FFA50035
118
+ 3BDFFB1FFAFFF68003BFF2FFFE50048003200590003FF88FFECFFD6000AFF81
119
+ 05FFECBFFC8FFDB0032001A00230067FFDA000C0032FFF8005F0031001CFFAC
120
+ 38E004C00820018FFFB005E009300110006009DFFBAFF8DFFD40012FFEBFFA9
121
+ 329FFBE000CFFCC0017FFCA009B001CFFEBFFE9FFB4FFB9FF93FF7CFFD4FFF9
122
+ 031008D00C1FF9EFFF3FF70FFA4FF71003E0014002A0047006CFFF6FF7AFFE4
123
+ 0B8008A00E5FFD90014FFD000350042003BFF86FFC3FFEC005E001EFFD50068
124
+ 048FFE8FF53FFF4FFF1FFA1002A00DB0000002AFFDFFFE0004A004100070031
125
+ 067006E0113FF1CFFD5FF45FF5EFF380056000BFFC1FFE500440032FF8FFFD4
126
+ 00CFFE200640021FFCEFF9EFFCEFFDC0059FFEEFFD5FF9D0035FFA6FF430048
127
+ 3B8FF06FF5F00560019FF960072FF36FF84005CFFC3000FFF97FFDCFF27FF9D
128
+ 3BDFFD3FF62FF1600000037FE23001200AFFFA9000A005CFFF5FFDE000B0055
129
+ 038FFEAFFCF0076001B00E4FFBC001CFFB7FFF00037FF9CFFA4FF7F003C0027
130
+ 0300016FF9BFFA20036FF47FF9D001D008300160079000D0005001800010038
131
+ 3D8001C00BE0040003F0066002EFFB00013007DFFF200390017FFABFFE5003E
132
+ 3D5FFBEFFFFFFECFFC5FF6BFF3DFFD8FF6AFFED0006001000050006FFFDFFE5
133
+ 048000E007C00A7FFBFFFD0000C00330004000100630065FFEA004300100031
134
+ 011FF3C002BFF5FFFFB00C5FFD4FFFCFFC80001FFFCFF670006FFE500970056
135
+ 3F4FF05FEF100370007007CFF8800500016FFF1FFEFFFD9FFD400100094FFC3
136
+ 3D50065FFF50040FFE90002FF2F00AC0032001E0000FF85FFF0001AFF9C0030
137
+ 0040013FF210001003F00630083FF99003FFFE3FF82FFACFFE1FFF2FFE50001
138
+ 3FB0092FF56FFAEFFBFFFFBFF5AFFCDFFECFF5BFFA6FF7A000BFFB4000AFFB3
139
+ 38B0007FF8BFF3400060001FFEEFFB4FFB5FFE8FF95FF2DFFEB0050FFA8FFBA
140
+ 059000A0003FFD60046FFEB00DB00000007004000100036001A002200160044
141
+ 3BFFF9FFF4D0025FF8B0026FF1DFFCFFFD30036FF6CFF6CFF77FFCFFFC9FFC3
142
+ 0600031FF6DFFF4002AFF9200B6FFD8001E0028FFCC003AFFAA003FFF98001D
143
+ 04E002B007E0002002400E5006400140018FFA2FFDF0015FFEAFFC9FF93FFD0
144
+ 3A300500017FFF2000C0007FFD7007BFFD5FFF0FFD20014FFC00019FF770002
145
+ 003FFE5FFC90045FF890051FFE8005700140037FFFF0032FFFFFFADFF63FF55
146
+ 344FFD100E8002C0053FFBEFE88FFF6FFBFFFD6FFF8FF9F0019FFFC00400010
147
+ 3E0FFE200310008FFD9001CFED10011FF92001BFFB4006D001A005AFFA8FFC9
148
+ 036000B0046FFD80027FF68FF19000A0008FF42FFA9FFB6FFACFFECFFD00032
149
+ 3D3FFC0008B003CFFF50019FF7A0006003EFFC20047FF8500170021FF74FFE2
150
+ 3FC0026FFBFFFB9FFA60046FEF100150016FFE5FFF5FFE80030FFB90049004F
151
+ 3F2FF3CFFA9007AFFF20024FFB4FFF5FFF60067FFD1FFF200070017FF06FFF4
152
+ 3F9002E0096FFD3002B0130FFDAFFDFFFC8FFDE006E0024FFD4FFC9005F003B
153
+ 00AFFAFFFC5FFA9FFDB008A00670009FF90FFC60022004C0001FFA80062002D
154
+ 3ED00250026FFF50026000800B3FF9B004C0004001BFFE900530034FF50FF97
155
+ 00E002F0008FFFCFFF2001200AA0025006DFFDFFFA2FFC00045002D0010FFBD
156
+ 391FF9B000F0052FFB8001E00A200400065FFA1FFADFF5CFFFE0039009EFFD6
157
+ 06E0025009800540009FFEC0012FF5DFFE200310021FFC1FFE10001FF7EFF99
158
+ 008FF74FFE50030003FFF37009EFFF30056FFD4FFB5FFA9002D0002FFEA0024
159
+ 3F9FFE5FF83FF25FFF70070FFE4FF68000D0035FFFEFFDEFFC6004DFFCAFF8F
160
+ 38BFFD5FF63FFE2FFA60077FE630033FFFDFFE100040019FFEEFFF0FFEF0039
161
+ 054001CFFEE001B00680060FFAB0043FF3FFFEB0028000CFFDAFF7B008B0098
162
+ 3ADFFEDFFB700340030006200230046001FFFEF009AFF9CFF980029001A006E
163
+ 3DFFFF7FFF0000D005FFF3F004DFF6DFF2B0012FFE7000EFFE40003006F0029
164
+ 3C9FF71010B0028FFC40047FE16FFE7004EFFE0FFC20037FFE100B1FFF8FFD1
165
+ 00B00130079007E0025005D00DA004BFFE4FFF60030000FFFE0FFD90022005F
166
+ 3FC001F00ABFFAA001E0065FEFCFFF1FF47FF9E0045FFDAFF8DFFF700410034
167
+ 029001B00420024FFD9006AFFA6FFD9FFA9FF970023FFED0012FFCC0092007A
168
+ 38FFFEE0069FFF2000D009800030058FF010054FFE8FFD2FFDDFF9900000026
169
+ 3EDFFE7FEA0007FFFE80057FFD0FFE2FFDF0032FF87FFC8FFDE001EFFD2FFA6
170
+ 05D0031FFD7FFD7FF3F0048FF2A001D015EFFECFFE3FFE3001AFFD500C3FFB3
171
+ 364FFE0FFFB0061FF79FF02FF55FF3100D1FFDBFF7DFFE6FFA0FFEFFFC8FF9E
172
+ 3A6FFD7FF4A001B001EFF5A0066FFA3FF9F0007FF89FFD80006000A0001FFEC
173
+ 039006CFF81FFDCFF65001AFED6FFD2FFFD0019FF97FF97FFE5FFED00120016
174
+ 3F1FFEEFEF700190011FFA4FF05FFACFF690005FFC30014FFEB0097FFE5FFDF
175
+ 3F1002A0026FF9D007000950010004CFF14FFDBFFD4FFEDFFFAFFE5002AFFD5
176
+ 003FFF80020FFF2001AFFD9007A008BFFF2FFC1FFD4001A0042FFD0FFE10015
177
+ 020FFCDFF64FFB70036FF50002A0002FF6DFFDAFF940058FFD1FF8AFFE7005F
178
+ 3F4006300300043FFC50071FFE4FFA7006A00210017FFC30013000B003F0094
179
+ 017FFBA0066FF77FFBA0025FDC2FFED00B0FFEDFFC60046000D0049FFC7FFE0
180
+ 3FBFFF9FFE2FFA7FFC800EDFF1C000300C6FF43000AFFDCFFE500CD004B000C
181
+ 031FF86002FFFCC0023FF850085FFD1FF8BFFBA0013FF9000440000FFFA0009
182
+ 3C4002FFF46000EFF9E001EFF350024FFAEFFB0FFD90019000DFFB4FFF5FFE6
183
+ 3D0FFBBFFAD0054FFCBFF7F0095FFFDFFFDFFE5FFE500880036FFB6FF800034
184
+ 36EFFD400400018FFAAFFDFFF93FFA3FFAA0028FFFDFFEF0023FFC7FFF7009E
185
+ 38AFFCCFFFE00040024FF62005AFFE3FF61FFB40016001A002EFF9EFFD6FFE5
186
+ 3ECFFD6FF6F004C00210012003CFF68004BFFB6FFF1FFC6002B0025FF45FFFB
187
+ 3C8FFEDFF6B00490025000D00E8FFDE005A0034FF9DFF8F0005FFFBFFF5FFDF
188
+ 393FFD700E10081FF25003F00B9FFCA005C0014FF8BFF31000E0052FF830035
189
+ 0870013FF8000A0003700210012FFAC0002FF82FFC2FFBDFFE8FF9C0006FF6B
190
+ 3F6FF53FEC4FF8D001F001EFF80FFD1005F0058FF42FFB0004300400000FFAE
191
+ 3E800D9000DFF5EFFB9FF93FFC4FF58004BFFD5001400260036FFD2FF8DFFF0
192
+ 367FFEE005B0031FF7E00BBFEA10017FFB100290000FF9DFFF7006A0075000A
193
+ 02B001BFF5AFF0EFF59FE2FFFE10096FFCD0070FFB2003E003E0039FFF5FFF0
194
+ 022000E0051002DFFEB001900A9FFBCFFC9FFD4FFF90006FF63FFBC0017001C
195
+ 387FF71FFF4FFFE0018FF920036FFCA005DFFFE0077FFFE00320076FFDA007E
196
+ 00FFFAAFFC4002EFF860006002CFFC1FF18FF5500BFFFDBFFCEFFD6FF520080
197
+ 04D009300B50040FFD0002E0092000FFFACFFB60000FFACFF75FF80FF380089
198
+ 3AFFFDCFFD600200003FF7BFFE1000E00360031FF2C0010FFD300300061FF99
199
+ 08AFF72FFF4FFCA000F00500178001C004E0010FF83009BFFE0FF95FFD6FE4C
200
+ 3FCFFACFF7E00000078FF97FF7DFF86FFA2FF50FFFDFF89FFC30024FF1F005A
201
+ 377FF9EFF66FFDEFFEEFF560057FF38FF8300090055FFEEFFF0001A00A1005B
202
+ 012FF77FFADFFD10027FFCF002D000D0023FF93FEC30094FFF8FFEF009C0094
203
+ 013FF46FFDF00500012FF710032FFF1FFB50035009B000D0032FFE9000C0015
204
+ 3D80043000B003EFFD7FF5EFF5CFF84FF7E0035FFFFFFBEFF87002E00E200AD
205
+ 2FFFF3AFF3A0030000B0014001BFFF1001D00140052FF9FFFA7FFF0FF630025
206
+ 360FF99FE7700010028FFD00090FFB60009FFF700100007FF6F003FFFEC0011
207
+ 02D00060050003AFFEBFE8EFFF800770040FF6F0020FFDF00090036FF2C0053
208
+ 3830039FF810027FFE3FFA3FFE1FF0E00480020008CFFBEFFADFFEFFF8900F5
209
+ 03CFFB4003EFFBD00120051004A0066FFC70034001AFFE9003AFFDB0019FFBC
210
+ 3D6FF76FFD7FEF80013FF5C00810009FFE8FF7EFFAD0056FFF40005FECAFF6D
211
+ 3A4FF7EFF80FFE50014FFC5FFD3FFA0FF67FFA10065001E0018FFECFFA8003A
212
+ 35FFF330010FF650030FF910011FF770064FF97FF7C0054FFBD0012005B0070
213
+ 3C2FFAE0030005400040000FF89FF56FF8C00280023FFECFFEEFFF0FFA8001F
214
+ 32BFFE6FF41FFF800130003FF7F0056FFFB0045FE650000FFD4FFE3FFDAFF2E
215
+ 376FF1D0022000D006B009C00420012FFFD000AFFDA007AFFEAFFD3FFDDFFC7
216
+ 3C20019FEFDFFDDFFFDFE850058FFD9005E008EFFC3002AFF9F0008FFAFFF37
217
+ 3CDFFF0FF62FFF2FFC8000C00C7002E00930020FEEC004000010019FFE0FF48
218
+ 04500AD00D00067000A0045FFCFFF8FFFB60021008B002A00170015FFA7001C
219
+ 0C9007000070013FFDBFF77004A000AFEF8FF6C0031FFBC0000FFB6FF650049
220
+ 041FFFBFFD0007DFF9A00570020000DFE84FFEA0088FFDF0008FFE1FF57FFAE
221
+ 0D9007400B6FFDB001DFF4DFF6E0089005AFF080057FFA900300026FF9A004C
222
+ 3AEFF4FFED40006FF88003FFEE6FF65FFABFF370014FF9DFF9FFFCAFF540084
223
+ 042FF4A000000BC0032FF4700350017002C000BFFF00045FFD4FFCAFF58FFDA
224
+ 3AFFF3BFF66FFA0FFEBFEE30112FF6F00070058FFDA000FFFBF007DFF72008F
225
+ 045FFD8FF0D0095FFBBFF44FF5B005AFFEF0040FFE6FFD6FFC50029005CFFE4
226
+ 064FF9B014C00B3FFB1FFD3FF3DFFD9003C001700AC003800090022FFCE005B
227
+ 37A00050012FFE90014000F0002FF7FFFC20020003DFFDD0027FFCE008C006B
228
+ 3E0FFF5FFE7004FFFCEFFE3FFA80038FEF7FFB500DA00590005FFDEFE9CFFAD
229
+ 04200BE00200015FFB600110044000BFF8CFFF0008700C3FFE4FFC0FF490039
230
+ 373FF97FFD4FF8DFFA4FFE4FF90FFE6006B001BFFBEFFEC0022000AFEFBFFE8
231
+ 0BFFEA8FF6DFFC5003D0005FFEF00450025FFE8FF800011FFFBFFF10037FF68
232
+ 3EE0050FFBA00490026FFAD0074FFDCFFF4001C007CFF9D001FFFFA0026FFB1
233
+ 308FFE6FFF70054FFAAFEE1FFD9FFE60020FFFE004EFFB9FFFF0023FEBF0001
234
+ 0250099FF42FFF6FF9D0081FEC00017FFECFFA2FF7100500004FFFEFFF10013
235
+ 3EFFFF2005F001C0001FFD200A1FFD7FF910007004BFFF5000C001EFF59FFDC
236
+ 3B0FFC300840051FFD9FF63FFE7FFD2FFEE004D0012FFFA0005FFFEFFDD0044
237
+ 389FF56FF6E000D00070062FFB8FFC0FF42001FFFF9FFC8000CFFEB0048FFF1
238
+ 05AFFA6FF82003100140030FFD4FFB2FFFB006AFFB00013FFEA0037FFD0002D
239
+ 034002CFFA1FF000025003200A200290007FF860075FFD3FFDFFFACFFD3002F
240
+ 00C00CAFFC5FFE4FFCCFF4700D8FF82FF8C00010056FFD6FFFAFFC00058FFFD
241
+ 3FAFFD100840043FFE200360061002F003FFFE7FFBF00210000FFF60085FFC3
242
+ 3A1FF9D0043FFBA0022FFEFFF51003BFF42FFDEFFD4FFBBFFC0001DFF2FFFC1
243
+ 039002BFFF8FFD10042FF7FFFD9FFF7FFF700090043006D006D0034FF24FF94
244
+ 3EFFF640010FFB1FFBEFFB7FF31FF99FFCEFF75FF47003FFFBBFFD9FF840094
245
+ 3E800660092FFE2000100120031FFB9FF9DFFFC008BFFAB0009FF7A0085FFE7
246
+ 2F3001BFFE0002BFFA10013FF08004100290004FED40000FFF5FFD8FF3AFFDF
247
+ 024FF9B0031008B003C004D009AFFF6FFDD009CFF51FFAF0008FFA400D7FFEB
248
+ 028FFED0036FFF0FFB500B9FF96FF6AFFC6FFF9FFA30017FFC7001700AEFFEB
249
+ 3D1FF3E0024FF9CFF6F0024FFA20039000E0033FF03001EFFED000AFF7E003A
250
+ 0010068FFD000420022FFDC00DFFFA4FFDAFFCD00BDFFD90025001D00200003
251
+ 00D005EFFE30006FFF8000E005F0006002FFF920012FFAFFFDDFFD9004EFFF1
252
+ 3950010FFFF0016FFE3FF450048FFA5004FFF830032FFFAFFE9FFAD00C90007
253
+ 0A40047FF96FFD60013FF6CFFED00AAFF72FFF8005DFFE0FFFCFFD80066003A
254
+ 3F9FF2CFF53FFBE0025FF9EFFA1FFB6004B0003FFDAFFE7FFEC001EFFCB0089
255
+ 3FBFF68FF84FFF60009FFE8FFD70024FFE40022FFC50007000500170056FF66
256
+ 375FF57FF70008E0002FF41FF3BFF6CFF4E003EFFC9001AFFCD0054FFDC0044
257
+ 08C0059FED6FFF9FFF3FF37FF560079FFA5FFDC001C0060FFD50004FFE9003B
258
+ 3E1FF220058014E000E0080002F0019000A0071009A000BFFEFFFE6FF68001C
259
+ 3C0FFDE002FFF4A000FFED60081FF47FF7DFFF00018FFF0FFB1FFF900D30055
260
+ 39BFFF200B4008DFFCBFFF4FE4DFFFC00210025FFD100670031005D0062FFB8
261
+ 3FE007D00A2005B00320099017B0034FFE4FFF300680093FFF0FFDDFF00001D
262
+ 00FFF5C00B0FFA0FFEEFFE6FD9800050040FFE40019005A001E002CFF370036
263
+ 002FF43009CFF80FFEAFFCEFEE0FFE6FFADFFBCFF90000CFFAA002D005E0066
264
+ 0370052002AFF22001600BD00B3FFE6FF21FFEF0072FFB8002FFF8E0075FFF2
265
+ 3790028FFCD00C9FF3AFFE1FEC2005EFFC70044FFA7FFCF0031000BFF9EFFBF
266
+ 3E0FFFFFFF8FFF9FF24FFC5FFE00030008BFFF800640038FFD60042FF88FFE5
267
+ 39800320107007FFFD0FF12FDC8FF68001A0047FF990047FFEAFFCC0026FFBB
268
+ 2D4FFB3003E004FFFC4FF25FFACFFE8002E000DFFC400090012FFFAFF7FFFD1
269
+ 399FFFFFF50FFB0FFF30060FFB7FF91FFF9FFFAFF9EFFB7001CFFEF00650032
270
+ 3F1FF89FF5E00800063FFD30075FFCB001D0048000C002C001E005CFF6E0020
271
+ 0170070FFC5FE900078FFDBFFE7008AFEF6FFAB004DFFFA0016FF77011F000C
272
+ 04F006AFFD7FFCA000BFF5B00CBFF57FFB0FFD50004FFDBFFE2001300960020
273
+ 3C8FFCD0084FFAC0000005900AFFFBF00620019FF97000EFFC8FFFA003C00A3
274
+ 329000BFFFB005CFFA6FED8FF55FFF1001C00540038FFDCFFCF001EFFD6FFDE
275
+ 3E0002AFF8D0024FFF1FFE6FDF7FF160063FFC1FFDF00510017005A005CFF9E
276
+ 3D7FFA00029FFC8FFAF00A10048FFFF0064FF930010002DFFE90024FED3002E
277
+ 0300014FFBCFDE4FFCE005A0041FFD6FFC3FFCA005DFFB3001BFFBFFF6E0003
278
+ 30AFFCFFF8DFF9DFFC3001D0025003FFFFD0011FF78004BFFFE0018FEA6FFF6
279
+ 0780039FF89FFD4000400A700C7FFB50044FFE4FFFC00630056FFE5006D0011
280
+ 3FCFF070053FFFEFF68FF42FF1BFFCD0095002D0010FFFD0015004700830055
281
+ 01BFEC3FFC6FF7F0024FFD9FEED0043FF5CFFDFFFD90022FFCD0033FF350066
282
+ 049FFD6FF1600890017FFCC000CFF3EFFCDFFB5FFE900050013002600B0FFAB
283
+ 008FFA1001A0028FFF9FF97004EFFAC0024FFFFFFAFFFC1FFF4FFD8FFE9FFE1
284
+ 3E1FFCE009EFFFFFF90FF7E0032FF7CFFC00021FFF60099002AFFFDFF310006
285
+ 0850050FF13FF4F00370030FFF60091002FFFE1001EFFFA002FFF5EFFC2FFC2
286
+ 3C9FF4AFEE0003DFFFA0011FFE3FFB800380093FF5600160048003CFF77FFC1
287
+ 3D4FFFB000900120028FF70FF3DFFCA00190000FFF70042000FFFCFFFCF0007
288
+ 36C0005FFBA0064FFBCFEBEFFCDFF8FFF6AFFEAFF520018FFE8006DFF390055
289
+ 39BFFB6004AFFDAFFF2007100ABFF7A00040036FFEEFFC70068FF84FFD1000D
290
+ 02DFFDB00BB007C001201000123009EFF2A0079FFE800A1FFDA0001001E0004
291
+ 07FFFAA0015FFA4FFE70067FFE600BAFF57FFA7FFEFFF8F0004FFEDFFEAFFD3
292
+ 01A0024FEAE0015FFF6FEB7FF8EFFAE0024FFE600080024FF85FEFCFF3DFFEF
293
+ 32A000DFEBCFFC4FFF8FE77FFEB0057003F001A000200B3FF10FF3DFFB30027
294
+ 30F00400028FFC40009FF76FF88FF74FE7FFFE8FFF5FFCE005C0064FFC8FF94
295
+ 346009CFE790063001200CD00180067002800330013006FFFF7FE91001A0082
296
+ 01BFFCC01340031FFCC01A000F9004D0040FFFE000D0051FFF3FFDA0053001C
297
+ 0550015000DFFA6FFE4FF92FFC2FFC4FFDF00360003FFBAFE6CFF650030FFE9
298
+ 3A0FFD100230006000EFF33FF66FF76FFF70003FFE9002FFED800590054003A
299
+ 06DFFFE0061FF8A0014FFF3FFB1FFC8FF5C003900530016001A0043FF9D001A
300
+ 37BFFA1FFB5FFBF001B000F0013FFF0FFCAFFD8FFFFFFF6FFCC00500041FFB5
301
+ 033FF65FF5FFF5FFFE0FF67FFA50017FFBE00520039FFB0FFD8FFDAFFF3FFFB
302
+ 00B000800610069001E0180011A0090FF120048000B000E0125000E0028FFD9
303
+ 3A100100050FFE6FFE0FFDDFFCAFF980025FFBCFFEEFFC8FFBF0036FFB6FFCC
304
+ 3C3FFE00112FF93001AFF63FED6FFA3FF5AFFF2FFF90046FF00FF8D0002FFA5
305
+ 065000E0026FF720001FEB9FF2EFFB8006EFFCF0022FF79FEBA000100500004
306
+ 3B5002BFF0F0064FFDBFF68FFAFFF410034FFC6FFD500350031008100770069
307
+ 0B20044FEC6001AFFE2FE2EFED100510007FFC000430028FE90FF66FFA40030
308
+ 3B1006000310046FFED0007FFFAFF4CFF310069000A002D00120071005EFFDF
309
+ 3D5005500CD0050FFDD0074FFEE001CFFB8FF9A0011FF91001E00A60033000A
310
+ 3D8FFC500B90004000C0012FF9AFFAD0080FFFE0001FFD4FFB400410069FFD7
311
+ 04CFFEAFF5EFFECFFFD00BB001BFFD7FF43001700540035009BFFE600250055
312
+ 363FF5EFF98004FFFE2FFBAFF35FF7DFFD5FFB8FFEE003BFEB9FF7F003C002E
313
+ 3E5FFD8FFDBFF9FFFFFFDC5FEEF00AF003D0025FFF70008FFBB002200190014
314
+ 048001B007B0004000400B2004E00420047FFD40001FFF0005B007500210005
315
+ 05F0046FFF9FFEE0027001C0028FF140073FFE8000AFFA7FFF900350020FFC1
316
+ 01800320042002B002300230021FF9F00C8FFD1FFC90005001200740043FFD8
317
+ 3EFFFDF0012005CFFEC00C700E1000CFFFFFFEAFFE6000100E300290005005A
318
+ 03EFFCD0034FFAB003200560057FF3D00290045FF590074FF3DFFB4FFF10041
319
+ 3E7FF93FF50FFEE0011FF07FFD70084FFFEFFEC0001002FFEB900770025FFCB
320
+ 34BFFB0000D005E001E007E005700880027FFC9FF9B0020FFFC000CFFC70048
321
+ 3A3FFF9FFF8FFA300480058002D0005005000510002FF61FFE5FFDFFF8CFFF0
322
+ 05BFFD60052FFD5FFD300060029003CFF3D000DFFB3005B00CA00C0FFCBFFD0
323
+ 06AFFFC0064FFB0001B003FFFC70024FFBDFFE0FFF3FF6FFFB90014FF85FFD5
324
+ 3DB0002FE9FFFFFFFAEFFFA001000ACFF3FFF480040FFF0FF2EFEAB002B0029
325
+ 356FFC1FFB30076FFB4003900010044FF7E0051FFC80024FFA9FF80FF3D0033
326
+ 3520008FF75FF5C00320059FF3EFFCCFF89002E0023FF81FF61FF7AFFD6FF9E
327
+ 330008BFF8DFF98001800A20023003A0021FFE70063FFE0FF8DFF11004A001C
328
+ 0C000000051004FFFDEFFD0FFCA00070032FF64FFFBFFB20078FFCBFFE5FFD3
329
+ 037FFFEFF7BFFE400040053FF3DFFE40023006C0005FFBDFEE2FFB10040FFBD
330
+ 37DFF26FFE6FF8EFFC9FF770022FF5700040042FFB1002CFFE0007AFFC80002
331
+ 385FFE00063FF79001F001A0036FEF4FFED0024FFE3FFED007BFF38FFCFFFE0
332
+ 3F70001FFFCFFE10041FF3CFF980003FFC50038FFF5FF73FFC300330005FFA4
333
+ 33CFFA2FE77FFE1FFC8FFADFF71FFEF0009FFB8FFEBFFAFFF9DFFDE00C4FFF7
334
+ 392FFC2FFC80032000DFEFAFF9E0032000A000EFFFD006B005FFFFC0030FFDE
335
+ 06800300078FFEEFFFA0033FF0600340015FFF1FFE6FF9C0039002BFF71FFD6
336
+ 01B002400DFFFD60041FF60FF0EFF5A002A0006002E002DFE69FF03008CFFEA
337
+ 066FFE7FFC4FFC2004A003800C600080033FFFF001AFFC40047FFD7FFDCFFAC
338
+ 331001100360028FFD3003FFFCFFF32FFE4FF780013000B00470082001A004C
339
+ 03B0016FF4FFFAFFFDC0032FF80FFFDFFF3FF830053005AFF85FF9E004CFFFB
340
+ 3ADFFD30046FFA8FFB9FF5AFFAA0019FF90FFC6FFE3004AFFED00AFFFA5000A
341
+ 0370047009B004F002BFFEAFF48FFDF0024FFE6FFFBFFBE0018003BFFFEFFE3
342
+ 3DFFFABFFD300190009FFFFFFF7002300350021FFD4FF8DFFD9FFDE0036000E
343
+ 3CAFFC3FF3C0006FFD90015FFE20033FF65006400170071FFF2FFAFFFF80029
344
+ 305000AFFE00026FFCF005F0055FFEDFFC4FF9A0008002700090016001C002C
345
+ 3DAFFDBFF9CFFEE0018FF3FFF46FFF10008005A0018FFDDFF31FFBA001E0044
346
+ 0CE00030031000F0011FFBCFF6C0059001B0029FFFBFF7600230045006FFFFC
347
+ 09E0038FFB4FFA6FFE40000000B0031004BFFF0001F001700C4FFE70062FFB1
348
+ 09EFFE3FFBE004BFFCFFFD8FFF20028005BFFE4FFF1001EFFBA0032FFE90014
349
+ 05BFFE1006200080015000D00320011FFF90014FFF8FFEA00B300180018FFF7
350
+ 3F4FFCF003000060005FFF0FFB3003BFFDB008DFF200009FFEEFFFAFFC0FFCB
351
+ 3CFFFA6FF0C0048FFECFFC2FF16FF59FFE2FFB3FFCCFFF1FF4E0039003C0026
352
+ 332001CFF3AFF97FFF400B300450063FF5FFEE3FFBA0018FFF90024FFCC008C
353
+ 039FFF000110098002AFFBEFF5BFFEF0114FFDBFFF4FF57FF92FFFBFE5A0021
354
+ 068FFE00073FF970003FFE0006800B8FE98008AFFF10011001300370007FFE4
355
+ 09000480074FFBF0064FFC60069FF880055FFCFFFFCFF9800310018FE2AFFAC
356
+ 33DFFE7007CFEFFFFC1FFF5FFD1003FFE9EFFA60012FFF9006AFFFA0069FFFB
357
+ 314001D00B20015FFA9001C0069FFE1FEAB0007FFC1001900520016FF060001
358
+ 36F0022FEFF001F0022006CFF4B0081007AFFEDFFDCFF94FFD0000AFF580036
359
+ 38E0045FFA9FF5C001C001C0004FFEE0050001E00260023FF4AFFB90050FFD2
360
+ 0F50005005D0060FFC0FFA9FF27FF6B0017FF88001FFFB7FF8FFF97FFBC0008
361
+ 38F0003FF9200CA0004FF6FFFC8004E0075007DFFCBFFB2FF02FFDE0038FFB0
362
+ 38AFF23FFAAFF4CFFE800B0006D0038FF8D0085FFD30001FFE2FFCE000AFFF9
363
+ 3C0FFB100AAFFB40025000800F700C90066003DFFAD000B0127FFEC005BFFF6
364
+ 00C000D001900AA0050FFB9FF9AFFD9006A0079FFD3FF3FFFE3FFFEFFDEFFD1
365
+ 28CFFC8FF07FFFAFF87FFE8FFB40022FFA3FFAB0005FFE2FF34FFC8018D0051
366
+ 02EFFE7FF1500190051FF7FFFAA0030003E00190048000FFFD5FFF8FFEAFFD5
367
+ 061002F007D003A00320000FF2A0077006AFF95FFEBFFCD0010FFFEFE52FF9C
368
+ 365001CFFA0FFD6001BFFB5FF26FF8400C10025000C0004FF2BFFE20071FFF9
369
+ 0E60006FFF40063003600A8FFE9002E00810070000EFFB900C6FFD6FD98FF7D
370
+ 350000E00470023000DFFD50043FFECFFEC0032003CFFEC000EFF9200C9FFF0
371
+ 2E8FFF50074FF8F00080041005FFF6F0012FFC5FFFFFFEA0093000100B10011
372
+ 35EFFE8FFCFFE850012FFD200230082FFCB000DFFCD000BFF8CFFE4FFFBFFED
373
+ 0870037FF76002DFFEE0037FF04FFFB006FFFFDFFE1FFA0002EFFB5FE8B0021
374
+ 024FFCEFE71000200250001FFC8FF2F0087FFBBFFEDFFA0FF8DFF9300090011
375
+ 36E0018FD1F008CFFD1FE1DFF88FF91006AFFEBFFD20005FFF1FF6D00BA002D
376
+ 3B1FFE000E3003B0016000700C8002EFFC9000F002E0088FFE0002700A1FFCE
377
+ 01B003CFE5CFFDA001300D8FF0BFFD20073FFEA000AFFA3FFAC0016FEC4001A
378
+ 0BF0026FEB0003B0015FFC9FF66002F006E0022FFE3FF87FFF4FFBC00AC001B
379
+ 001000DFF24002FFFCDFFBF002F005E005FFF8B0020003D0025FF8D005FFFA0
380
+ 3A7FFA3FF8E0061FFDC00110024FF9AFFCEFF66000A000700BA0034FF84FFF7
381
+ 090FFD9FF33FFEFFFDE0076FEAAFFEC00980000FF86FFAEFFECFF9BFE9A002F
382
+ 38DFFCBFFA100830017FF5BFFC9FF73FFF80046FFA70032FF8CFFC10030FFC4
383
+ 31C0006FFDB0082FFA000C100710015FFE6FFCB0022000B0047001B01480065
384
+ 329FFE0FFC3FFE2FFD8FFE6FFCCFFBBFF37FF81FFEB0019FF940055FF9F0049
385
+ 377002BFF13FFC2FFDA00010063FEE8FFEEFFF0FFEB00210059FF9C00090014
386
+ 01EFFD7FFFC0032FFE4003D0031FFF3FF940057001B00BDFFFB008500310030
387
+ 021FFBDFFD2FFD4FFD300A3FFD0FFAEFF87FFA5000B008B004EFFAF0002FFD9
388
+ 3EBFFF5004EFFAF000AFF880078FEF90067002FFFECFFC000480012FF080011
389
+ 054005400CAFFDF000F003200C60047007D007D0004004DFFE3FFB800300032
390
+ 3CFFF97FF30FFD500110099FFDFFFB3FF30FFDC0013000FFF660031FFE4FFB4
391
+ 3D20050FF32002F00230020003200000001FFEDFFE1002DFFBCFFE4FFD4FFEE
392
+ 008007CFF10FFFFFFC20175FFDEFFAC002FFFFE0017002C0025007DFFB80039
393
+ 398FFDDFFFBFF8FFFD8FEE8FF04FFA2FFD7FFE1FFEDFF850035FFD3FFF4003B
394
+ 053FFCEFFAF00690034FF290020009000420021001BFFE7FFAB000CFFC2FFFE
395
+ 3D30033FF55FFE60008FF93FF83007AFFE00049001C0064FFC3FFF2FFCF0005
396
+ 3B0FFF60087FF95FFF30012FF52FFB0FFFCFFC8000A004400230034FFAA0018
397
+ 0890004FF19FF4BFFCDFFC00009FFE6FF700016003B00230019FF850047FFB5
398
+ 008FFE6004F0072FFDF003AFF8FFFCEFFCDFFDAFFE6FF9D007E005A0029FFE2
399
+ 380FFE6FFB0FFA2FFE200640061FFE1001DFF8AFFF0FF970001FFD80060FFE5
400
+ 02F000E00F0FF88FFF100A90028FFDDFFA4FFC00018FFC2FFCFFFD6FFEAFFDC
401
+ 0170049FF98FFA20001FF9C0015FF320031FFA9FFEA0027FEDEFFBD0006FFCA
402
+ 00D003F0061004E0032FFF2FF2100AEFFBFFFE1FFA4FF90FFE800170003FF65
403
+ 359000BFFA5FFC6000CFED2FF7AFF26FFD60053001B0014FFDE0005FFA5FFEF
404
+ 063FFDCFF9E0025000EFF1B00230046FFA3003EFFF30009FF8A004B0047FFEE
405
+ 3B8FFE3001FFFF3FFD400AAFFFEFFFFFFC5FF9F0000FFABFF620041FFAF000F
406
+ 0080009011C005C00150022FFD5FF9B003AFFA9FFFB0021FFB400180033FF63
407
+ 3E50050FF91FFE1FFFEFFE6FF91FF8BFF89FFBBFFE9008C0079006E0026FFAB
408
+ 04BFFC9FFA8007BFFD700C4FF14FF8BFFDCFF4FFFC500A3FF52003E0008FF4F
409
+ 000FF1EFFD6FFC60018FF53001800040039FFE40011FFDFFED5FFBF0041FF86
410
+ 3FBFFE5004F0044000B0046FF7DFFC70005FFF1FFF9000CFFFE009CFFE5001D
411
+ 05D002200180017000D001100A4FEB80030FFB5FFECFF5200200003FF880012
412
+ 0620077FF9D0058001AFFE9006CFFB600720026000EFF61FFE3FFDDFF2F0046
413
+ 3A2FFF9FFD10083FFF1FFC0FFE5FFDB0059FFC8000DFFEA00930005001F005E
414
+ 3BA000E000EFFE40015FFF3FFDCFF01FFD5FFC5FFCE0072FFC0000AFF35004E
415
+ 037FFE00067FF9A0005FFCBFFE000FDFFA2FFFEFFEB004DFF17FFFBFFB3FF8B
416
+ 08C0005FE99FF8C000DFFDFFF9CFFDDFFE8001BFFADFF9E009B000DFFD3FFF3
417
+ 318004FFF4CFFB4000F0069001C004BFFD6FFCA0013FFDBFFEBFFC1FFFE0005
418
+ 090FFD10066FFC6FFC0FFA0FFA7FFE3FFF40008FFE6004BFFE90039FFC1004E
419
+ 3E90031003FFFF1FFE6FFE1FFC7FFF6FFB1000CFFFD001B0000FFE6001B0008
420
+ 3FDFFF5002EFFB0FFFC0090FFBC0042FFA9FFE7FFE7001CFFB7FFE1FFF2FFEF
421
+ 0A700050081007DFFE400300002001E0019009FFFF0006E003A002CFFF8001D
422
+ 00DFFA9FFD7FFD700310039FFD9FFAAFF88FFEB0034FFDFFFB8FFCAFFE2FFB5
423
+ 3E2FFEAFF61FFFF002F0021004DFF95FFD9FF7D0054FFDAFF6800020040FFE8
424
+ 3BE003800500055FFE70066FFE4FF0DFFD00010FFF20042FFE2FFF100490033
425
+ 3F9003DFFCBFFD40001006600130005FFB9FFF3FFF00030002DFFB6FFF70029
426
+ 040FFE6FF60FF8FFFEEFF8000740033FFB10051FFE5FFE6FF95FFD6FF75FFC1
427
+ 3E2FFB2004CFFFA000F0062FF8BFF7BFFB70001FFD5000C003CFF8BFFED0014
428
+ 3B2002FFFE6FFDA0006FF90FFBA0004FFD500080005FFB9FFCDFFE4FFBA000F
429
+ 3EC0023FEAAFFD5FFD5FFDFFFC7FFF6FFDFFFBBFFF1FFC1FFBDFFBF00010014
430
+ 009FFD6FF8EFFE90001FF61FF7CFFE4003AFFF9FFFDFFBA0018001A000FFFD7
431
+ 3DF000D0026000EFFE4008BFFF5001FFFD1FFA7FFFBFFD70054FF9D001CFFD7
432
+ 04F002300C9FF8F001C00100032FFB30013FFD0002CFF71FFEDFFBE0042FFD4
433
+ 036FFDA0040FFE30021000EFFD4FFBFFFE9FFA9FFF4000DFFC400570017FFF4
434
+ 3BBFFE5008CFF7FFFF8FFAAFF80FF90FF48FFBBFFEAFFD9FF9AFFC8FFDEFFC5
435
+ 003FFCCFF83FF5BFFFC0091FFF40000FFFAFF88FFF1FFEFFFDCFF9B0014FF92
436
+ 01E00070001FF93FFFEFFCE006100CEFFFEFFD2001B00180032FFFBFFD7FFF2
437
+ 3D7FFDF009900050003FFAFFFCDFF8C0005FFFF0007FFF9FFDE000500010007
438
+ 003FF9CFFCD0047000BFFBEFFB0FF9AFFC8FF7DFFEEFF91FFE6FFEFFFD1FFDF
439
+ 00C0004001C004EFFF40027FFE2FECEFFCBFFD700370016005A00230064FFFA
440
+ 3A20032FFE7FFC1FFD00047FFEDFFC5FFE4FFB3FFE30010002A000AFFC00001
441
+ 3A5FF39005F005F0036FF9CFFC6FF77FFECFF8A001F0008FFCE002F002FFFAA
442
+ 03E0000FFF50063001FFF8BFF3BFFAEFFE900660019FFB9FF850012002AFFF6
443
+ 045000FFFDCFFE8FFD1FFC10057FFD7FFDE000A001B0029002CFFDD002EFFE9
444
+ 3D900540000006BFFCFFFFDFFB1FF2AFF86004F00100018FEE1FFDAFFCF0079
445
+ 315003D00740014002F0001FFE50015FFDBFFEA002C002B0084FFFC004F0014
446
+ 34A0038FFC7FFC5FFF2FFE0FF450047FF86FFF9FFB2001BFFB4FFF8FF8BFFC9
447
+ 04D0004FFAC0042FFE7FFC0FEE9FFA0FFA2FFB9FFBEFFA6FF91FFF7FF6C0013
448
+ 01C0041FFBCFF5EFFC9003FFF820018FF99FF340003FFD0FFC1FFAEFFC00047
449
+ 0400010FFE4FFC7FFCD002B004800560001FFE000020014FFB5FFC6FFD8FFE8
450
+ 03BFFE9FFE6FFAE000DFFD500360058000EFFD0004E00100031000DFFBCFFAF
451
+ 0A900450069FFBC002FFFF7005C000000130092001EFFD8FF97FFE7FF71FFF5
452
+ 3AFFFD3005AFF9B0015FFC0FE6EFFEAFF44FFF6FF9E0039000E004EFFD00044
453
+ 043FFF700C4FFE9FFF80037008E005EFFB6FFEDFFFB003A009B004CFFBE0032
454
+ 392FFDDFF75002F000FFFB1FFBA007C0060FFCB00040022001BFFF300280014
455
+ 3B5FFADFFF0002E000BFF9700AC003B0062FFA8003100410012FFFE0017004C
456
+ 0010018003B0011FFF8FF3F0067FFC1001A00200049FFF4FFADFF99008E003F
457
+ 330FFC3FF98006CFFDCFF460000FFF900190031FFC20003FFECFFE4FFED005E
458
+ 032FFD1FF38FE9A00100057005CFFD4FF7F000EFFEF000500E5FF8BFFA6FF80
459
+ 28EFFDE00120094002400030065005CFFF4FFA2FF99FFFD0071FFF000110014
460
+ 02DFFBFFF910086FFF7FF40FFCE002E00280054FFDBFFD7FF6DFFE7000DFFC7
461
+ 3A90022FE31FFE2FFCCFF26FFB30000FFC8FFBBFFE5FFE9FF87FFF3FFED004B
462
+ 3C7FFECFE5A00B60012FF01001600150020FFF50003FFC5FF310004000DFFF1
463
+ 04CFFDB00920005000EFFD500190048FFDA0019FFF7000F0040FFCFFFC3FF7D
464
+ 0A7FFE8005BFFFB0011FF5B001C003000A5FFEC002DFFADFFFBFFD5005EFFDA
465
+ 0BAFFBC00A0FFC50042001D004BFF47003500740035FFFF00580022002DFF52
466
+ 3F6FF8400F8FF59FFF5FF730080FFFEFF98FFE60017000AFFE8FF5B000D0042
467
+ 36AFFE4000BFFF1FFF6004C005900CFFFFAFFBAFF9DFFA9FFF60006003AFFFC
468
+ 37DFFFE0021FEC4002DFFD500370027FFF6FF3AFFFFFFCC0088FF8C001BFF81
469
+ 022FF9E00BEFFC3FFFBFFDE0090FFF6006000960030FFFB004CFFDC00200029
470
+ 007FFADFE4B003F003CFFEDFF39FF7AFFF6FE95FFCFFFE70009FFE6FFD4FFFB
471
+ 379FFB900030032FFBFFF1000660035FFE4FFBA004BFFE6FFF6FFF80012002A
472
+ 3C600070035FF510000003C006EFFC0FF87006C000AFFC7FFC2FFE0FFB7001B
473
+ 3910037FF7A00CC0000008DFFBEFF150036FF95000D000400670036FFEAFFFC
474
+ 03FFFF3FFC10086003AFF20FF89FFE4006700C4FFFEFFEF0014FFE7009C000F
475
+ 3C70009FF8A0035FFCEFF870076003BFFE80011001FFFE9FFEFFFCB003CFFD2
476
+ 34D0027FFC60007FFE8FF440050FFCBFFB9FFF300080027FFBDFFE200880049
477
+ 3ED00120054002F0012000EFF99001C00400049003700310078FFB3007C0020
478
+ 325002AFF7600310025FFADFFADFF600001001A001D002AFFFBFFBFFFF1FFB0
479
+ 3B7001AFFD9005DFFD1FFC2FFF2FF64FFC20013FFD300070055FFF8006C0034
480
+ 3520068FFEEFFE0FFC5FFDBFF960002FF91FF0600120039FFB5FFEFFFD5001E
481
+ 3C4FFC1FFD5FF9EFFE0FF0C004BFE82FFB5FF4F0011FFDC0095FFE300100002
482
+ 038FFBBFFEF00480021006C001F0042FFDB0015FFC7FFB500190025008E006C
483
+ 012FF7EFF13FFC5FFE70094FFE4FF87FF8BFFBA001100F80005FF71FFFC0014
484
+ 01AFFB2007BFFFCFFF8FF70000DFFF4FFEB00010001FEADFFAA003EFF320012
485
+ 0DD000F010D00640008005F00B4FF5E006CFF91FFF4FF36FF7E007100AEFFF3
486
+ 01BFFD4FF2F00790016FFCE00010085FFA2001AFFDB0018FFD800780028FFC6
487
+ 020FF15012EFFCE0020FFD0FFFB00810047006E000200410076FFF50017FF18
488
+ 0B70063FFCC0012001E00A1FFC9FF82FF85FFDFFFF3FF36FFEAFFC7FFE20050
489
+ 005007EFF90FFA0FFF9FF23FF7DFF6EFFD7FFEC0001FF580058000E000EFFF2
490
+ 3A4FFFDFFC300D2000FFFD00087FFDC00230062000AFFE700A2FFADFFE3FFDC
491
+ 3B70079FF49FFDD000EFF0FFFD800DD003B003FFFE3003AFF8E003EFFE2FFAB
492
+ 3E1010AFFF9FF65FFCA007B000BFF5FFFFF00080021007CFFBC002AFFD20036
493
+ 0400017FF65FF73FFEB006B0073FFA0FF98FFEE001D0093FF590022FFBFFFC0
494
+ 3B900AD00550071FFD900380029FFE0001E00C5000EFFCDFF0BFFF70023FFF5
495
+ 3EBFEEDFF54001BFFDE00000056FFD7FFA4FFABFFEFFF86FFF2FF88FFD0004D
496
+ 00D005A0028FFEBFFE00076FFD0FEF4FFB3FFA3FFF40043FF7EFFBAFFA70027
497
+ 01E00070081FF9EFFD5FFC60060FFDC0032FFC4FFE80072FF80FFFD0014FF98
498
+ 0280007007D0001000E0072FFB3007C0003FFE4FFD3FF61000DFF5D0007FECE
499
+ 2D6FFF2FF9FFFC0FFE7FF3FFF9EFFB4FF2A0035FFD5FFF1FF660000FFB7FFE8
500
+ 376FEC4FFA0002C0015FF9D0079FFAD00590011FFB1FFE900480017008D000F
501
+ 3C3FF14004300240029003BFFA0FFA6FFCFFF660013FFC0FFE8FF5DFFF0000A
502
+ 0110033004C003EFFF3003C004500840010FFD0FFDE0024FFC7FFEA003DFF00
503
+ 066006A0092FF9A0004FFD3FF11FEBEFFAAFFEC000300560083000BFFE2FF6F
504
+ 051FF5701140006FFEA0095FF9B007D0008FF9AFFDC0018001C0025002DFFA8
505
+ 04E0032000FFFF2FFFC003D00AE0115FFAB0076FFECFFE0009F0058006BFFB2
506
+ 369004100720032000FFFDEFFB50006FFD4FFE7FFF60016FFA4001BFFAE00C8
507
+ 005FEFFFFC900800004000AFFD0FF370006FFDEFFF4FE91FFD0002DFF580124
508
+ 08BFF07FF500068001FFFC9FF800045009AFFB6FFEEFEE500050008FEDF0054
509
+ 06C0037004D001DFFE7FF6100A0FF43FFDFFF5E0011FF4CFFAEFFD9FFF4003B
510
+ 04FFFB4FFC9FFB7FFBE0013FFC8FFA50012FFEB0012FFE2FF51FFE6FFA900BD
511
+ 06700560048FEE80000001C004900920009004BFFF900D10014FFEA0015FF31
512
+ 36900D7FF84FF43000AFFE8FFE7FF2200100095002AFFAB006B004DFF7CFFC0
513
+ 3B0FFADFF83FF74FFFE001F000700B6FFB9FF840023000B0033FFD5001AFFFD
514
+ 05F000FFFE5FFD7FFDBFFB7001A007F001AFFEBFFC2FFCF0050007C00030045
515
+ 38FFFF3001BFFCDFFFAFFC0FF8CFFDEFFA0FFD600210049FFE0FFAA000B0019
516
+ 31BFF9A003BFFA2FFBD007A004A002FFFDEFF9EFFD7FFE4FFD4000AFFC50003
517
+ 0CD003200450074FFDD00A80040002E007DFFBE0011002100D5004D0044001C
518
+ 06F001A0034FFE6000CFF4D004DFF6BFFE3FFEEFFE4FFF1FFE4004700060010
519
+ 076FF4B008AFF8E00120030FFEE006BFFD4FFE5002C0029FFB3FFD8008CFF0C
520
+ 3EE0044FFF7003B002400EE005CFF73FF70FFF1002E00370070FFEBFFF2002A
521
+ 3F6006CFFF4FF98000A009DFFFDFFA6FFF5FF80FFFDFFFF007DFFEBFFEE002F
522
+ 3BB0066FFB00019FFCAFF5D0060003500010063FFFDFF6E0033FFB7FF0A002F
523
+ 3AF001100590038000B001EFFC5FFDE001BFFABFFCBFFF300050043FFC40024
524
+ 36B0134FFB3FFB2FFF8FF6FFFEFFF1C000FFFF4002FFFD2FFFA00080043005B
525
+ 3E5FFD4FFD80017000E005D000AFFD00021FFF10002002DFF1C001BFF740026
526
+ 32100850007FFFBFFDBFF5DFFC70003FF900006FFF7001EFFE60002001E0009
527
+ 3E0FF41FFAFFFEFFFCD0129FFD50007FF9EFFDF001F002DFFAEFF49FFF10045
528
+ 3E100120058FFC2FFE400A00042FF5EFFEBFFC3000CFFFB00030012FF760004
529
+ 382002EFFA2FFCAFFE7000E0022001FFFA40038FFFCFFE4FF7F0037FFFDFFEF
530
+ 3E60026FFDDFF44FFC9FFEAFFA9FF940000FFFAFFECFFD40030FF400018FF28
531
+ 3C7FFC2001DFFE6FFCD00CDFFD2005BFF5BFF91FFDA0054FFF2FFFBFFB8FFE8
532
+ 39CFFEA0018FFBCFFF8FFDD00310065FFEEFFADFFAFFFEC002EFFEDFFE3001B
533
+ 39CFF0DFF550008000F002F0034FFB7FFDB004E002C00210003FF8BFFE5003A
534
+ 033003BFFB30004FFF0FF9DFFF00020FFC2FF64FFBBFFAFFFA80011FFF4FFA6
535
+ 351FFBE0014000EFFE0FFEE0052004BFFACFFEB0044FFC5FFFC003CFF640022
536
+ 0410032FFF4002C0007FFB3FFBEFF9C00230047FFBDFFD300C7FFD8FFE9FF6D
537
+ 059002F00300001FFE9FF4B006BFF5AFF96FFC1FFE5FFEA0022006E0006FFAF
538
+ 37A0049FFCFFFE7000700210004FF7BFF8500610021FFC8FF38FF87FFAB0034
539
+ 3FBFF99FF9F0008FFD90053000E0013FFA400760011003AFF4BFFF3FFC200B1
540
+ 050FF230011FFE1FFD400BCFFCFFF2BFFDE003F001F002AFEC0FFB3FFA60035
541
+ 3B00061FFA7FF27FFFDFFEB00D1FFFAFF9CFFB90024002FFF5DFFF4FFB3FFF6
542
+ 0180016000FFFEAFF95FF9B00210089FF6F0001FFF40008FF34FFE10025FFFE
543
+ 058FFFF0009007CFFDE0051FFAAFF41001C0066000AFFB8FFF50004FF9A000E
544
+ 01900CE00A4FF54FFFDFF84FFBA00270024FFFA0027FF9AFFF10046FFF3FFB5
545
+ 065FF66002FFF38FFC1003600000131FFC7FFC7000700620008FFBA008AFFFC
546
+ 079000A0035FFBC001F00BF0078FFF8005FFFD2FFEEFFF20087002FFFE80002
547
+ 02EFFC8FFC8FFAF0022FF82FF7B0006FFED00B100150012FFD9FF960062FFDD
548
+ 323FFECFF8D0046FFFBFF45FE5CFF8D000EFFC2FFAC004EFFFB003DFFE3FFED
549
+ 034005800D4002FFFF8006B0027FFDF005EFF10000C001D00DD0044FFB8FFF3
550
+ 3BC00600018FFFFFFFFFF6D003EFE6BFFF3FFEDFFC5001B0016004DFFE3FFF8
551
+ 018FFFBFFC9FFAC00040056006A0048004A0067FFEC0054FFC4FFD3001C0006
552
+ 3BF004D0062FFEE0042FF2C003F00F1FF9300320022004A006B00000005FFA7
553
+ 36DFFE80056000AFFBEFED7FF67FDE2FFDE003DFFED0011007900280045002A
554
+ 0080070FF0FFF13FFE000930018FFD5004BFF5C000FFFD90049FFD7FFBB0002
555
+ 3170005006000B00012FFA700AFFF88FF59FFECFFA20002002C006DFFD3FFF4
556
+ 3980079FF83FFEFFFF2FEFFFE5DFEA5FFDD002EFFDAFFBA00580006007C007F
557
+ 3A5FF55FF5800290021FF13FFDDFFE5004000470007003AFEFD001EFFB2003E
558
+ 3F000A5FF6A0069FFECFF95FEE5FFADFFD7FF5CFFDCFFD3FF66FFA00034007B
559
+ 056FF06FFD8FFE3FFD7001B0024FFDFFF6E0076FFF90028FFAAFF81FFCEFFE1
560
+ 016FFFC007700030004FF1900720085FFCB001EFFDF002DFFC90035FFDFFFF3
561
+ 025000600CEFFC00001FFD6002100DFFFD900B10011FFD7FF7AFFDA003DFFD7
562
+ 034FFFDFF40FF07FFBDFFFCFFD9FFA5FFB6004FFFF6003D004DFF66003F0034
563
+ 3C1FF75FFBD004CFFD8FFB8FF9E0014FFDBFFDEFFB8FFDA00110036FFD8FFE2
564
+ 08A006E002DFFA6000B0086FF840099FFE3FE6BFFCBFFE800150012FFBDFFEE
565
+ 037FF6A004EFF64FFF2FF1700A000A6006800D8FFD000450034FF750048FFD7
566
+ 07A0072FF5C0037000FFFEAFF58FFDDFFACFE0FFFA0FFEEFFF200100006FFDC
567
+ 37FFF650159FF6CFFD6007500A80206FFFEFFC9FFFBFFDBFFE90046001DFFF8
568
+ 02A004AFFC7FF940013FF6EFF22FEFA003D00A4FFD7FFB300D7FFC5005EFFEB
569
+ 01A006DFF4E003FFFF900E1005DFE64FF6AFFCCFFEF0040002A0016FFC90010
570
+ 3F5FFF6FF5B0009FFF9FF41007CFF8DFFE400BDFFFD001B005FFFA1FFDDFFF5
571
+ 034FF9FFFE00006FFD8FFC6003F0080FF7800A90016004AFF910003FFE6002D
572
+ 022FF800105FFCCFFFCFF700004FFBBFF42FF9F000A0034FF85FFA60007FFDF
573
+ 3C6FFCF00CCFF22FFC600290042011CFFC20015FFE50043FF37FFCFFFD9FFEC
574
+ 3ABFFD60031007BFFC0FFEA0003FFB8FFC7FF3A0001006A000EFFE800130011
575
+ 3FAFFFEFFD80051000AFFD00060FFD3FFE50063000D000A0046FFF1FF9E0000
576
+ 034004DFFF2FFC80016FFC0002D001C0093FF8DFFF1FFC800A100080019FFB4
myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_w14_ROM_NP_BRdlF.v ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ `timescale 1 ns / 1 ps
7
+ module myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_w14_ROM_NP_BRdlF (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 250;
12
+ parameter AddressWidth = 10;
13
+ parameter AddressRange = 576;
14
+
15
+ input[AddressWidth-1:0] address0;
16
+ input ce0;
17
+ output reg[DataWidth-1:0] q0;
18
+
19
+ input reset;
20
+ input clk;
21
+
22
+
23
+ (* rom_style = "block" *)reg [DataWidth-1:0] rom0[0:AddressRange-1];
24
+
25
+
26
+ initial begin
27
+
28
+ $readmemh("./myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_w14_ROM_NP_BRdlF.dat", rom0);
29
+ end
30
+
31
+
32
+ always @(posedge clk)
33
+ begin
34
+ if (ce0)
35
+ begin
36
+ q0 <= rom0[address0];
37
+ end
38
+ end
39
+
40
+
41
+ endmodule
42
+
myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_36_16_5_3_0_config58_mult_s.v ADDED
@@ -0,0 +1,648 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_36_16_5_3_0_config58_mult_s (
10
+ ap_clk,
11
+ ap_rst,
12
+ ap_start,
13
+ ap_done,
14
+ ap_idle,
15
+ ap_ready,
16
+ data_0_val,
17
+ data_1_val,
18
+ data_2_val,
19
+ data_3_val,
20
+ data_4_val,
21
+ data_5_val,
22
+ data_6_val,
23
+ data_7_val,
24
+ ap_return
25
+ );
26
+
27
+ parameter ap_ST_fsm_pp0_stage0 = 1'd1;
28
+
29
+ input ap_clk;
30
+ input ap_rst;
31
+ input ap_start;
32
+ output ap_done;
33
+ output ap_idle;
34
+ output ap_ready;
35
+ input [15:0] data_0_val;
36
+ input [15:0] data_1_val;
37
+ input [15:0] data_2_val;
38
+ input [15:0] data_3_val;
39
+ input [15:0] data_4_val;
40
+ input [15:0] data_5_val;
41
+ input [15:0] data_6_val;
42
+ input [15:0] data_7_val;
43
+ output [29:0] ap_return;
44
+
45
+ reg ap_idle;
46
+ reg[29:0] ap_return;
47
+
48
+ (* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm;
49
+ wire ap_CS_fsm_pp0_stage0;
50
+ wire ap_enable_reg_pp0_iter0;
51
+ reg ap_enable_reg_pp0_iter1;
52
+ reg ap_idle_pp0;
53
+ wire ap_block_pp0_stage0_subdone;
54
+ wire [0:0] icmp_ln46_fu_385_p2;
55
+ reg ap_condition_exit_pp0_iter0_stage0;
56
+ wire ap_loop_exit_ready;
57
+ reg ap_ready_int;
58
+ reg [0:0] do_init_reg_128;
59
+ reg [2:0] phi_ln46_reg_143;
60
+ reg [15:0] data_0_val4_rewind_reg_157;
61
+ reg [15:0] data_1_val5_rewind_reg_171;
62
+ reg [15:0] data_2_val6_rewind_reg_185;
63
+ reg [15:0] data_3_val7_rewind_reg_199;
64
+ reg [15:0] data_4_val8_rewind_reg_213;
65
+ reg [15:0] data_5_val9_rewind_reg_227;
66
+ reg [15:0] data_6_val10_rewind_reg_241;
67
+ reg [15:0] data_7_val11_rewind_reg_255;
68
+ reg [29:0] res_02_reg_269;
69
+ wire ap_block_pp0_stage0_11001;
70
+ wire [2:0] w_index_fu_379_p2;
71
+ reg [2:0] w_index_reg_531;
72
+ reg [0:0] icmp_ln46_reg_536;
73
+ wire signed [29:0] grp_fu_482_p3;
74
+ reg [0:0] ap_phi_mux_do_init_phi_fu_131_p6;
75
+ wire ap_loop_init;
76
+ wire ap_block_pp0_stage0;
77
+ reg [2:0] ap_phi_mux_phi_ln46_phi_fu_146_p6;
78
+ reg [15:0] ap_phi_mux_data_0_val4_phi_phi_fu_287_p4;
79
+ reg [15:0] ap_phi_mux_data_1_val5_phi_phi_fu_299_p4;
80
+ reg [15:0] ap_phi_mux_data_2_val6_phi_phi_fu_311_p4;
81
+ reg [15:0] ap_phi_mux_data_3_val7_phi_phi_fu_323_p4;
82
+ reg [15:0] ap_phi_mux_data_4_val8_phi_phi_fu_335_p4;
83
+ reg [15:0] ap_phi_mux_data_5_val9_phi_phi_fu_347_p4;
84
+ reg [15:0] ap_phi_mux_data_6_val10_phi_phi_fu_359_p4;
85
+ reg [15:0] ap_phi_mux_data_7_val11_phi_phi_fu_371_p4;
86
+ reg signed [29:0] ap_phi_mux_res_02_phi_fu_273_p6;
87
+ reg ap_loop_init_pp0_iter1_reg;
88
+ wire [15:0] ap_phi_reg_pp0_iter0_data_0_val4_phi_reg_283;
89
+ reg [15:0] ap_phi_reg_pp0_iter1_data_0_val4_phi_reg_283;
90
+ wire [15:0] ap_phi_reg_pp0_iter0_data_1_val5_phi_reg_295;
91
+ reg [15:0] ap_phi_reg_pp0_iter1_data_1_val5_phi_reg_295;
92
+ wire [15:0] ap_phi_reg_pp0_iter0_data_2_val6_phi_reg_307;
93
+ reg [15:0] ap_phi_reg_pp0_iter1_data_2_val6_phi_reg_307;
94
+ wire [15:0] ap_phi_reg_pp0_iter0_data_3_val7_phi_reg_319;
95
+ reg [15:0] ap_phi_reg_pp0_iter1_data_3_val7_phi_reg_319;
96
+ wire [15:0] ap_phi_reg_pp0_iter0_data_4_val8_phi_reg_331;
97
+ reg [15:0] ap_phi_reg_pp0_iter1_data_4_val8_phi_reg_331;
98
+ wire [15:0] ap_phi_reg_pp0_iter0_data_5_val9_phi_reg_343;
99
+ reg [15:0] ap_phi_reg_pp0_iter1_data_5_val9_phi_reg_343;
100
+ wire [15:0] ap_phi_reg_pp0_iter0_data_6_val10_phi_reg_355;
101
+ reg [15:0] ap_phi_reg_pp0_iter1_data_6_val10_phi_reg_355;
102
+ wire [15:0] ap_phi_reg_pp0_iter0_data_7_val11_phi_reg_367;
103
+ reg [15:0] ap_phi_reg_pp0_iter1_data_7_val11_phi_reg_367;
104
+ wire [15:0] a_fu_391_p17;
105
+ wire [11:0] w_fu_431_p17;
106
+ wire signed [15:0] a_fu_391_p19;
107
+ wire signed [11:0] w_fu_431_p19;
108
+ reg [29:0] ap_return_preg;
109
+ reg ap_done_reg;
110
+ wire ap_continue_int;
111
+ reg ap_done_int;
112
+ reg ap_loop_exit_ready_pp0_iter1_reg;
113
+ reg [0:0] ap_NS_fsm;
114
+ reg ap_idle_pp0_0to0;
115
+ reg ap_reset_idle_pp0;
116
+ wire ap_enable_pp0;
117
+ wire ap_start_int;
118
+ wire ap_ready_sig;
119
+ wire ap_done_sig;
120
+ reg ap_condition_113;
121
+ reg ap_condition_119;
122
+ wire [2:0] a_fu_391_p1;
123
+ wire [2:0] a_fu_391_p3;
124
+ wire [2:0] a_fu_391_p5;
125
+ wire [2:0] a_fu_391_p7;
126
+ wire signed [2:0] a_fu_391_p9;
127
+ wire signed [2:0] a_fu_391_p11;
128
+ wire signed [2:0] a_fu_391_p13;
129
+ wire signed [2:0] a_fu_391_p15;
130
+ wire [2:0] w_fu_431_p1;
131
+ wire [2:0] w_fu_431_p3;
132
+ wire [2:0] w_fu_431_p5;
133
+ wire [2:0] w_fu_431_p7;
134
+ wire signed [2:0] w_fu_431_p9;
135
+ wire signed [2:0] w_fu_431_p11;
136
+ wire signed [2:0] w_fu_431_p13;
137
+ wire signed [2:0] w_fu_431_p15;
138
+ wire ap_ce_reg;
139
+
140
+ // power-on initialization
141
+ initial begin
142
+ #0 ap_CS_fsm = 1'd1;
143
+ #0 ap_enable_reg_pp0_iter1 = 1'b0;
144
+ #0 ap_return_preg = 30'd0;
145
+ #0 ap_done_reg = 1'b0;
146
+ end
147
+
148
+ (* dissolve_hierarchy = "yes" *) myproject_sparsemux_17_3_16_1_1 #(
149
+ .ID( 1 ),
150
+ .NUM_STAGE( 1 ),
151
+ .CASE0( 3'h0 ),
152
+ .din0_WIDTH( 16 ),
153
+ .CASE1( 3'h1 ),
154
+ .din1_WIDTH( 16 ),
155
+ .CASE2( 3'h2 ),
156
+ .din2_WIDTH( 16 ),
157
+ .CASE3( 3'h3 ),
158
+ .din3_WIDTH( 16 ),
159
+ .CASE4( 3'h4 ),
160
+ .din4_WIDTH( 16 ),
161
+ .CASE5( 3'h5 ),
162
+ .din5_WIDTH( 16 ),
163
+ .CASE6( 3'h6 ),
164
+ .din6_WIDTH( 16 ),
165
+ .CASE7( 3'h7 ),
166
+ .din7_WIDTH( 16 ),
167
+ .def_WIDTH( 16 ),
168
+ .sel_WIDTH( 3 ),
169
+ .dout_WIDTH( 16 ))
170
+ sparsemux_17_3_16_1_1_U10337(
171
+ .din0(ap_phi_mux_data_0_val4_phi_phi_fu_287_p4),
172
+ .din1(ap_phi_mux_data_1_val5_phi_phi_fu_299_p4),
173
+ .din2(ap_phi_mux_data_2_val6_phi_phi_fu_311_p4),
174
+ .din3(ap_phi_mux_data_3_val7_phi_phi_fu_323_p4),
175
+ .din4(ap_phi_mux_data_4_val8_phi_phi_fu_335_p4),
176
+ .din5(ap_phi_mux_data_5_val9_phi_phi_fu_347_p4),
177
+ .din6(ap_phi_mux_data_6_val10_phi_phi_fu_359_p4),
178
+ .din7(ap_phi_mux_data_7_val11_phi_phi_fu_371_p4),
179
+ .def(a_fu_391_p17),
180
+ .sel(phi_ln46_reg_143),
181
+ .dout(a_fu_391_p19)
182
+ );
183
+
184
+ (* dissolve_hierarchy = "yes" *) myproject_sparsemux_17_3_12_1_1 #(
185
+ .ID( 1 ),
186
+ .NUM_STAGE( 1 ),
187
+ .CASE0( 3'h0 ),
188
+ .din0_WIDTH( 12 ),
189
+ .CASE1( 3'h1 ),
190
+ .din1_WIDTH( 12 ),
191
+ .CASE2( 3'h2 ),
192
+ .din2_WIDTH( 12 ),
193
+ .CASE3( 3'h3 ),
194
+ .din3_WIDTH( 12 ),
195
+ .CASE4( 3'h4 ),
196
+ .din4_WIDTH( 12 ),
197
+ .CASE5( 3'h5 ),
198
+ .din5_WIDTH( 12 ),
199
+ .CASE6( 3'h6 ),
200
+ .din6_WIDTH( 12 ),
201
+ .CASE7( 3'h7 ),
202
+ .din7_WIDTH( 12 ),
203
+ .def_WIDTH( 12 ),
204
+ .sel_WIDTH( 3 ),
205
+ .dout_WIDTH( 12 ))
206
+ sparsemux_17_3_12_1_1_U10338(
207
+ .din0(12'd3452),
208
+ .din1(12'd978),
209
+ .din2(12'd3298),
210
+ .din3(12'd3581),
211
+ .din4(12'd3649),
212
+ .din5(12'd624),
213
+ .din6(12'd3542),
214
+ .din7(12'd2852),
215
+ .def(w_fu_431_p17),
216
+ .sel(phi_ln46_reg_143),
217
+ .dout(w_fu_431_p19)
218
+ );
219
+
220
+ myproject_mac_muladd_16s_12s_30s_30_1_1 #(
221
+ .ID( 1 ),
222
+ .NUM_STAGE( 1 ),
223
+ .din0_WIDTH( 16 ),
224
+ .din1_WIDTH( 12 ),
225
+ .din2_WIDTH( 30 ),
226
+ .dout_WIDTH( 30 ))
227
+ mac_muladd_16s_12s_30s_30_1_1_U10339(
228
+ .din0(a_fu_391_p19),
229
+ .din1(w_fu_431_p19),
230
+ .din2(ap_phi_mux_res_02_phi_fu_273_p6),
231
+ .dout(grp_fu_482_p3)
232
+ );
233
+
234
+ myproject_flow_control_loop_pipe_no_ap_cont flow_control_loop_pipe_no_ap_cont_U(
235
+ .ap_clk(ap_clk),
236
+ .ap_rst(ap_rst),
237
+ .ap_start(ap_start),
238
+ .ap_ready(ap_ready_sig),
239
+ .ap_done(ap_done_sig),
240
+ .ap_start_int(ap_start_int),
241
+ .ap_loop_init(ap_loop_init),
242
+ .ap_ready_int(ap_ready_int),
243
+ .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0),
244
+ .ap_loop_exit_done(ap_done_int),
245
+ .ap_continue_int(ap_continue_int),
246
+ .ap_done_int(ap_done_int)
247
+ );
248
+
249
+ always @ (posedge ap_clk) begin
250
+ if (ap_rst == 1'b1) begin
251
+ ap_CS_fsm <= ap_ST_fsm_pp0_stage0;
252
+ end else begin
253
+ ap_CS_fsm <= ap_NS_fsm;
254
+ end
255
+ end
256
+
257
+ always @ (posedge ap_clk) begin
258
+ if (ap_rst == 1'b1) begin
259
+ ap_done_reg <= 1'b0;
260
+ end else begin
261
+ if ((ap_continue_int == 1'b1)) begin
262
+ ap_done_reg <= 1'b0;
263
+ end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter1_reg == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
264
+ ap_done_reg <= 1'b1;
265
+ end
266
+ end
267
+ end
268
+
269
+ always @ (posedge ap_clk) begin
270
+ if (ap_rst == 1'b1) begin
271
+ ap_enable_reg_pp0_iter1 <= 1'b0;
272
+ end else begin
273
+ if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
274
+ ap_enable_reg_pp0_iter1 <= ap_start_int;
275
+ end
276
+ end
277
+ end
278
+
279
+ always @ (posedge ap_clk) begin
280
+ if (ap_rst == 1'b1) begin
281
+ ap_return_preg <= 30'd0;
282
+ end else begin
283
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd1))) begin
284
+ ap_return_preg <= grp_fu_482_p3;
285
+ end
286
+ end
287
+ end
288
+
289
+ always @ (posedge ap_clk) begin
290
+ if ((1'b1 == ap_CS_fsm_pp0_stage0)) begin
291
+ if (((ap_loop_exit_ready == 1'b0) & (1'b0 == ap_block_pp0_stage0_subdone))) begin
292
+ ap_loop_exit_ready_pp0_iter1_reg <= 1'b0;
293
+ end else if ((1'b0 == ap_block_pp0_stage0_11001)) begin
294
+ ap_loop_exit_ready_pp0_iter1_reg <= ap_loop_exit_ready;
295
+ end
296
+ end
297
+ end
298
+
299
+ always @ (posedge ap_clk) begin
300
+ if ((1'b1 == ap_condition_113)) begin
301
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
302
+ ap_phi_reg_pp0_iter1_data_0_val4_phi_reg_283 <= data_0_val;
303
+ end else if ((1'b1 == 1'b1)) begin
304
+ ap_phi_reg_pp0_iter1_data_0_val4_phi_reg_283 <= ap_phi_reg_pp0_iter0_data_0_val4_phi_reg_283;
305
+ end
306
+ end
307
+ end
308
+
309
+ always @ (posedge ap_clk) begin
310
+ if ((1'b1 == ap_condition_113)) begin
311
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
312
+ ap_phi_reg_pp0_iter1_data_1_val5_phi_reg_295 <= data_1_val;
313
+ end else if ((1'b1 == 1'b1)) begin
314
+ ap_phi_reg_pp0_iter1_data_1_val5_phi_reg_295 <= ap_phi_reg_pp0_iter0_data_1_val5_phi_reg_295;
315
+ end
316
+ end
317
+ end
318
+
319
+ always @ (posedge ap_clk) begin
320
+ if ((1'b1 == ap_condition_113)) begin
321
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
322
+ ap_phi_reg_pp0_iter1_data_2_val6_phi_reg_307 <= data_2_val;
323
+ end else if ((1'b1 == 1'b1)) begin
324
+ ap_phi_reg_pp0_iter1_data_2_val6_phi_reg_307 <= ap_phi_reg_pp0_iter0_data_2_val6_phi_reg_307;
325
+ end
326
+ end
327
+ end
328
+
329
+ always @ (posedge ap_clk) begin
330
+ if ((1'b1 == ap_condition_113)) begin
331
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
332
+ ap_phi_reg_pp0_iter1_data_3_val7_phi_reg_319 <= data_3_val;
333
+ end else if ((1'b1 == 1'b1)) begin
334
+ ap_phi_reg_pp0_iter1_data_3_val7_phi_reg_319 <= ap_phi_reg_pp0_iter0_data_3_val7_phi_reg_319;
335
+ end
336
+ end
337
+ end
338
+
339
+ always @ (posedge ap_clk) begin
340
+ if ((1'b1 == ap_condition_113)) begin
341
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
342
+ ap_phi_reg_pp0_iter1_data_4_val8_phi_reg_331 <= data_4_val;
343
+ end else if ((1'b1 == 1'b1)) begin
344
+ ap_phi_reg_pp0_iter1_data_4_val8_phi_reg_331 <= ap_phi_reg_pp0_iter0_data_4_val8_phi_reg_331;
345
+ end
346
+ end
347
+ end
348
+
349
+ always @ (posedge ap_clk) begin
350
+ if ((1'b1 == ap_condition_113)) begin
351
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
352
+ ap_phi_reg_pp0_iter1_data_5_val9_phi_reg_343 <= data_5_val;
353
+ end else if ((1'b1 == 1'b1)) begin
354
+ ap_phi_reg_pp0_iter1_data_5_val9_phi_reg_343 <= ap_phi_reg_pp0_iter0_data_5_val9_phi_reg_343;
355
+ end
356
+ end
357
+ end
358
+
359
+ always @ (posedge ap_clk) begin
360
+ if ((1'b1 == ap_condition_113)) begin
361
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
362
+ ap_phi_reg_pp0_iter1_data_6_val10_phi_reg_355 <= data_6_val;
363
+ end else if ((1'b1 == 1'b1)) begin
364
+ ap_phi_reg_pp0_iter1_data_6_val10_phi_reg_355 <= ap_phi_reg_pp0_iter0_data_6_val10_phi_reg_355;
365
+ end
366
+ end
367
+ end
368
+
369
+ always @ (posedge ap_clk) begin
370
+ if ((1'b1 == ap_condition_113)) begin
371
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
372
+ ap_phi_reg_pp0_iter1_data_7_val11_phi_reg_367 <= data_7_val;
373
+ end else if ((1'b1 == 1'b1)) begin
374
+ ap_phi_reg_pp0_iter1_data_7_val11_phi_reg_367 <= ap_phi_reg_pp0_iter0_data_7_val11_phi_reg_367;
375
+ end
376
+ end
377
+ end
378
+
379
+ always @ (posedge ap_clk) begin
380
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd0))) begin
381
+ do_init_reg_128 <= 1'd0;
382
+ end else if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd1)) | ((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init == 1'b1)))) begin
383
+ do_init_reg_128 <= 1'd1;
384
+ end
385
+ end
386
+
387
+ always @ (posedge ap_clk) begin
388
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd0))) begin
389
+ phi_ln46_reg_143 <= w_index_reg_531;
390
+ end else if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd1)) | ((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init == 1'b1)))) begin
391
+ phi_ln46_reg_143 <= 3'd0;
392
+ end
393
+ end
394
+
395
+ always @ (posedge ap_clk) begin
396
+ if ((1'b1 == ap_condition_119)) begin
397
+ if ((icmp_ln46_reg_536 == 1'd1)) begin
398
+ res_02_reg_269 <= 30'd1073627136;
399
+ end else if ((icmp_ln46_reg_536 == 1'd0)) begin
400
+ res_02_reg_269 <= grp_fu_482_p3;
401
+ end
402
+ end
403
+ end
404
+
405
+ always @ (posedge ap_clk) begin
406
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
407
+ ap_loop_init_pp0_iter1_reg <= ap_loop_init;
408
+ icmp_ln46_reg_536 <= icmp_ln46_fu_385_p2;
409
+ end
410
+ end
411
+
412
+ always @ (posedge ap_clk) begin
413
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd0))) begin
414
+ data_0_val4_rewind_reg_157 <= ap_phi_mux_data_0_val4_phi_phi_fu_287_p4;
415
+ data_1_val5_rewind_reg_171 <= ap_phi_mux_data_1_val5_phi_phi_fu_299_p4;
416
+ data_2_val6_rewind_reg_185 <= ap_phi_mux_data_2_val6_phi_phi_fu_311_p4;
417
+ data_3_val7_rewind_reg_199 <= ap_phi_mux_data_3_val7_phi_phi_fu_323_p4;
418
+ data_4_val8_rewind_reg_213 <= ap_phi_mux_data_4_val8_phi_phi_fu_335_p4;
419
+ data_5_val9_rewind_reg_227 <= ap_phi_mux_data_5_val9_phi_phi_fu_347_p4;
420
+ data_6_val10_rewind_reg_241 <= ap_phi_mux_data_6_val10_phi_phi_fu_359_p4;
421
+ data_7_val11_rewind_reg_255 <= ap_phi_mux_data_7_val11_phi_phi_fu_371_p4;
422
+ end
423
+ end
424
+
425
+ always @ (posedge ap_clk) begin
426
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
427
+ w_index_reg_531 <= w_index_fu_379_p2;
428
+ end
429
+ end
430
+
431
+ always @ (*) begin
432
+ if (((icmp_ln46_fu_385_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
433
+ ap_condition_exit_pp0_iter0_stage0 = 1'b1;
434
+ end else begin
435
+ ap_condition_exit_pp0_iter0_stage0 = 1'b0;
436
+ end
437
+ end
438
+
439
+ always @ (*) begin
440
+ if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter1_reg == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
441
+ ap_done_int = 1'b1;
442
+ end else begin
443
+ ap_done_int = ap_done_reg;
444
+ end
445
+ end
446
+
447
+ always @ (*) begin
448
+ if (((ap_start_int == 1'b0) & (ap_idle_pp0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
449
+ ap_idle = 1'b1;
450
+ end else begin
451
+ ap_idle = 1'b0;
452
+ end
453
+ end
454
+
455
+ always @ (*) begin
456
+ if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin
457
+ ap_idle_pp0 = 1'b1;
458
+ end else begin
459
+ ap_idle_pp0 = 1'b0;
460
+ end
461
+ end
462
+
463
+ always @ (*) begin
464
+ if ((ap_enable_reg_pp0_iter0 == 1'b0)) begin
465
+ ap_idle_pp0_0to0 = 1'b1;
466
+ end else begin
467
+ ap_idle_pp0_0to0 = 1'b0;
468
+ end
469
+ end
470
+
471
+ always @ (*) begin
472
+ if ((do_init_reg_128 == 1'd0)) begin
473
+ ap_phi_mux_data_0_val4_phi_phi_fu_287_p4 = data_0_val4_rewind_reg_157;
474
+ end else begin
475
+ ap_phi_mux_data_0_val4_phi_phi_fu_287_p4 = ap_phi_reg_pp0_iter1_data_0_val4_phi_reg_283;
476
+ end
477
+ end
478
+
479
+ always @ (*) begin
480
+ if ((do_init_reg_128 == 1'd0)) begin
481
+ ap_phi_mux_data_1_val5_phi_phi_fu_299_p4 = data_1_val5_rewind_reg_171;
482
+ end else begin
483
+ ap_phi_mux_data_1_val5_phi_phi_fu_299_p4 = ap_phi_reg_pp0_iter1_data_1_val5_phi_reg_295;
484
+ end
485
+ end
486
+
487
+ always @ (*) begin
488
+ if ((do_init_reg_128 == 1'd0)) begin
489
+ ap_phi_mux_data_2_val6_phi_phi_fu_311_p4 = data_2_val6_rewind_reg_185;
490
+ end else begin
491
+ ap_phi_mux_data_2_val6_phi_phi_fu_311_p4 = ap_phi_reg_pp0_iter1_data_2_val6_phi_reg_307;
492
+ end
493
+ end
494
+
495
+ always @ (*) begin
496
+ if ((do_init_reg_128 == 1'd0)) begin
497
+ ap_phi_mux_data_3_val7_phi_phi_fu_323_p4 = data_3_val7_rewind_reg_199;
498
+ end else begin
499
+ ap_phi_mux_data_3_val7_phi_phi_fu_323_p4 = ap_phi_reg_pp0_iter1_data_3_val7_phi_reg_319;
500
+ end
501
+ end
502
+
503
+ always @ (*) begin
504
+ if ((do_init_reg_128 == 1'd0)) begin
505
+ ap_phi_mux_data_4_val8_phi_phi_fu_335_p4 = data_4_val8_rewind_reg_213;
506
+ end else begin
507
+ ap_phi_mux_data_4_val8_phi_phi_fu_335_p4 = ap_phi_reg_pp0_iter1_data_4_val8_phi_reg_331;
508
+ end
509
+ end
510
+
511
+ always @ (*) begin
512
+ if ((do_init_reg_128 == 1'd0)) begin
513
+ ap_phi_mux_data_5_val9_phi_phi_fu_347_p4 = data_5_val9_rewind_reg_227;
514
+ end else begin
515
+ ap_phi_mux_data_5_val9_phi_phi_fu_347_p4 = ap_phi_reg_pp0_iter1_data_5_val9_phi_reg_343;
516
+ end
517
+ end
518
+
519
+ always @ (*) begin
520
+ if ((do_init_reg_128 == 1'd0)) begin
521
+ ap_phi_mux_data_6_val10_phi_phi_fu_359_p4 = data_6_val10_rewind_reg_241;
522
+ end else begin
523
+ ap_phi_mux_data_6_val10_phi_phi_fu_359_p4 = ap_phi_reg_pp0_iter1_data_6_val10_phi_reg_355;
524
+ end
525
+ end
526
+
527
+ always @ (*) begin
528
+ if ((do_init_reg_128 == 1'd0)) begin
529
+ ap_phi_mux_data_7_val11_phi_phi_fu_371_p4 = data_7_val11_rewind_reg_255;
530
+ end else begin
531
+ ap_phi_mux_data_7_val11_phi_phi_fu_371_p4 = ap_phi_reg_pp0_iter1_data_7_val11_phi_reg_367;
532
+ end
533
+ end
534
+
535
+ always @ (*) begin
536
+ if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd0))) begin
537
+ ap_phi_mux_do_init_phi_fu_131_p6 = 1'd0;
538
+ end else if ((((1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init == 1'b1)) | ((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd1)))) begin
539
+ ap_phi_mux_do_init_phi_fu_131_p6 = 1'd1;
540
+ end else begin
541
+ ap_phi_mux_do_init_phi_fu_131_p6 = do_init_reg_128;
542
+ end
543
+ end
544
+
545
+ always @ (*) begin
546
+ if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd0))) begin
547
+ ap_phi_mux_phi_ln46_phi_fu_146_p6 = w_index_reg_531;
548
+ end else if ((((1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init == 1'b1)) | ((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd1)))) begin
549
+ ap_phi_mux_phi_ln46_phi_fu_146_p6 = 3'd0;
550
+ end else begin
551
+ ap_phi_mux_phi_ln46_phi_fu_146_p6 = phi_ln46_reg_143;
552
+ end
553
+ end
554
+
555
+ always @ (*) begin
556
+ if (((1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init_pp0_iter1_reg == 1'b1))) begin
557
+ ap_phi_mux_res_02_phi_fu_273_p6 = 30'd1073627136;
558
+ end else begin
559
+ ap_phi_mux_res_02_phi_fu_273_p6 = res_02_reg_269;
560
+ end
561
+ end
562
+
563
+ always @ (*) begin
564
+ if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
565
+ ap_ready_int = 1'b1;
566
+ end else begin
567
+ ap_ready_int = 1'b0;
568
+ end
569
+ end
570
+
571
+ always @ (*) begin
572
+ if (((ap_start_int == 1'b0) & (ap_idle_pp0_0to0 == 1'b1))) begin
573
+ ap_reset_idle_pp0 = 1'b1;
574
+ end else begin
575
+ ap_reset_idle_pp0 = 1'b0;
576
+ end
577
+ end
578
+
579
+ always @ (*) begin
580
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_536 == 1'd1))) begin
581
+ ap_return = grp_fu_482_p3;
582
+ end else begin
583
+ ap_return = ap_return_preg;
584
+ end
585
+ end
586
+
587
+ always @ (*) begin
588
+ case (ap_CS_fsm)
589
+ ap_ST_fsm_pp0_stage0 : begin
590
+ ap_NS_fsm = ap_ST_fsm_pp0_stage0;
591
+ end
592
+ default : begin
593
+ ap_NS_fsm = 'bx;
594
+ end
595
+ endcase
596
+ end
597
+
598
+ assign a_fu_391_p17 = 'bx;
599
+
600
+ assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0];
601
+
602
+ assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1);
603
+
604
+ assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1);
605
+
606
+ assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1);
607
+
608
+ always @ (*) begin
609
+ ap_condition_113 = ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0));
610
+ end
611
+
612
+ always @ (*) begin
613
+ ap_condition_119 = ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0));
614
+ end
615
+
616
+ assign ap_done = ap_done_sig;
617
+
618
+ assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1);
619
+
620
+ assign ap_enable_reg_pp0_iter0 = ap_start_int;
621
+
622
+ assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0;
623
+
624
+ assign ap_phi_reg_pp0_iter0_data_0_val4_phi_reg_283 = 'bx;
625
+
626
+ assign ap_phi_reg_pp0_iter0_data_1_val5_phi_reg_295 = 'bx;
627
+
628
+ assign ap_phi_reg_pp0_iter0_data_2_val6_phi_reg_307 = 'bx;
629
+
630
+ assign ap_phi_reg_pp0_iter0_data_3_val7_phi_reg_319 = 'bx;
631
+
632
+ assign ap_phi_reg_pp0_iter0_data_4_val8_phi_reg_331 = 'bx;
633
+
634
+ assign ap_phi_reg_pp0_iter0_data_5_val9_phi_reg_343 = 'bx;
635
+
636
+ assign ap_phi_reg_pp0_iter0_data_6_val10_phi_reg_355 = 'bx;
637
+
638
+ assign ap_phi_reg_pp0_iter0_data_7_val11_phi_reg_367 = 'bx;
639
+
640
+ assign ap_ready = ap_ready_sig;
641
+
642
+ assign icmp_ln46_fu_385_p2 = ((ap_phi_mux_phi_ln46_phi_fu_146_p6 == 3'd7) ? 1'b1 : 1'b0);
643
+
644
+ assign w_fu_431_p17 = 'bx;
645
+
646
+ assign w_index_fu_379_p2 = (ap_phi_mux_phi_ln46_phi_fu_146_p6 + 3'd1);
647
+
648
+ endmodule //myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_36_16_5_3_0_config58_mult_s
myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config12_mult_s_w12_Rcgu.v ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ `timescale 1 ns / 1 ps
7
+ module myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config12_mult_s_w12_Rcgu (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 506;
12
+ parameter AddressWidth = 8;
13
+ parameter AddressRange = 144;
14
+
15
+ input[AddressWidth-1:0] address0;
16
+ input ce0;
17
+ output reg[DataWidth-1:0] q0;
18
+
19
+ input reset;
20
+ input clk;
21
+
22
+
23
+ (* rom_style = "block" *)reg [DataWidth-1:0] rom0[0:AddressRange-1];
24
+
25
+
26
+ initial begin
27
+
28
+ $readmemh("./myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config12_mult_s_w12_Rcgu.dat", rom0);
29
+ end
30
+
31
+
32
+ always @(posedge clk)
33
+ begin
34
+ if (ce0)
35
+ begin
36
+ q0 <= rom0[address0];
37
+ end
38
+ end
39
+
40
+
41
+ endmodule
42
+
myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbrm.v ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ `timescale 1 ns / 1 ps
7
+ module myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbrm (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 506;
12
+ parameter AddressWidth = 7;
13
+ parameter AddressRange = 72;
14
+
15
+ input[AddressWidth-1:0] address0;
16
+ input ce0;
17
+ output reg[DataWidth-1:0] q0;
18
+
19
+ input reset;
20
+ input clk;
21
+
22
+
23
+ (* rom_style = "block" *)reg [DataWidth-1:0] rom0[0:AddressRange-1];
24
+
25
+
26
+ initial begin
27
+
28
+ $readmemh("./myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbrm.dat", rom0);
29
+ end
30
+
31
+
32
+ always @(posedge clk)
33
+ begin
34
+ if (ce0)
35
+ begin
36
+ q0 <= rom0[address0];
37
+ end
38
+ end
39
+
40
+
41
+ endmodule
42
+
myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbtn.v ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ `timescale 1 ns / 1 ps
7
+ module myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbtn (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 251;
12
+ parameter AddressWidth = 8;
13
+ parameter AddressRange = 144;
14
+
15
+ input[AddressWidth-1:0] address0;
16
+ input ce0;
17
+ output reg[DataWidth-1:0] q0;
18
+
19
+ input reset;
20
+ input clk;
21
+
22
+
23
+ (* rom_style = "block" *)reg [DataWidth-1:0] rom0[0:AddressRange-1];
24
+
25
+
26
+ initial begin
27
+
28
+ $readmemh("./myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbtn.dat", rom0);
29
+ end
30
+
31
+
32
+ always @(posedge clk)
33
+ begin
34
+ if (ce0)
35
+ begin
36
+ q0 <= rom0[address0];
37
+ end
38
+ end
39
+
40
+
41
+ endmodule
42
+
myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_42_22_5_3_0_config14_mult_s.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/impl/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_42_22_5_3_0_config14_mult_s_w14_RdjF.v ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ `timescale 1 ns / 1 ps
7
+ module myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_42_22_5_3_0_config14_mult_s_w14_RdjF (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 1018;
12
+ parameter AddressWidth = 8;
13
+ parameter AddressRange = 144;
14
+
15
+ input[AddressWidth-1:0] address0;
16
+ input ce0;
17
+ output reg[DataWidth-1:0] q0;
18
+
19
+ input reset;
20
+ input clk;
21
+
22
+
23
+ (* rom_style = "block" *)reg [DataWidth-1:0] rom0[0:AddressRange-1];
24
+
25
+
26
+ initial begin
27
+
28
+ $readmemh("./myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_42_22_5_3_0_config14_mult_s_w14_RdjF.dat", rom0);
29
+ end
30
+
31
+
32
+ always @(posedge clk)
33
+ begin
34
+ if (ce0)
35
+ begin
36
+ q0 <= rom0[address0];
37
+ end
38
+ end
39
+
40
+
41
+ endmodule
42
+
myproject_prj/solution1/impl/verilog/myproject_fifo_w1376_d256_A.v ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 2
10
+
11
+ module myproject_fifo_w1376_d256_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 1376,
15
+ ADDR_WIDTH = 8,
16
+ DEPTH = 256)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ MEM_DEPTH = DEPTH - 1,
40
+ MEM_AWIDTH = clog2(MEM_DEPTH);
41
+ //------------------------Local signal-------------------
42
+ reg [MEM_AWIDTH-1:0] waddr;
43
+ reg [MEM_AWIDTH-1:0] raddr;
44
+ wire [MEM_AWIDTH-1:0] wnext;
45
+ wire [MEM_AWIDTH-1:0] rnext;
46
+ wire push;
47
+ wire pop;
48
+ reg [MEM_AWIDTH:0] mOutPtr;
49
+ reg empty_n = 1'b0;
50
+ reg full_n = 1'b1;
51
+ // has num_data_valid?
52
+ wire num_extra_words;//yes
53
+ reg [ADDR_WIDTH:0] num_data_valid; //yes
54
+
55
+ wire pop_dout;
56
+ reg [ADDR_WIDTH:0] num_data_cnt;
57
+ reg dout_vld = 1'b0;
58
+
59
+ //------------------------Instantiation------------------
60
+ myproject_fifo_w1376_d256_A_ram
61
+ #( .MEM_STYLE (MEM_STYLE),
62
+ .DATA_WIDTH (DATA_WIDTH),
63
+ .ADDR_WIDTH (MEM_AWIDTH),
64
+ .DEPTH (MEM_DEPTH)
65
+ ) U_myproject_fifo_w1376_d256_A_ram (
66
+ .clk (clk),
67
+ .reset (reset),
68
+ .we (push),
69
+ .waddr (waddr),
70
+ .din (if_din),
71
+ .raddr (raddr),
72
+ .rden (pop),
73
+ .dout (if_dout)
74
+ );
75
+
76
+ //------------------------Task and function--------------
77
+ function integer clog2;
78
+ input integer x;
79
+ integer n, m;
80
+ begin
81
+ n = 1;
82
+ m = 2;
83
+ while (m < x) begin
84
+ n = n + 1;
85
+ m = m * 2;
86
+ end
87
+ clog2 = n;
88
+ end
89
+ endfunction
90
+ //------------------------Body---------------------------
91
+ // num_data_valid
92
+ assign if_num_data_valid = num_data_valid;
93
+ assign if_fifo_cap = DEPTH;
94
+
95
+ // almost full/empty
96
+
97
+ // program full/empty
98
+
99
+ assign if_full_n = full_n;
100
+ assign if_empty_n = dout_vld;
101
+
102
+ assign push = full_n & if_write_ce & if_write;
103
+ assign pop = empty_n & (pop_dout | ~dout_vld);
104
+ assign pop_dout = dout_vld & if_read_ce & if_read;
105
+
106
+ assign wnext = !push ? waddr :
107
+ (waddr == MEM_DEPTH - 1) ? 1'b0 :
108
+ waddr + 1'b1;
109
+ assign rnext = !pop ? raddr :
110
+ (raddr == MEM_DEPTH - 1) ? 1'b0 :
111
+ raddr + 1'b1;
112
+
113
+ // waddr
114
+ always @(posedge clk) begin
115
+ if (reset)
116
+ waddr <= {MEM_AWIDTH{1'b0}};
117
+ else
118
+ waddr <= wnext;
119
+ end
120
+
121
+ // raddr
122
+ always @(posedge clk) begin
123
+ if (reset)
124
+ raddr <= {MEM_AWIDTH{1'b0}};
125
+ else
126
+ raddr <= rnext;
127
+ end
128
+
129
+ // mOutPtr
130
+ always @(posedge clk) begin
131
+ if (reset)
132
+ mOutPtr <= {MEM_AWIDTH+1{1'b0}};
133
+ else if (push & ~pop)
134
+ mOutPtr <= mOutPtr + 1'b1;
135
+ else if (~push & pop)
136
+ mOutPtr <= mOutPtr - 1'b1;
137
+ end
138
+
139
+ // full_n
140
+ always @(posedge clk) begin
141
+ if (reset)
142
+ full_n <= 1'b1;
143
+ else if ((push & ~pop_dout) && (num_data_cnt == DEPTH - 1))
144
+ full_n <= 1'b0;
145
+ else if (~push & pop_dout)
146
+ full_n <= 1'b1;
147
+ end
148
+
149
+ // empty_n
150
+ always @(posedge clk) begin
151
+ if (reset)
152
+ empty_n <= 1'b0;
153
+ else if (push & ~pop)
154
+ empty_n <= 1'b1;
155
+ else if ((~push & pop) && (mOutPtr == 1))
156
+ empty_n <= 1'b0;
157
+ end
158
+
159
+ // almost_full_n
160
+
161
+ // almost_empty_n
162
+
163
+ // prog_full_n
164
+
165
+ // prog_empty_n
166
+
167
+ // num_data_cnt
168
+ always @(posedge clk) begin
169
+ if (reset)
170
+ num_data_cnt <= {ADDR_WIDTH+1{1'b0}};
171
+ else if ( push & ~pop_dout)
172
+ num_data_cnt <= num_data_cnt + 1'b1;
173
+ else if (~push & pop_dout)
174
+ num_data_cnt <= num_data_cnt - 1'b1;
175
+ end
176
+
177
+ // num_data_valid
178
+ assign num_extra_words = (dout_vld & ~pop_dout) ? 1 : 0;
179
+
180
+ always @(posedge clk) begin
181
+ if (reset)
182
+ num_data_valid <= {ADDR_WIDTH+1{1'b0}};
183
+ else if (empty_n | (dout_vld & ~pop_dout))
184
+ num_data_valid <= push + mOutPtr + num_extra_words;
185
+ else
186
+ num_data_valid <= num_extra_words;
187
+ end //
188
+
189
+ // dout_vld
190
+ always @(posedge clk) begin
191
+ if (reset)
192
+ dout_vld <= 1'b0;
193
+ else if (pop)
194
+ dout_vld <= 1'b1;
195
+ else if (pop_dout)
196
+ dout_vld <= 1'b0;
197
+ end
198
+
199
+ endmodule
200
+
201
+
202
+ module myproject_fifo_w1376_d256_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 1376,
206
+ ADDR_WIDTH = 8,
207
+ DEPTH = 256)
208
+ (
209
+ input wire clk,
210
+ input wire reset,
211
+ input wire we,
212
+ input wire [ADDR_WIDTH-1:0] waddr,
213
+ input wire [DATA_WIDTH-1:0] din,
214
+ input wire [ADDR_WIDTH-1:0] raddr,
215
+ input wire rden,
216
+ output wire [DATA_WIDTH-1:0] dout
217
+ );
218
+
219
+ (* ram_style = MEM_STYLE *)
220
+ reg [DATA_WIDTH-1:0] mem[0:DEPTH-1];
221
+ reg [DATA_WIDTH-1:0] mem_reg;
222
+
223
+ always @(posedge clk) begin
224
+ if (we)
225
+ mem[waddr] <= din;
226
+ end
227
+
228
+ always @(posedge clk) begin
229
+ if (reset)
230
+ mem_reg <= 0;
231
+ else if (rden)
232
+ mem_reg <= mem[raddr];
233
+ end
234
+
235
+ assign dout = mem_reg;
236
+
237
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_fifo_w1536_d256_A.v ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 2
10
+
11
+ module myproject_fifo_w1536_d256_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 1536,
15
+ ADDR_WIDTH = 8,
16
+ DEPTH = 256)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ MEM_DEPTH = DEPTH - 1,
40
+ MEM_AWIDTH = clog2(MEM_DEPTH);
41
+ //------------------------Local signal-------------------
42
+ reg [MEM_AWIDTH-1:0] waddr;
43
+ reg [MEM_AWIDTH-1:0] raddr;
44
+ wire [MEM_AWIDTH-1:0] wnext;
45
+ wire [MEM_AWIDTH-1:0] rnext;
46
+ wire push;
47
+ wire pop;
48
+ reg [MEM_AWIDTH:0] mOutPtr;
49
+ reg empty_n = 1'b0;
50
+ reg full_n = 1'b1;
51
+ // has num_data_valid?
52
+ wire num_extra_words;//yes
53
+ reg [ADDR_WIDTH:0] num_data_valid; //yes
54
+
55
+ wire pop_dout;
56
+ reg [ADDR_WIDTH:0] num_data_cnt;
57
+ reg dout_vld = 1'b0;
58
+
59
+ //------------------------Instantiation------------------
60
+ myproject_fifo_w1536_d256_A_ram
61
+ #( .MEM_STYLE (MEM_STYLE),
62
+ .DATA_WIDTH (DATA_WIDTH),
63
+ .ADDR_WIDTH (MEM_AWIDTH),
64
+ .DEPTH (MEM_DEPTH)
65
+ ) U_myproject_fifo_w1536_d256_A_ram (
66
+ .clk (clk),
67
+ .reset (reset),
68
+ .we (push),
69
+ .waddr (waddr),
70
+ .din (if_din),
71
+ .raddr (raddr),
72
+ .rden (pop),
73
+ .dout (if_dout)
74
+ );
75
+
76
+ //------------------------Task and function--------------
77
+ function integer clog2;
78
+ input integer x;
79
+ integer n, m;
80
+ begin
81
+ n = 1;
82
+ m = 2;
83
+ while (m < x) begin
84
+ n = n + 1;
85
+ m = m * 2;
86
+ end
87
+ clog2 = n;
88
+ end
89
+ endfunction
90
+ //------------------------Body---------------------------
91
+ // num_data_valid
92
+ assign if_num_data_valid = num_data_valid;
93
+ assign if_fifo_cap = DEPTH;
94
+
95
+ // almost full/empty
96
+
97
+ // program full/empty
98
+
99
+ assign if_full_n = full_n;
100
+ assign if_empty_n = dout_vld;
101
+
102
+ assign push = full_n & if_write_ce & if_write;
103
+ assign pop = empty_n & (pop_dout | ~dout_vld);
104
+ assign pop_dout = dout_vld & if_read_ce & if_read;
105
+
106
+ assign wnext = !push ? waddr :
107
+ (waddr == MEM_DEPTH - 1) ? 1'b0 :
108
+ waddr + 1'b1;
109
+ assign rnext = !pop ? raddr :
110
+ (raddr == MEM_DEPTH - 1) ? 1'b0 :
111
+ raddr + 1'b1;
112
+
113
+ // waddr
114
+ always @(posedge clk) begin
115
+ if (reset)
116
+ waddr <= {MEM_AWIDTH{1'b0}};
117
+ else
118
+ waddr <= wnext;
119
+ end
120
+
121
+ // raddr
122
+ always @(posedge clk) begin
123
+ if (reset)
124
+ raddr <= {MEM_AWIDTH{1'b0}};
125
+ else
126
+ raddr <= rnext;
127
+ end
128
+
129
+ // mOutPtr
130
+ always @(posedge clk) begin
131
+ if (reset)
132
+ mOutPtr <= {MEM_AWIDTH+1{1'b0}};
133
+ else if (push & ~pop)
134
+ mOutPtr <= mOutPtr + 1'b1;
135
+ else if (~push & pop)
136
+ mOutPtr <= mOutPtr - 1'b1;
137
+ end
138
+
139
+ // full_n
140
+ always @(posedge clk) begin
141
+ if (reset)
142
+ full_n <= 1'b1;
143
+ else if ((push & ~pop_dout) && (num_data_cnt == DEPTH - 1))
144
+ full_n <= 1'b0;
145
+ else if (~push & pop_dout)
146
+ full_n <= 1'b1;
147
+ end
148
+
149
+ // empty_n
150
+ always @(posedge clk) begin
151
+ if (reset)
152
+ empty_n <= 1'b0;
153
+ else if (push & ~pop)
154
+ empty_n <= 1'b1;
155
+ else if ((~push & pop) && (mOutPtr == 1))
156
+ empty_n <= 1'b0;
157
+ end
158
+
159
+ // almost_full_n
160
+
161
+ // almost_empty_n
162
+
163
+ // prog_full_n
164
+
165
+ // prog_empty_n
166
+
167
+ // num_data_cnt
168
+ always @(posedge clk) begin
169
+ if (reset)
170
+ num_data_cnt <= {ADDR_WIDTH+1{1'b0}};
171
+ else if ( push & ~pop_dout)
172
+ num_data_cnt <= num_data_cnt + 1'b1;
173
+ else if (~push & pop_dout)
174
+ num_data_cnt <= num_data_cnt - 1'b1;
175
+ end
176
+
177
+ // num_data_valid
178
+ assign num_extra_words = (dout_vld & ~pop_dout) ? 1 : 0;
179
+
180
+ always @(posedge clk) begin
181
+ if (reset)
182
+ num_data_valid <= {ADDR_WIDTH+1{1'b0}};
183
+ else if (empty_n | (dout_vld & ~pop_dout))
184
+ num_data_valid <= push + mOutPtr + num_extra_words;
185
+ else
186
+ num_data_valid <= num_extra_words;
187
+ end //
188
+
189
+ // dout_vld
190
+ always @(posedge clk) begin
191
+ if (reset)
192
+ dout_vld <= 1'b0;
193
+ else if (pop)
194
+ dout_vld <= 1'b1;
195
+ else if (pop_dout)
196
+ dout_vld <= 1'b0;
197
+ end
198
+
199
+ endmodule
200
+
201
+
202
+ module myproject_fifo_w1536_d256_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 1536,
206
+ ADDR_WIDTH = 8,
207
+ DEPTH = 256)
208
+ (
209
+ input wire clk,
210
+ input wire reset,
211
+ input wire we,
212
+ input wire [ADDR_WIDTH-1:0] waddr,
213
+ input wire [DATA_WIDTH-1:0] din,
214
+ input wire [ADDR_WIDTH-1:0] raddr,
215
+ input wire rden,
216
+ output wire [DATA_WIDTH-1:0] dout
217
+ );
218
+
219
+ (* ram_style = MEM_STYLE *)
220
+ reg [DATA_WIDTH-1:0] mem[0:DEPTH-1];
221
+ reg [DATA_WIDTH-1:0] mem_reg;
222
+
223
+ always @(posedge clk) begin
224
+ if (we)
225
+ mem[waddr] <= din;
226
+ end
227
+
228
+ always @(posedge clk) begin
229
+ if (reset)
230
+ mem_reg <= 0;
231
+ else if (rden)
232
+ mem_reg <= mem[raddr];
233
+ end
234
+
235
+ assign dout = mem_reg;
236
+
237
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_fifo_w16_d4096_A.v ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 2
10
+
11
+ module myproject_fifo_w16_d4096_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 16,
15
+ ADDR_WIDTH = 12,
16
+ DEPTH = 4096)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ MEM_DEPTH = DEPTH - 1,
40
+ MEM_AWIDTH = clog2(MEM_DEPTH);
41
+ //------------------------Local signal-------------------
42
+ reg [MEM_AWIDTH-1:0] waddr;
43
+ reg [MEM_AWIDTH-1:0] raddr;
44
+ wire [MEM_AWIDTH-1:0] wnext;
45
+ wire [MEM_AWIDTH-1:0] rnext;
46
+ wire push;
47
+ wire pop;
48
+ reg [MEM_AWIDTH:0] mOutPtr;
49
+ reg empty_n = 1'b0;
50
+ reg full_n = 1'b1;
51
+ // has num_data_valid?
52
+ wire num_extra_words;//yes
53
+ reg [ADDR_WIDTH:0] num_data_valid; //yes
54
+
55
+ wire pop_dout;
56
+ reg [ADDR_WIDTH:0] num_data_cnt;
57
+ reg dout_vld = 1'b0;
58
+
59
+ //------------------------Instantiation------------------
60
+ myproject_fifo_w16_d4096_A_ram
61
+ #( .MEM_STYLE (MEM_STYLE),
62
+ .DATA_WIDTH (DATA_WIDTH),
63
+ .ADDR_WIDTH (MEM_AWIDTH),
64
+ .DEPTH (MEM_DEPTH)
65
+ ) U_myproject_fifo_w16_d4096_A_ram (
66
+ .clk (clk),
67
+ .reset (reset),
68
+ .we (push),
69
+ .waddr (waddr),
70
+ .din (if_din),
71
+ .raddr (raddr),
72
+ .rden (pop),
73
+ .dout (if_dout)
74
+ );
75
+
76
+ //------------------------Task and function--------------
77
+ function integer clog2;
78
+ input integer x;
79
+ integer n, m;
80
+ begin
81
+ n = 1;
82
+ m = 2;
83
+ while (m < x) begin
84
+ n = n + 1;
85
+ m = m * 2;
86
+ end
87
+ clog2 = n;
88
+ end
89
+ endfunction
90
+ //------------------------Body---------------------------
91
+ // num_data_valid
92
+ assign if_num_data_valid = num_data_valid;
93
+ assign if_fifo_cap = DEPTH;
94
+
95
+ // almost full/empty
96
+
97
+ // program full/empty
98
+
99
+ assign if_full_n = full_n;
100
+ assign if_empty_n = dout_vld;
101
+
102
+ assign push = full_n & if_write_ce & if_write;
103
+ assign pop = empty_n & (pop_dout | ~dout_vld);
104
+ assign pop_dout = dout_vld & if_read_ce & if_read;
105
+
106
+ assign wnext = !push ? waddr :
107
+ (waddr == MEM_DEPTH - 1) ? 1'b0 :
108
+ waddr + 1'b1;
109
+ assign rnext = !pop ? raddr :
110
+ (raddr == MEM_DEPTH - 1) ? 1'b0 :
111
+ raddr + 1'b1;
112
+
113
+ // waddr
114
+ always @(posedge clk) begin
115
+ if (reset)
116
+ waddr <= {MEM_AWIDTH{1'b0}};
117
+ else
118
+ waddr <= wnext;
119
+ end
120
+
121
+ // raddr
122
+ always @(posedge clk) begin
123
+ if (reset)
124
+ raddr <= {MEM_AWIDTH{1'b0}};
125
+ else
126
+ raddr <= rnext;
127
+ end
128
+
129
+ // mOutPtr
130
+ always @(posedge clk) begin
131
+ if (reset)
132
+ mOutPtr <= {MEM_AWIDTH+1{1'b0}};
133
+ else if (push & ~pop)
134
+ mOutPtr <= mOutPtr + 1'b1;
135
+ else if (~push & pop)
136
+ mOutPtr <= mOutPtr - 1'b1;
137
+ end
138
+
139
+ // full_n
140
+ always @(posedge clk) begin
141
+ if (reset)
142
+ full_n <= 1'b1;
143
+ else if ((push & ~pop_dout) && (num_data_cnt == DEPTH - 1))
144
+ full_n <= 1'b0;
145
+ else if (~push & pop_dout)
146
+ full_n <= 1'b1;
147
+ end
148
+
149
+ // empty_n
150
+ always @(posedge clk) begin
151
+ if (reset)
152
+ empty_n <= 1'b0;
153
+ else if (push & ~pop)
154
+ empty_n <= 1'b1;
155
+ else if ((~push & pop) && (mOutPtr == 1))
156
+ empty_n <= 1'b0;
157
+ end
158
+
159
+ // almost_full_n
160
+
161
+ // almost_empty_n
162
+
163
+ // prog_full_n
164
+
165
+ // prog_empty_n
166
+
167
+ // num_data_cnt
168
+ always @(posedge clk) begin
169
+ if (reset)
170
+ num_data_cnt <= {ADDR_WIDTH+1{1'b0}};
171
+ else if ( push & ~pop_dout)
172
+ num_data_cnt <= num_data_cnt + 1'b1;
173
+ else if (~push & pop_dout)
174
+ num_data_cnt <= num_data_cnt - 1'b1;
175
+ end
176
+
177
+ // num_data_valid
178
+ assign num_extra_words = (dout_vld & ~pop_dout) ? 1 : 0;
179
+
180
+ always @(posedge clk) begin
181
+ if (reset)
182
+ num_data_valid <= {ADDR_WIDTH+1{1'b0}};
183
+ else if (empty_n | (dout_vld & ~pop_dout))
184
+ num_data_valid <= push + mOutPtr + num_extra_words;
185
+ else
186
+ num_data_valid <= num_extra_words;
187
+ end //
188
+
189
+ // dout_vld
190
+ always @(posedge clk) begin
191
+ if (reset)
192
+ dout_vld <= 1'b0;
193
+ else if (pop)
194
+ dout_vld <= 1'b1;
195
+ else if (pop_dout)
196
+ dout_vld <= 1'b0;
197
+ end
198
+
199
+ endmodule
200
+
201
+
202
+ module myproject_fifo_w16_d4096_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 16,
206
+ ADDR_WIDTH = 12,
207
+ DEPTH = 4096)
208
+ (
209
+ input wire clk,
210
+ input wire reset,
211
+ input wire we,
212
+ input wire [ADDR_WIDTH-1:0] waddr,
213
+ input wire [DATA_WIDTH-1:0] din,
214
+ input wire [ADDR_WIDTH-1:0] raddr,
215
+ input wire rden,
216
+ output wire [DATA_WIDTH-1:0] dout
217
+ );
218
+
219
+ (* ram_style = MEM_STYLE *)
220
+ reg [DATA_WIDTH-1:0] mem[0:DEPTH-1];
221
+ reg [DATA_WIDTH-1:0] mem_reg;
222
+
223
+ always @(posedge clk) begin
224
+ if (we)
225
+ mem[waddr] <= din;
226
+ end
227
+
228
+ always @(posedge clk) begin
229
+ if (reset)
230
+ mem_reg <= 0;
231
+ else if (rden)
232
+ mem_reg <= mem[raddr];
233
+ end
234
+
235
+ assign dout = mem_reg;
236
+
237
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_fifo_w16_d64_S.v ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_fifo_w16_d64_S
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 16,
15
+ ADDR_WIDTH = 6,
16
+ DEPTH = 64)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ SRL_DEPTH = DEPTH,
40
+ SRL_AWIDTH = ADDR_WIDTH;
41
+ //------------------------Local signal-------------------
42
+ reg [SRL_AWIDTH-1:0] addr;
43
+ wire push;
44
+ wire pop;
45
+ reg [SRL_AWIDTH:0] mOutPtr;
46
+ reg empty_n = 1'b0;
47
+ reg full_n = 1'b1;
48
+
49
+ //------------------------Instantiation------------------
50
+ myproject_fifo_w16_d64_S_ShiftReg
51
+ #( .DATA_WIDTH (DATA_WIDTH),
52
+ .ADDR_WIDTH (SRL_AWIDTH),
53
+ .DEPTH (SRL_DEPTH))
54
+ U_myproject_fifo_w16_d64_S_ShiftReg (
55
+ .clk (clk),
56
+ .we (push),
57
+ .addr (addr),
58
+ .din (if_din),
59
+ .dout (if_dout)
60
+ );
61
+ //------------------------Task and function--------------
62
+
63
+ //------------------------Body---------------------------
64
+ // num_data_valid
65
+ assign if_num_data_valid = mOutPtr;
66
+ assign if_fifo_cap = DEPTH;
67
+
68
+ // almost full/empty
69
+
70
+ // program full/empty
71
+
72
+ assign if_full_n = full_n;
73
+ assign if_empty_n = empty_n;
74
+
75
+ assign push = full_n & if_write_ce & if_write;
76
+ assign pop = empty_n & if_read_ce & if_read;
77
+
78
+ // addr
79
+ always @(posedge clk) begin
80
+ if (reset)
81
+ addr <= {SRL_AWIDTH{1'b0}};
82
+ else if (push & ~pop && empty_n)
83
+ addr <= addr + 1'b1;
84
+ else if (~push & pop && (mOutPtr != 1))
85
+ addr <= addr - 1'b1;
86
+ end
87
+
88
+ // mOutPtr
89
+ always @(posedge clk) begin
90
+ if (reset)
91
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
92
+ else if (push & ~pop)
93
+ mOutPtr <= mOutPtr + 1'b1;
94
+ else if (~push & pop)
95
+ mOutPtr <= mOutPtr - 1'b1;
96
+ end
97
+
98
+ // full_n
99
+ always @(posedge clk) begin
100
+ if (reset)
101
+ full_n <= 1'b1;
102
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
103
+ full_n <= 1'b0;
104
+ else if (~push & pop)
105
+ full_n <= 1'b1;
106
+ end
107
+
108
+ // empty_n
109
+ always @(posedge clk) begin
110
+ if (reset)
111
+ empty_n <= 1'b0;
112
+ else if (push & ~pop)
113
+ empty_n <= 1'b1;
114
+ else if ((~push & pop) && (mOutPtr == 1))
115
+ empty_n <= 1'b0;
116
+ end
117
+
118
+ // almost_full_n
119
+
120
+ // almost_empty_n
121
+
122
+ // prog_full_n
123
+
124
+ // prog_empty_n
125
+
126
+ endmodule
127
+
128
+
129
+ module myproject_fifo_w16_d64_S_ShiftReg
130
+ #(parameter
131
+ DATA_WIDTH = 16,
132
+ ADDR_WIDTH = 6,
133
+ DEPTH = 64)
134
+ (
135
+ input wire clk,
136
+ input wire we,
137
+ input wire [ADDR_WIDTH-1:0] addr,
138
+ input wire [DATA_WIDTH-1:0] din,
139
+ output wire [DATA_WIDTH-1:0] dout
140
+ );
141
+
142
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
143
+ integer i;
144
+
145
+ always @(posedge clk) begin
146
+ if (we) begin
147
+ for (i=0; i<DEPTH-1; i=i+1)
148
+ SRL_SIG[i+1] <= SRL_SIG[i];
149
+ SRL_SIG[0] <= din;
150
+ end
151
+ end
152
+
153
+ assign dout = SRL_SIG[addr];
154
+
155
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_fifo_w320_d4096_A.v ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 2
10
+
11
+ module myproject_fifo_w320_d4096_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 320,
15
+ ADDR_WIDTH = 12,
16
+ DEPTH = 4096)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ MEM_DEPTH = DEPTH - 1,
40
+ MEM_AWIDTH = clog2(MEM_DEPTH);
41
+ //------------------------Local signal-------------------
42
+ reg [MEM_AWIDTH-1:0] waddr;
43
+ reg [MEM_AWIDTH-1:0] raddr;
44
+ wire [MEM_AWIDTH-1:0] wnext;
45
+ wire [MEM_AWIDTH-1:0] rnext;
46
+ wire push;
47
+ wire pop;
48
+ reg [MEM_AWIDTH:0] mOutPtr;
49
+ reg empty_n = 1'b0;
50
+ reg full_n = 1'b1;
51
+ // has num_data_valid?
52
+ wire num_extra_words;//yes
53
+ reg [ADDR_WIDTH:0] num_data_valid; //yes
54
+
55
+ wire pop_dout;
56
+ reg [ADDR_WIDTH:0] num_data_cnt;
57
+ reg dout_vld = 1'b0;
58
+
59
+ //------------------------Instantiation------------------
60
+ myproject_fifo_w320_d4096_A_ram
61
+ #( .MEM_STYLE (MEM_STYLE),
62
+ .DATA_WIDTH (DATA_WIDTH),
63
+ .ADDR_WIDTH (MEM_AWIDTH),
64
+ .DEPTH (MEM_DEPTH)
65
+ ) U_myproject_fifo_w320_d4096_A_ram (
66
+ .clk (clk),
67
+ .reset (reset),
68
+ .we (push),
69
+ .waddr (waddr),
70
+ .din (if_din),
71
+ .raddr (raddr),
72
+ .rden (pop),
73
+ .dout (if_dout)
74
+ );
75
+
76
+ //------------------------Task and function--------------
77
+ function integer clog2;
78
+ input integer x;
79
+ integer n, m;
80
+ begin
81
+ n = 1;
82
+ m = 2;
83
+ while (m < x) begin
84
+ n = n + 1;
85
+ m = m * 2;
86
+ end
87
+ clog2 = n;
88
+ end
89
+ endfunction
90
+ //------------------------Body---------------------------
91
+ // num_data_valid
92
+ assign if_num_data_valid = num_data_valid;
93
+ assign if_fifo_cap = DEPTH;
94
+
95
+ // almost full/empty
96
+
97
+ // program full/empty
98
+
99
+ assign if_full_n = full_n;
100
+ assign if_empty_n = dout_vld;
101
+
102
+ assign push = full_n & if_write_ce & if_write;
103
+ assign pop = empty_n & (pop_dout | ~dout_vld);
104
+ assign pop_dout = dout_vld & if_read_ce & if_read;
105
+
106
+ assign wnext = !push ? waddr :
107
+ (waddr == MEM_DEPTH - 1) ? 1'b0 :
108
+ waddr + 1'b1;
109
+ assign rnext = !pop ? raddr :
110
+ (raddr == MEM_DEPTH - 1) ? 1'b0 :
111
+ raddr + 1'b1;
112
+
113
+ // waddr
114
+ always @(posedge clk) begin
115
+ if (reset)
116
+ waddr <= {MEM_AWIDTH{1'b0}};
117
+ else
118
+ waddr <= wnext;
119
+ end
120
+
121
+ // raddr
122
+ always @(posedge clk) begin
123
+ if (reset)
124
+ raddr <= {MEM_AWIDTH{1'b0}};
125
+ else
126
+ raddr <= rnext;
127
+ end
128
+
129
+ // mOutPtr
130
+ always @(posedge clk) begin
131
+ if (reset)
132
+ mOutPtr <= {MEM_AWIDTH+1{1'b0}};
133
+ else if (push & ~pop)
134
+ mOutPtr <= mOutPtr + 1'b1;
135
+ else if (~push & pop)
136
+ mOutPtr <= mOutPtr - 1'b1;
137
+ end
138
+
139
+ // full_n
140
+ always @(posedge clk) begin
141
+ if (reset)
142
+ full_n <= 1'b1;
143
+ else if ((push & ~pop_dout) && (num_data_cnt == DEPTH - 1))
144
+ full_n <= 1'b0;
145
+ else if (~push & pop_dout)
146
+ full_n <= 1'b1;
147
+ end
148
+
149
+ // empty_n
150
+ always @(posedge clk) begin
151
+ if (reset)
152
+ empty_n <= 1'b0;
153
+ else if (push & ~pop)
154
+ empty_n <= 1'b1;
155
+ else if ((~push & pop) && (mOutPtr == 1))
156
+ empty_n <= 1'b0;
157
+ end
158
+
159
+ // almost_full_n
160
+
161
+ // almost_empty_n
162
+
163
+ // prog_full_n
164
+
165
+ // prog_empty_n
166
+
167
+ // num_data_cnt
168
+ always @(posedge clk) begin
169
+ if (reset)
170
+ num_data_cnt <= {ADDR_WIDTH+1{1'b0}};
171
+ else if ( push & ~pop_dout)
172
+ num_data_cnt <= num_data_cnt + 1'b1;
173
+ else if (~push & pop_dout)
174
+ num_data_cnt <= num_data_cnt - 1'b1;
175
+ end
176
+
177
+ // num_data_valid
178
+ assign num_extra_words = (dout_vld & ~pop_dout) ? 1 : 0;
179
+
180
+ always @(posedge clk) begin
181
+ if (reset)
182
+ num_data_valid <= {ADDR_WIDTH+1{1'b0}};
183
+ else if (empty_n | (dout_vld & ~pop_dout))
184
+ num_data_valid <= push + mOutPtr + num_extra_words;
185
+ else
186
+ num_data_valid <= num_extra_words;
187
+ end //
188
+
189
+ // dout_vld
190
+ always @(posedge clk) begin
191
+ if (reset)
192
+ dout_vld <= 1'b0;
193
+ else if (pop)
194
+ dout_vld <= 1'b1;
195
+ else if (pop_dout)
196
+ dout_vld <= 1'b0;
197
+ end
198
+
199
+ endmodule
200
+
201
+
202
+ module myproject_fifo_w320_d4096_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 320,
206
+ ADDR_WIDTH = 12,
207
+ DEPTH = 4096)
208
+ (
209
+ input wire clk,
210
+ input wire reset,
211
+ input wire we,
212
+ input wire [ADDR_WIDTH-1:0] waddr,
213
+ input wire [DATA_WIDTH-1:0] din,
214
+ input wire [ADDR_WIDTH-1:0] raddr,
215
+ input wire rden,
216
+ output wire [DATA_WIDTH-1:0] dout
217
+ );
218
+
219
+ (* ram_style = MEM_STYLE *)
220
+ reg [DATA_WIDTH-1:0] mem[0:DEPTH-1];
221
+ reg [DATA_WIDTH-1:0] mem_reg;
222
+
223
+ always @(posedge clk) begin
224
+ if (we)
225
+ mem[waddr] <= din;
226
+ end
227
+
228
+ always @(posedge clk) begin
229
+ if (reset)
230
+ mem_reg <= 0;
231
+ else if (rden)
232
+ mem_reg <= mem[raddr];
233
+ end
234
+
235
+ assign dout = mem_reg;
236
+
237
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_fifo_w328_d4096_A.v ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 2
10
+
11
+ module myproject_fifo_w328_d4096_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 328,
15
+ ADDR_WIDTH = 12,
16
+ DEPTH = 4096)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ MEM_DEPTH = DEPTH - 1,
40
+ MEM_AWIDTH = clog2(MEM_DEPTH);
41
+ //------------------------Local signal-------------------
42
+ reg [MEM_AWIDTH-1:0] waddr;
43
+ reg [MEM_AWIDTH-1:0] raddr;
44
+ wire [MEM_AWIDTH-1:0] wnext;
45
+ wire [MEM_AWIDTH-1:0] rnext;
46
+ wire push;
47
+ wire pop;
48
+ reg [MEM_AWIDTH:0] mOutPtr;
49
+ reg empty_n = 1'b0;
50
+ reg full_n = 1'b1;
51
+ // has num_data_valid?
52
+ wire num_extra_words;//yes
53
+ reg [ADDR_WIDTH:0] num_data_valid; //yes
54
+
55
+ wire pop_dout;
56
+ reg [ADDR_WIDTH:0] num_data_cnt;
57
+ reg dout_vld = 1'b0;
58
+
59
+ //------------------------Instantiation------------------
60
+ myproject_fifo_w328_d4096_A_ram
61
+ #( .MEM_STYLE (MEM_STYLE),
62
+ .DATA_WIDTH (DATA_WIDTH),
63
+ .ADDR_WIDTH (MEM_AWIDTH),
64
+ .DEPTH (MEM_DEPTH)
65
+ ) U_myproject_fifo_w328_d4096_A_ram (
66
+ .clk (clk),
67
+ .reset (reset),
68
+ .we (push),
69
+ .waddr (waddr),
70
+ .din (if_din),
71
+ .raddr (raddr),
72
+ .rden (pop),
73
+ .dout (if_dout)
74
+ );
75
+
76
+ //------------------------Task and function--------------
77
+ function integer clog2;
78
+ input integer x;
79
+ integer n, m;
80
+ begin
81
+ n = 1;
82
+ m = 2;
83
+ while (m < x) begin
84
+ n = n + 1;
85
+ m = m * 2;
86
+ end
87
+ clog2 = n;
88
+ end
89
+ endfunction
90
+ //------------------------Body---------------------------
91
+ // num_data_valid
92
+ assign if_num_data_valid = num_data_valid;
93
+ assign if_fifo_cap = DEPTH;
94
+
95
+ // almost full/empty
96
+
97
+ // program full/empty
98
+
99
+ assign if_full_n = full_n;
100
+ assign if_empty_n = dout_vld;
101
+
102
+ assign push = full_n & if_write_ce & if_write;
103
+ assign pop = empty_n & (pop_dout | ~dout_vld);
104
+ assign pop_dout = dout_vld & if_read_ce & if_read;
105
+
106
+ assign wnext = !push ? waddr :
107
+ (waddr == MEM_DEPTH - 1) ? 1'b0 :
108
+ waddr + 1'b1;
109
+ assign rnext = !pop ? raddr :
110
+ (raddr == MEM_DEPTH - 1) ? 1'b0 :
111
+ raddr + 1'b1;
112
+
113
+ // waddr
114
+ always @(posedge clk) begin
115
+ if (reset)
116
+ waddr <= {MEM_AWIDTH{1'b0}};
117
+ else
118
+ waddr <= wnext;
119
+ end
120
+
121
+ // raddr
122
+ always @(posedge clk) begin
123
+ if (reset)
124
+ raddr <= {MEM_AWIDTH{1'b0}};
125
+ else
126
+ raddr <= rnext;
127
+ end
128
+
129
+ // mOutPtr
130
+ always @(posedge clk) begin
131
+ if (reset)
132
+ mOutPtr <= {MEM_AWIDTH+1{1'b0}};
133
+ else if (push & ~pop)
134
+ mOutPtr <= mOutPtr + 1'b1;
135
+ else if (~push & pop)
136
+ mOutPtr <= mOutPtr - 1'b1;
137
+ end
138
+
139
+ // full_n
140
+ always @(posedge clk) begin
141
+ if (reset)
142
+ full_n <= 1'b1;
143
+ else if ((push & ~pop_dout) && (num_data_cnt == DEPTH - 1))
144
+ full_n <= 1'b0;
145
+ else if (~push & pop_dout)
146
+ full_n <= 1'b1;
147
+ end
148
+
149
+ // empty_n
150
+ always @(posedge clk) begin
151
+ if (reset)
152
+ empty_n <= 1'b0;
153
+ else if (push & ~pop)
154
+ empty_n <= 1'b1;
155
+ else if ((~push & pop) && (mOutPtr == 1))
156
+ empty_n <= 1'b0;
157
+ end
158
+
159
+ // almost_full_n
160
+
161
+ // almost_empty_n
162
+
163
+ // prog_full_n
164
+
165
+ // prog_empty_n
166
+
167
+ // num_data_cnt
168
+ always @(posedge clk) begin
169
+ if (reset)
170
+ num_data_cnt <= {ADDR_WIDTH+1{1'b0}};
171
+ else if ( push & ~pop_dout)
172
+ num_data_cnt <= num_data_cnt + 1'b1;
173
+ else if (~push & pop_dout)
174
+ num_data_cnt <= num_data_cnt - 1'b1;
175
+ end
176
+
177
+ // num_data_valid
178
+ assign num_extra_words = (dout_vld & ~pop_dout) ? 1 : 0;
179
+
180
+ always @(posedge clk) begin
181
+ if (reset)
182
+ num_data_valid <= {ADDR_WIDTH+1{1'b0}};
183
+ else if (empty_n | (dout_vld & ~pop_dout))
184
+ num_data_valid <= push + mOutPtr + num_extra_words;
185
+ else
186
+ num_data_valid <= num_extra_words;
187
+ end //
188
+
189
+ // dout_vld
190
+ always @(posedge clk) begin
191
+ if (reset)
192
+ dout_vld <= 1'b0;
193
+ else if (pop)
194
+ dout_vld <= 1'b1;
195
+ else if (pop_dout)
196
+ dout_vld <= 1'b0;
197
+ end
198
+
199
+ endmodule
200
+
201
+
202
+ module myproject_fifo_w328_d4096_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 328,
206
+ ADDR_WIDTH = 12,
207
+ DEPTH = 4096)
208
+ (
209
+ input wire clk,
210
+ input wire reset,
211
+ input wire we,
212
+ input wire [ADDR_WIDTH-1:0] waddr,
213
+ input wire [DATA_WIDTH-1:0] din,
214
+ input wire [ADDR_WIDTH-1:0] raddr,
215
+ input wire rden,
216
+ output wire [DATA_WIDTH-1:0] dout
217
+ );
218
+
219
+ (* ram_style = MEM_STYLE *)
220
+ reg [DATA_WIDTH-1:0] mem[0:DEPTH-1];
221
+ reg [DATA_WIDTH-1:0] mem_reg;
222
+
223
+ always @(posedge clk) begin
224
+ if (we)
225
+ mem[waddr] <= din;
226
+ end
227
+
228
+ always @(posedge clk) begin
229
+ if (reset)
230
+ mem_reg <= 0;
231
+ else if (rden)
232
+ mem_reg <= mem[raddr];
233
+ end
234
+
235
+ assign dout = mem_reg;
236
+
237
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_fifo_w36_d4096_A.v ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 2
10
+
11
+ module myproject_fifo_w36_d4096_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 36,
15
+ ADDR_WIDTH = 12,
16
+ DEPTH = 4096)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ MEM_DEPTH = DEPTH - 1,
40
+ MEM_AWIDTH = clog2(MEM_DEPTH);
41
+ //------------------------Local signal-------------------
42
+ reg [MEM_AWIDTH-1:0] waddr;
43
+ reg [MEM_AWIDTH-1:0] raddr;
44
+ wire [MEM_AWIDTH-1:0] wnext;
45
+ wire [MEM_AWIDTH-1:0] rnext;
46
+ wire push;
47
+ wire pop;
48
+ reg [MEM_AWIDTH:0] mOutPtr;
49
+ reg empty_n = 1'b0;
50
+ reg full_n = 1'b1;
51
+ // has num_data_valid?
52
+ wire num_extra_words;//yes
53
+ reg [ADDR_WIDTH:0] num_data_valid; //yes
54
+
55
+ wire pop_dout;
56
+ reg [ADDR_WIDTH:0] num_data_cnt;
57
+ reg dout_vld = 1'b0;
58
+
59
+ //------------------------Instantiation------------------
60
+ myproject_fifo_w36_d4096_A_ram
61
+ #( .MEM_STYLE (MEM_STYLE),
62
+ .DATA_WIDTH (DATA_WIDTH),
63
+ .ADDR_WIDTH (MEM_AWIDTH),
64
+ .DEPTH (MEM_DEPTH)
65
+ ) U_myproject_fifo_w36_d4096_A_ram (
66
+ .clk (clk),
67
+ .reset (reset),
68
+ .we (push),
69
+ .waddr (waddr),
70
+ .din (if_din),
71
+ .raddr (raddr),
72
+ .rden (pop),
73
+ .dout (if_dout)
74
+ );
75
+
76
+ //------------------------Task and function--------------
77
+ function integer clog2;
78
+ input integer x;
79
+ integer n, m;
80
+ begin
81
+ n = 1;
82
+ m = 2;
83
+ while (m < x) begin
84
+ n = n + 1;
85
+ m = m * 2;
86
+ end
87
+ clog2 = n;
88
+ end
89
+ endfunction
90
+ //------------------------Body---------------------------
91
+ // num_data_valid
92
+ assign if_num_data_valid = num_data_valid;
93
+ assign if_fifo_cap = DEPTH;
94
+
95
+ // almost full/empty
96
+
97
+ // program full/empty
98
+
99
+ assign if_full_n = full_n;
100
+ assign if_empty_n = dout_vld;
101
+
102
+ assign push = full_n & if_write_ce & if_write;
103
+ assign pop = empty_n & (pop_dout | ~dout_vld);
104
+ assign pop_dout = dout_vld & if_read_ce & if_read;
105
+
106
+ assign wnext = !push ? waddr :
107
+ (waddr == MEM_DEPTH - 1) ? 1'b0 :
108
+ waddr + 1'b1;
109
+ assign rnext = !pop ? raddr :
110
+ (raddr == MEM_DEPTH - 1) ? 1'b0 :
111
+ raddr + 1'b1;
112
+
113
+ // waddr
114
+ always @(posedge clk) begin
115
+ if (reset)
116
+ waddr <= {MEM_AWIDTH{1'b0}};
117
+ else
118
+ waddr <= wnext;
119
+ end
120
+
121
+ // raddr
122
+ always @(posedge clk) begin
123
+ if (reset)
124
+ raddr <= {MEM_AWIDTH{1'b0}};
125
+ else
126
+ raddr <= rnext;
127
+ end
128
+
129
+ // mOutPtr
130
+ always @(posedge clk) begin
131
+ if (reset)
132
+ mOutPtr <= {MEM_AWIDTH+1{1'b0}};
133
+ else if (push & ~pop)
134
+ mOutPtr <= mOutPtr + 1'b1;
135
+ else if (~push & pop)
136
+ mOutPtr <= mOutPtr - 1'b1;
137
+ end
138
+
139
+ // full_n
140
+ always @(posedge clk) begin
141
+ if (reset)
142
+ full_n <= 1'b1;
143
+ else if ((push & ~pop_dout) && (num_data_cnt == DEPTH - 1))
144
+ full_n <= 1'b0;
145
+ else if (~push & pop_dout)
146
+ full_n <= 1'b1;
147
+ end
148
+
149
+ // empty_n
150
+ always @(posedge clk) begin
151
+ if (reset)
152
+ empty_n <= 1'b0;
153
+ else if (push & ~pop)
154
+ empty_n <= 1'b1;
155
+ else if ((~push & pop) && (mOutPtr == 1))
156
+ empty_n <= 1'b0;
157
+ end
158
+
159
+ // almost_full_n
160
+
161
+ // almost_empty_n
162
+
163
+ // prog_full_n
164
+
165
+ // prog_empty_n
166
+
167
+ // num_data_cnt
168
+ always @(posedge clk) begin
169
+ if (reset)
170
+ num_data_cnt <= {ADDR_WIDTH+1{1'b0}};
171
+ else if ( push & ~pop_dout)
172
+ num_data_cnt <= num_data_cnt + 1'b1;
173
+ else if (~push & pop_dout)
174
+ num_data_cnt <= num_data_cnt - 1'b1;
175
+ end
176
+
177
+ // num_data_valid
178
+ assign num_extra_words = (dout_vld & ~pop_dout) ? 1 : 0;
179
+
180
+ always @(posedge clk) begin
181
+ if (reset)
182
+ num_data_valid <= {ADDR_WIDTH+1{1'b0}};
183
+ else if (empty_n | (dout_vld & ~pop_dout))
184
+ num_data_valid <= push + mOutPtr + num_extra_words;
185
+ else
186
+ num_data_valid <= num_extra_words;
187
+ end //
188
+
189
+ // dout_vld
190
+ always @(posedge clk) begin
191
+ if (reset)
192
+ dout_vld <= 1'b0;
193
+ else if (pop)
194
+ dout_vld <= 1'b1;
195
+ else if (pop_dout)
196
+ dout_vld <= 1'b0;
197
+ end
198
+
199
+ endmodule
200
+
201
+
202
+ module myproject_fifo_w36_d4096_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 36,
206
+ ADDR_WIDTH = 12,
207
+ DEPTH = 4096)
208
+ (
209
+ input wire clk,
210
+ input wire reset,
211
+ input wire we,
212
+ input wire [ADDR_WIDTH-1:0] waddr,
213
+ input wire [DATA_WIDTH-1:0] din,
214
+ input wire [ADDR_WIDTH-1:0] raddr,
215
+ input wire rden,
216
+ output wire [DATA_WIDTH-1:0] dout
217
+ );
218
+
219
+ (* ram_style = MEM_STYLE *)
220
+ reg [DATA_WIDTH-1:0] mem[0:DEPTH-1];
221
+ reg [DATA_WIDTH-1:0] mem_reg;
222
+
223
+ always @(posedge clk) begin
224
+ if (we)
225
+ mem[waddr] <= din;
226
+ end
227
+
228
+ always @(posedge clk) begin
229
+ if (reset)
230
+ mem_reg <= 0;
231
+ else if (rden)
232
+ mem_reg <= mem[raddr];
233
+ end
234
+
235
+ assign dout = mem_reg;
236
+
237
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_fifo_w384_d4096_A.v ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 2
10
+
11
+ module myproject_fifo_w384_d4096_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 384,
15
+ ADDR_WIDTH = 12,
16
+ DEPTH = 4096)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ MEM_DEPTH = DEPTH - 1,
40
+ MEM_AWIDTH = clog2(MEM_DEPTH);
41
+ //------------------------Local signal-------------------
42
+ reg [MEM_AWIDTH-1:0] waddr;
43
+ reg [MEM_AWIDTH-1:0] raddr;
44
+ wire [MEM_AWIDTH-1:0] wnext;
45
+ wire [MEM_AWIDTH-1:0] rnext;
46
+ wire push;
47
+ wire pop;
48
+ reg [MEM_AWIDTH:0] mOutPtr;
49
+ reg empty_n = 1'b0;
50
+ reg full_n = 1'b1;
51
+ // has num_data_valid?
52
+ wire num_extra_words;//yes
53
+ reg [ADDR_WIDTH:0] num_data_valid; //yes
54
+
55
+ wire pop_dout;
56
+ reg [ADDR_WIDTH:0] num_data_cnt;
57
+ reg dout_vld = 1'b0;
58
+
59
+ //------------------------Instantiation------------------
60
+ myproject_fifo_w384_d4096_A_ram
61
+ #( .MEM_STYLE (MEM_STYLE),
62
+ .DATA_WIDTH (DATA_WIDTH),
63
+ .ADDR_WIDTH (MEM_AWIDTH),
64
+ .DEPTH (MEM_DEPTH)
65
+ ) U_myproject_fifo_w384_d4096_A_ram (
66
+ .clk (clk),
67
+ .reset (reset),
68
+ .we (push),
69
+ .waddr (waddr),
70
+ .din (if_din),
71
+ .raddr (raddr),
72
+ .rden (pop),
73
+ .dout (if_dout)
74
+ );
75
+
76
+ //------------------------Task and function--------------
77
+ function integer clog2;
78
+ input integer x;
79
+ integer n, m;
80
+ begin
81
+ n = 1;
82
+ m = 2;
83
+ while (m < x) begin
84
+ n = n + 1;
85
+ m = m * 2;
86
+ end
87
+ clog2 = n;
88
+ end
89
+ endfunction
90
+ //------------------------Body---------------------------
91
+ // num_data_valid
92
+ assign if_num_data_valid = num_data_valid;
93
+ assign if_fifo_cap = DEPTH;
94
+
95
+ // almost full/empty
96
+
97
+ // program full/empty
98
+
99
+ assign if_full_n = full_n;
100
+ assign if_empty_n = dout_vld;
101
+
102
+ assign push = full_n & if_write_ce & if_write;
103
+ assign pop = empty_n & (pop_dout | ~dout_vld);
104
+ assign pop_dout = dout_vld & if_read_ce & if_read;
105
+
106
+ assign wnext = !push ? waddr :
107
+ (waddr == MEM_DEPTH - 1) ? 1'b0 :
108
+ waddr + 1'b1;
109
+ assign rnext = !pop ? raddr :
110
+ (raddr == MEM_DEPTH - 1) ? 1'b0 :
111
+ raddr + 1'b1;
112
+
113
+ // waddr
114
+ always @(posedge clk) begin
115
+ if (reset)
116
+ waddr <= {MEM_AWIDTH{1'b0}};
117
+ else
118
+ waddr <= wnext;
119
+ end
120
+
121
+ // raddr
122
+ always @(posedge clk) begin
123
+ if (reset)
124
+ raddr <= {MEM_AWIDTH{1'b0}};
125
+ else
126
+ raddr <= rnext;
127
+ end
128
+
129
+ // mOutPtr
130
+ always @(posedge clk) begin
131
+ if (reset)
132
+ mOutPtr <= {MEM_AWIDTH+1{1'b0}};
133
+ else if (push & ~pop)
134
+ mOutPtr <= mOutPtr + 1'b1;
135
+ else if (~push & pop)
136
+ mOutPtr <= mOutPtr - 1'b1;
137
+ end
138
+
139
+ // full_n
140
+ always @(posedge clk) begin
141
+ if (reset)
142
+ full_n <= 1'b1;
143
+ else if ((push & ~pop_dout) && (num_data_cnt == DEPTH - 1))
144
+ full_n <= 1'b0;
145
+ else if (~push & pop_dout)
146
+ full_n <= 1'b1;
147
+ end
148
+
149
+ // empty_n
150
+ always @(posedge clk) begin
151
+ if (reset)
152
+ empty_n <= 1'b0;
153
+ else if (push & ~pop)
154
+ empty_n <= 1'b1;
155
+ else if ((~push & pop) && (mOutPtr == 1))
156
+ empty_n <= 1'b0;
157
+ end
158
+
159
+ // almost_full_n
160
+
161
+ // almost_empty_n
162
+
163
+ // prog_full_n
164
+
165
+ // prog_empty_n
166
+
167
+ // num_data_cnt
168
+ always @(posedge clk) begin
169
+ if (reset)
170
+ num_data_cnt <= {ADDR_WIDTH+1{1'b0}};
171
+ else if ( push & ~pop_dout)
172
+ num_data_cnt <= num_data_cnt + 1'b1;
173
+ else if (~push & pop_dout)
174
+ num_data_cnt <= num_data_cnt - 1'b1;
175
+ end
176
+
177
+ // num_data_valid
178
+ assign num_extra_words = (dout_vld & ~pop_dout) ? 1 : 0;
179
+
180
+ always @(posedge clk) begin
181
+ if (reset)
182
+ num_data_valid <= {ADDR_WIDTH+1{1'b0}};
183
+ else if (empty_n | (dout_vld & ~pop_dout))
184
+ num_data_valid <= push + mOutPtr + num_extra_words;
185
+ else
186
+ num_data_valid <= num_extra_words;
187
+ end //
188
+
189
+ // dout_vld
190
+ always @(posedge clk) begin
191
+ if (reset)
192
+ dout_vld <= 1'b0;
193
+ else if (pop)
194
+ dout_vld <= 1'b1;
195
+ else if (pop_dout)
196
+ dout_vld <= 1'b0;
197
+ end
198
+
199
+ endmodule
200
+
201
+
202
+ module myproject_fifo_w384_d4096_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 384,
206
+ ADDR_WIDTH = 12,
207
+ DEPTH = 4096)
208
+ (
209
+ input wire clk,
210
+ input wire reset,
211
+ input wire we,
212
+ input wire [ADDR_WIDTH-1:0] waddr,
213
+ input wire [DATA_WIDTH-1:0] din,
214
+ input wire [ADDR_WIDTH-1:0] raddr,
215
+ input wire rden,
216
+ output wire [DATA_WIDTH-1:0] dout
217
+ );
218
+
219
+ (* ram_style = MEM_STYLE *)
220
+ reg [DATA_WIDTH-1:0] mem[0:DEPTH-1];
221
+ reg [DATA_WIDTH-1:0] mem_reg;
222
+
223
+ always @(posedge clk) begin
224
+ if (we)
225
+ mem[waddr] <= din;
226
+ end
227
+
228
+ always @(posedge clk) begin
229
+ if (reset)
230
+ mem_reg <= 0;
231
+ else if (rden)
232
+ mem_reg <= mem[raddr];
233
+ end
234
+
235
+ assign dout = mem_reg;
236
+
237
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_fifo_w512_d256_A.v ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 2
10
+
11
+ module myproject_fifo_w512_d256_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 512,
15
+ ADDR_WIDTH = 8,
16
+ DEPTH = 256)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ MEM_DEPTH = DEPTH - 1,
40
+ MEM_AWIDTH = clog2(MEM_DEPTH);
41
+ //------------------------Local signal-------------------
42
+ reg [MEM_AWIDTH-1:0] waddr;
43
+ reg [MEM_AWIDTH-1:0] raddr;
44
+ wire [MEM_AWIDTH-1:0] wnext;
45
+ wire [MEM_AWIDTH-1:0] rnext;
46
+ wire push;
47
+ wire pop;
48
+ reg [MEM_AWIDTH:0] mOutPtr;
49
+ reg empty_n = 1'b0;
50
+ reg full_n = 1'b1;
51
+ // has num_data_valid?
52
+ wire num_extra_words;//yes
53
+ reg [ADDR_WIDTH:0] num_data_valid; //yes
54
+
55
+ wire pop_dout;
56
+ reg [ADDR_WIDTH:0] num_data_cnt;
57
+ reg dout_vld = 1'b0;
58
+
59
+ //------------------------Instantiation------------------
60
+ myproject_fifo_w512_d256_A_ram
61
+ #( .MEM_STYLE (MEM_STYLE),
62
+ .DATA_WIDTH (DATA_WIDTH),
63
+ .ADDR_WIDTH (MEM_AWIDTH),
64
+ .DEPTH (MEM_DEPTH)
65
+ ) U_myproject_fifo_w512_d256_A_ram (
66
+ .clk (clk),
67
+ .reset (reset),
68
+ .we (push),
69
+ .waddr (waddr),
70
+ .din (if_din),
71
+ .raddr (raddr),
72
+ .rden (pop),
73
+ .dout (if_dout)
74
+ );
75
+
76
+ //------------------------Task and function--------------
77
+ function integer clog2;
78
+ input integer x;
79
+ integer n, m;
80
+ begin
81
+ n = 1;
82
+ m = 2;
83
+ while (m < x) begin
84
+ n = n + 1;
85
+ m = m * 2;
86
+ end
87
+ clog2 = n;
88
+ end
89
+ endfunction
90
+ //------------------------Body---------------------------
91
+ // num_data_valid
92
+ assign if_num_data_valid = num_data_valid;
93
+ assign if_fifo_cap = DEPTH;
94
+
95
+ // almost full/empty
96
+
97
+ // program full/empty
98
+
99
+ assign if_full_n = full_n;
100
+ assign if_empty_n = dout_vld;
101
+
102
+ assign push = full_n & if_write_ce & if_write;
103
+ assign pop = empty_n & (pop_dout | ~dout_vld);
104
+ assign pop_dout = dout_vld & if_read_ce & if_read;
105
+
106
+ assign wnext = !push ? waddr :
107
+ (waddr == MEM_DEPTH - 1) ? 1'b0 :
108
+ waddr + 1'b1;
109
+ assign rnext = !pop ? raddr :
110
+ (raddr == MEM_DEPTH - 1) ? 1'b0 :
111
+ raddr + 1'b1;
112
+
113
+ // waddr
114
+ always @(posedge clk) begin
115
+ if (reset)
116
+ waddr <= {MEM_AWIDTH{1'b0}};
117
+ else
118
+ waddr <= wnext;
119
+ end
120
+
121
+ // raddr
122
+ always @(posedge clk) begin
123
+ if (reset)
124
+ raddr <= {MEM_AWIDTH{1'b0}};
125
+ else
126
+ raddr <= rnext;
127
+ end
128
+
129
+ // mOutPtr
130
+ always @(posedge clk) begin
131
+ if (reset)
132
+ mOutPtr <= {MEM_AWIDTH+1{1'b0}};
133
+ else if (push & ~pop)
134
+ mOutPtr <= mOutPtr + 1'b1;
135
+ else if (~push & pop)
136
+ mOutPtr <= mOutPtr - 1'b1;
137
+ end
138
+
139
+ // full_n
140
+ always @(posedge clk) begin
141
+ if (reset)
142
+ full_n <= 1'b1;
143
+ else if ((push & ~pop_dout) && (num_data_cnt == DEPTH - 1))
144
+ full_n <= 1'b0;
145
+ else if (~push & pop_dout)
146
+ full_n <= 1'b1;
147
+ end
148
+
149
+ // empty_n
150
+ always @(posedge clk) begin
151
+ if (reset)
152
+ empty_n <= 1'b0;
153
+ else if (push & ~pop)
154
+ empty_n <= 1'b1;
155
+ else if ((~push & pop) && (mOutPtr == 1))
156
+ empty_n <= 1'b0;
157
+ end
158
+
159
+ // almost_full_n
160
+
161
+ // almost_empty_n
162
+
163
+ // prog_full_n
164
+
165
+ // prog_empty_n
166
+
167
+ // num_data_cnt
168
+ always @(posedge clk) begin
169
+ if (reset)
170
+ num_data_cnt <= {ADDR_WIDTH+1{1'b0}};
171
+ else if ( push & ~pop_dout)
172
+ num_data_cnt <= num_data_cnt + 1'b1;
173
+ else if (~push & pop_dout)
174
+ num_data_cnt <= num_data_cnt - 1'b1;
175
+ end
176
+
177
+ // num_data_valid
178
+ assign num_extra_words = (dout_vld & ~pop_dout) ? 1 : 0;
179
+
180
+ always @(posedge clk) begin
181
+ if (reset)
182
+ num_data_valid <= {ADDR_WIDTH+1{1'b0}};
183
+ else if (empty_n | (dout_vld & ~pop_dout))
184
+ num_data_valid <= push + mOutPtr + num_extra_words;
185
+ else
186
+ num_data_valid <= num_extra_words;
187
+ end //
188
+
189
+ // dout_vld
190
+ always @(posedge clk) begin
191
+ if (reset)
192
+ dout_vld <= 1'b0;
193
+ else if (pop)
194
+ dout_vld <= 1'b1;
195
+ else if (pop_dout)
196
+ dout_vld <= 1'b0;
197
+ end
198
+
199
+ endmodule
200
+
201
+
202
+ module myproject_fifo_w512_d256_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 512,
206
+ ADDR_WIDTH = 8,
207
+ DEPTH = 256)
208
+ (
209
+ input wire clk,
210
+ input wire reset,
211
+ input wire we,
212
+ input wire [ADDR_WIDTH-1:0] waddr,
213
+ input wire [DATA_WIDTH-1:0] din,
214
+ input wire [ADDR_WIDTH-1:0] raddr,
215
+ input wire rden,
216
+ output wire [DATA_WIDTH-1:0] dout
217
+ );
218
+
219
+ (* ram_style = MEM_STYLE *)
220
+ reg [DATA_WIDTH-1:0] mem[0:DEPTH-1];
221
+ reg [DATA_WIDTH-1:0] mem_reg;
222
+
223
+ always @(posedge clk) begin
224
+ if (we)
225
+ mem[waddr] <= din;
226
+ end
227
+
228
+ always @(posedge clk) begin
229
+ if (reset)
230
+ mem_reg <= 0;
231
+ else if (rden)
232
+ mem_reg <= mem[raddr];
233
+ end
234
+
235
+ assign dout = mem_reg;
236
+
237
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_fifo_w768_d1024_A.v ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 2
10
+
11
+ module myproject_fifo_w768_d1024_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 768,
15
+ ADDR_WIDTH = 10,
16
+ DEPTH = 1024)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+ output wire [ADDR_WIDTH:0] if_num_data_valid, // for FRP
30
+ output wire [ADDR_WIDTH:0] if_fifo_cap, // for FRP
31
+
32
+ output wire if_empty_n,
33
+ input wire if_read_ce,
34
+ input wire if_read,
35
+ output wire [DATA_WIDTH-1:0] if_dout
36
+ );
37
+ //------------------------Parameter----------------------
38
+ localparam
39
+ MEM_DEPTH = DEPTH - 1,
40
+ MEM_AWIDTH = clog2(MEM_DEPTH);
41
+ //------------------------Local signal-------------------
42
+ reg [MEM_AWIDTH-1:0] waddr;
43
+ reg [MEM_AWIDTH-1:0] raddr;
44
+ wire [MEM_AWIDTH-1:0] wnext;
45
+ wire [MEM_AWIDTH-1:0] rnext;
46
+ wire push;
47
+ wire pop;
48
+ reg [MEM_AWIDTH:0] mOutPtr;
49
+ reg empty_n = 1'b0;
50
+ reg full_n = 1'b1;
51
+ // has num_data_valid?
52
+ wire num_extra_words;//yes
53
+ reg [ADDR_WIDTH:0] num_data_valid; //yes
54
+
55
+ wire pop_dout;
56
+ reg [ADDR_WIDTH:0] num_data_cnt;
57
+ reg dout_vld = 1'b0;
58
+
59
+ //------------------------Instantiation------------------
60
+ myproject_fifo_w768_d1024_A_ram
61
+ #( .MEM_STYLE (MEM_STYLE),
62
+ .DATA_WIDTH (DATA_WIDTH),
63
+ .ADDR_WIDTH (MEM_AWIDTH),
64
+ .DEPTH (MEM_DEPTH)
65
+ ) U_myproject_fifo_w768_d1024_A_ram (
66
+ .clk (clk),
67
+ .reset (reset),
68
+ .we (push),
69
+ .waddr (waddr),
70
+ .din (if_din),
71
+ .raddr (raddr),
72
+ .rden (pop),
73
+ .dout (if_dout)
74
+ );
75
+
76
+ //------------------------Task and function--------------
77
+ function integer clog2;
78
+ input integer x;
79
+ integer n, m;
80
+ begin
81
+ n = 1;
82
+ m = 2;
83
+ while (m < x) begin
84
+ n = n + 1;
85
+ m = m * 2;
86
+ end
87
+ clog2 = n;
88
+ end
89
+ endfunction
90
+ //------------------------Body---------------------------
91
+ // num_data_valid
92
+ assign if_num_data_valid = num_data_valid;
93
+ assign if_fifo_cap = DEPTH;
94
+
95
+ // almost full/empty
96
+
97
+ // program full/empty
98
+
99
+ assign if_full_n = full_n;
100
+ assign if_empty_n = dout_vld;
101
+
102
+ assign push = full_n & if_write_ce & if_write;
103
+ assign pop = empty_n & (pop_dout | ~dout_vld);
104
+ assign pop_dout = dout_vld & if_read_ce & if_read;
105
+
106
+ assign wnext = !push ? waddr :
107
+ (waddr == MEM_DEPTH - 1) ? 1'b0 :
108
+ waddr + 1'b1;
109
+ assign rnext = !pop ? raddr :
110
+ (raddr == MEM_DEPTH - 1) ? 1'b0 :
111
+ raddr + 1'b1;
112
+
113
+ // waddr
114
+ always @(posedge clk) begin
115
+ if (reset)
116
+ waddr <= {MEM_AWIDTH{1'b0}};
117
+ else
118
+ waddr <= wnext;
119
+ end
120
+
121
+ // raddr
122
+ always @(posedge clk) begin
123
+ if (reset)
124
+ raddr <= {MEM_AWIDTH{1'b0}};
125
+ else
126
+ raddr <= rnext;
127
+ end
128
+
129
+ // mOutPtr
130
+ always @(posedge clk) begin
131
+ if (reset)
132
+ mOutPtr <= {MEM_AWIDTH+1{1'b0}};
133
+ else if (push & ~pop)
134
+ mOutPtr <= mOutPtr + 1'b1;
135
+ else if (~push & pop)
136
+ mOutPtr <= mOutPtr - 1'b1;
137
+ end
138
+
139
+ // full_n
140
+ always @(posedge clk) begin
141
+ if (reset)
142
+ full_n <= 1'b1;
143
+ else if ((push & ~pop_dout) && (num_data_cnt == DEPTH - 1))
144
+ full_n <= 1'b0;
145
+ else if (~push & pop_dout)
146
+ full_n <= 1'b1;
147
+ end
148
+
149
+ // empty_n
150
+ always @(posedge clk) begin
151
+ if (reset)
152
+ empty_n <= 1'b0;
153
+ else if (push & ~pop)
154
+ empty_n <= 1'b1;
155
+ else if ((~push & pop) && (mOutPtr == 1))
156
+ empty_n <= 1'b0;
157
+ end
158
+
159
+ // almost_full_n
160
+
161
+ // almost_empty_n
162
+
163
+ // prog_full_n
164
+
165
+ // prog_empty_n
166
+
167
+ // num_data_cnt
168
+ always @(posedge clk) begin
169
+ if (reset)
170
+ num_data_cnt <= {ADDR_WIDTH+1{1'b0}};
171
+ else if ( push & ~pop_dout)
172
+ num_data_cnt <= num_data_cnt + 1'b1;
173
+ else if (~push & pop_dout)
174
+ num_data_cnt <= num_data_cnt - 1'b1;
175
+ end
176
+
177
+ // num_data_valid
178
+ assign num_extra_words = (dout_vld & ~pop_dout) ? 1 : 0;
179
+
180
+ always @(posedge clk) begin
181
+ if (reset)
182
+ num_data_valid <= {ADDR_WIDTH+1{1'b0}};
183
+ else if (empty_n | (dout_vld & ~pop_dout))
184
+ num_data_valid <= push + mOutPtr + num_extra_words;
185
+ else
186
+ num_data_valid <= num_extra_words;
187
+ end //
188
+
189
+ // dout_vld
190
+ always @(posedge clk) begin
191
+ if (reset)
192
+ dout_vld <= 1'b0;
193
+ else if (pop)
194
+ dout_vld <= 1'b1;
195
+ else if (pop_dout)
196
+ dout_vld <= 1'b0;
197
+ end
198
+
199
+ endmodule
200
+
201
+
202
+ module myproject_fifo_w768_d1024_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 768,
206
+ ADDR_WIDTH = 10,
207
+ DEPTH = 1024)
208
+ (
209
+ input wire clk,
210
+ input wire reset,
211
+ input wire we,
212
+ input wire [ADDR_WIDTH-1:0] waddr,
213
+ input wire [DATA_WIDTH-1:0] din,
214
+ input wire [ADDR_WIDTH-1:0] raddr,
215
+ input wire rden,
216
+ output wire [DATA_WIDTH-1:0] dout
217
+ );
218
+
219
+ (* ram_style = MEM_STYLE *)
220
+ reg [DATA_WIDTH-1:0] mem[0:DEPTH-1];
221
+ reg [DATA_WIDTH-1:0] mem_reg;
222
+
223
+ always @(posedge clk) begin
224
+ if (we)
225
+ mem[waddr] <= din;
226
+ end
227
+
228
+ always @(posedge clk) begin
229
+ if (reset)
230
+ mem_reg <= 0;
231
+ else if (rden)
232
+ mem_reg <= mem[raddr];
233
+ end
234
+
235
+ assign dout = mem_reg;
236
+
237
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_flow_control_loop_pipe_no_ap_cont.v ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2024.1 (64-bit)
3
+ // Tool Version Limit: 2024.05
4
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
5
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
6
+ //
7
+ // ==============================================================
8
+
9
+ `timescale 1 ns / 1 ps
10
+
11
+ module myproject_flow_control_loop_pipe_no_ap_cont(
12
+ ap_clk,
13
+ ap_rst,
14
+ ap_start,
15
+ ap_ready,
16
+ ap_done,
17
+ ap_start_int,
18
+ ap_ready_int,
19
+ ap_done_int,
20
+ ap_continue_int,
21
+ ap_loop_init,
22
+ ap_loop_exit_ready,
23
+ ap_loop_exit_done
24
+ );
25
+
26
+ input ap_clk;
27
+ input ap_rst;
28
+
29
+ //Block level handshake with outside loop
30
+ input ap_start;
31
+ output ap_ready;
32
+ output ap_done;
33
+
34
+ //Block level handshake with loop body
35
+ output ap_start_int;
36
+ input ap_ready_int;
37
+ input ap_done_int;
38
+ output ap_continue_int;
39
+
40
+ //Init live in variables
41
+ output ap_loop_init;
42
+ reg ap_loop_init;
43
+ reg ap_done;
44
+ reg ap_done_cache;
45
+
46
+ //Exit signal from loop body
47
+ input ap_loop_exit_ready;
48
+ input ap_loop_exit_done;
49
+
50
+ // power-on initialization
51
+ initial begin
52
+ #0 ap_loop_init = 1'b1;
53
+ #0 ap_done_cache = 1'b0;
54
+ end
55
+
56
+ assign ap_start_int = ap_start;
57
+
58
+ assign ap_continue_int = 1'b1;
59
+
60
+ assign ap_ready = ap_loop_exit_ready;
61
+
62
+ //ap_loop_init is valid for the first II
63
+ //of the first loop run so as to enable
64
+ //the init block ops which are pushed into
65
+ //the first state of the pipeline region
66
+ always @ (posedge ap_clk)
67
+ begin
68
+ if (ap_rst == 1'b1) begin
69
+ ap_loop_init <= 1'b1;
70
+ end else if(ap_loop_exit_ready == 1'b1) begin
71
+ ap_loop_init <= 1'b1;
72
+ end else if(ap_ready_int == 1'b1) begin
73
+ ap_loop_init <= 1'b0;
74
+ end
75
+ end
76
+
77
+ // if no ap_continue port and current module is not top module,
78
+ // ap_done handshakes with ap_start. Internally, flow control sends out
79
+ // ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle.
80
+ // ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int
81
+ // is asserted, so DUT can start the next run
82
+ always @(posedge ap_clk)
83
+ begin
84
+ if (ap_rst == 1'b1) begin
85
+ ap_done_cache <= 1'b0;
86
+ end else if (ap_done_int == 1'b1) begin
87
+ ap_done_cache <= 1'b1;
88
+ end else if (ap_start_int == 1'b1) begin
89
+ ap_done_cache <= 1'b0;
90
+ end
91
+ end
92
+
93
+ // if no ap_continue port and current module is not top module, ap_done handshakes with ap_start
94
+ always @(*)
95
+ begin
96
+ if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin
97
+ ap_done = 1'b1;
98
+ end else begin
99
+ ap_done = 1'b0;
100
+ end
101
+ end
102
+
103
+ endmodule
104
+
myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_10s_33s_33_1_1.v ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+ //
8
+ //
9
+ //
10
+ `timescale 1 ns / 1 ps
11
+ //
12
+ module myproject_mac_muladd_16s_10s_33s_33_1_1_DSP48_0(
13
+ input [16 - 1:0] in0,
14
+ input [10 - 1:0] in1,
15
+ input [33 - 1:0] in2,
16
+ output [33 - 1:0] dout);
17
+
18
+ wire signed [27 - 1:0] a;
19
+ wire signed [18 - 1:0] b;
20
+ wire signed [48 - 1:0] c;
21
+ wire signed [45 - 1:0] m;
22
+ wire signed [48 - 1:0] p;
23
+
24
+ assign a = $signed(in0);
25
+ assign b = $signed(in1);
26
+ assign c = $signed(in2);
27
+
28
+ assign m = a * b;
29
+ //
30
+ assign p = m + c;
31
+ //
32
+ assign dout = p;
33
+
34
+ endmodule
35
+ //
36
+
37
+ module myproject_mac_muladd_16s_10s_33s_33_1_1(
38
+ //
39
+ din0,
40
+ din1,
41
+ din2,
42
+ dout);
43
+
44
+ parameter ID = 32'd1;
45
+ parameter NUM_STAGE = 32'd1;
46
+ parameter din0_WIDTH = 32'd1;
47
+ parameter din1_WIDTH = 32'd1;
48
+ parameter din2_WIDTH = 32'd1;
49
+ parameter dout_WIDTH = 32'd1;
50
+ //
51
+ input[din0_WIDTH - 1:0] din0;
52
+ input[din1_WIDTH - 1:0] din1;
53
+ input[din2_WIDTH - 1:0] din2;
54
+ output[dout_WIDTH - 1:0] dout;
55
+
56
+
57
+ myproject_mac_muladd_16s_10s_33s_33_1_1_DSP48_0 myproject_mac_muladd_16s_10s_33s_33_1_1_DSP48_0_U(
58
+ //
59
+ .in0( din0 ),
60
+ .in1( din1 ),
61
+ .in2( din2 ),
62
+ .dout( dout ));
63
+
64
+ endmodule
65
+
66
+
myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_16s_33s_33_1_1.v ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+ //
8
+ //
9
+ //
10
+ `timescale 1 ns / 1 ps
11
+ //
12
+ module myproject_mac_muladd_16s_16s_33s_33_1_1_DSP48_0(
13
+ input [16 - 1:0] in0,
14
+ input [16 - 1:0] in1,
15
+ input [33 - 1:0] in2,
16
+ output [33 - 1:0] dout);
17
+
18
+ wire signed [27 - 1:0] a;
19
+ wire signed [18 - 1:0] b;
20
+ wire signed [48 - 1:0] c;
21
+ wire signed [45 - 1:0] m;
22
+ wire signed [48 - 1:0] p;
23
+
24
+ assign a = $signed(in0);
25
+ assign b = $signed(in1);
26
+ assign c = $signed(in2);
27
+
28
+ assign m = a * b;
29
+ //
30
+ assign p = m + c;
31
+ //
32
+ assign dout = p;
33
+
34
+ endmodule
35
+ //
36
+
37
+ module myproject_mac_muladd_16s_16s_33s_33_1_1(
38
+ //
39
+ din0,
40
+ din1,
41
+ din2,
42
+ dout);
43
+
44
+ parameter ID = 32'd1;
45
+ parameter NUM_STAGE = 32'd1;
46
+ parameter din0_WIDTH = 32'd1;
47
+ parameter din1_WIDTH = 32'd1;
48
+ parameter din2_WIDTH = 32'd1;
49
+ parameter dout_WIDTH = 32'd1;
50
+ //
51
+ input[din0_WIDTH - 1:0] din0;
52
+ input[din1_WIDTH - 1:0] din1;
53
+ input[din2_WIDTH - 1:0] din2;
54
+ output[dout_WIDTH - 1:0] dout;
55
+
56
+
57
+ myproject_mac_muladd_16s_16s_33s_33_1_1_DSP48_0 myproject_mac_muladd_16s_16s_33s_33_1_1_DSP48_0_U(
58
+ //
59
+ .in0( din0 ),
60
+ .in1( din1 ),
61
+ .in2( din2 ),
62
+ .dout( dout ));
63
+
64
+ endmodule
65
+
66
+
myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_16s_40s_41_1_1.v ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+ //
8
+ //
9
+ //
10
+ `timescale 1 ns / 1 ps
11
+ //
12
+ module myproject_mac_muladd_16s_16s_40s_41_1_1_DSP48_0(
13
+ input [16 - 1:0] in0,
14
+ input [16 - 1:0] in1,
15
+ input [40 - 1:0] in2,
16
+ output [41 - 1:0] dout);
17
+
18
+ wire signed [27 - 1:0] a;
19
+ wire signed [18 - 1:0] b;
20
+ wire signed [48 - 1:0] c;
21
+ wire signed [45 - 1:0] m;
22
+ wire signed [48 - 1:0] p;
23
+
24
+ assign a = $signed(in0);
25
+ assign b = $signed(in1);
26
+ assign c = $signed(in2);
27
+
28
+ assign m = a * b;
29
+ //
30
+ assign p = m + c;
31
+ //
32
+ assign dout = p;
33
+
34
+ endmodule
35
+ //
36
+
37
+ module myproject_mac_muladd_16s_16s_40s_41_1_1(
38
+ //
39
+ din0,
40
+ din1,
41
+ din2,
42
+ dout);
43
+
44
+ parameter ID = 32'd1;
45
+ parameter NUM_STAGE = 32'd1;
46
+ parameter din0_WIDTH = 32'd1;
47
+ parameter din1_WIDTH = 32'd1;
48
+ parameter din2_WIDTH = 32'd1;
49
+ parameter dout_WIDTH = 32'd1;
50
+ //
51
+ input[din0_WIDTH - 1:0] din0;
52
+ input[din1_WIDTH - 1:0] din1;
53
+ input[din2_WIDTH - 1:0] din2;
54
+ output[dout_WIDTH - 1:0] dout;
55
+
56
+
57
+ myproject_mac_muladd_16s_16s_40s_41_1_1_DSP48_0 myproject_mac_muladd_16s_16s_40s_41_1_1_DSP48_0_U(
58
+ //
59
+ .in0( din0 ),
60
+ .in1( din1 ),
61
+ .in2( din2 ),
62
+ .dout( dout ));
63
+
64
+ endmodule
65
+
66
+
myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_16s_41s_42_1_1.v ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+ //
8
+ //
9
+ //
10
+ `timescale 1 ns / 1 ps
11
+ //
12
+ module myproject_mac_muladd_16s_16s_41s_42_1_1_DSP48_0(
13
+ input [16 - 1:0] in0,
14
+ input [16 - 1:0] in1,
15
+ input [41 - 1:0] in2,
16
+ output [42 - 1:0] dout);
17
+
18
+ wire signed [27 - 1:0] a;
19
+ wire signed [18 - 1:0] b;
20
+ wire signed [48 - 1:0] c;
21
+ wire signed [45 - 1:0] m;
22
+ wire signed [48 - 1:0] p;
23
+
24
+ assign a = $signed(in0);
25
+ assign b = $signed(in1);
26
+ assign c = $signed(in2);
27
+
28
+ assign m = a * b;
29
+ //
30
+ assign p = m + c;
31
+ //
32
+ assign dout = p;
33
+
34
+ endmodule
35
+ //
36
+
37
+ module myproject_mac_muladd_16s_16s_41s_42_1_1(
38
+ //
39
+ din0,
40
+ din1,
41
+ din2,
42
+ dout);
43
+
44
+ parameter ID = 32'd1;
45
+ parameter NUM_STAGE = 32'd1;
46
+ parameter din0_WIDTH = 32'd1;
47
+ parameter din1_WIDTH = 32'd1;
48
+ parameter din2_WIDTH = 32'd1;
49
+ parameter dout_WIDTH = 32'd1;
50
+ //
51
+ input[din0_WIDTH - 1:0] din0;
52
+ input[din1_WIDTH - 1:0] din1;
53
+ input[din2_WIDTH - 1:0] din2;
54
+ output[dout_WIDTH - 1:0] dout;
55
+
56
+
57
+ myproject_mac_muladd_16s_16s_41s_42_1_1_DSP48_0 myproject_mac_muladd_16s_16s_41s_42_1_1_DSP48_0_U(
58
+ //
59
+ .in0( din0 ),
60
+ .in1( din1 ),
61
+ .in2( din2 ),
62
+ .dout( dout ));
63
+
64
+ endmodule
65
+
66
+
myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_9s_31s_31_1_1.v ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+ //
8
+ //
9
+ //
10
+ `timescale 1 ns / 1 ps
11
+ //
12
+ module myproject_mac_muladd_16s_9s_31s_31_1_1_DSP48_0(
13
+ input [16 - 1:0] in0,
14
+ input [9 - 1:0] in1,
15
+ input [31 - 1:0] in2,
16
+ output [31 - 1:0] dout);
17
+
18
+ wire signed [27 - 1:0] a;
19
+ wire signed [18 - 1:0] b;
20
+ wire signed [48 - 1:0] c;
21
+ wire signed [45 - 1:0] m;
22
+ wire signed [48 - 1:0] p;
23
+
24
+ assign a = $signed(in0);
25
+ assign b = $signed(in1);
26
+ assign c = $signed(in2);
27
+
28
+ assign m = a * b;
29
+ //
30
+ assign p = m + c;
31
+ //
32
+ assign dout = p;
33
+
34
+ endmodule
35
+ //
36
+
37
+ module myproject_mac_muladd_16s_9s_31s_31_1_1(
38
+ //
39
+ din0,
40
+ din1,
41
+ din2,
42
+ dout);
43
+
44
+ parameter ID = 32'd1;
45
+ parameter NUM_STAGE = 32'd1;
46
+ parameter din0_WIDTH = 32'd1;
47
+ parameter din1_WIDTH = 32'd1;
48
+ parameter din2_WIDTH = 32'd1;
49
+ parameter dout_WIDTH = 32'd1;
50
+ //
51
+ input[din0_WIDTH - 1:0] din0;
52
+ input[din1_WIDTH - 1:0] din1;
53
+ input[din2_WIDTH - 1:0] din2;
54
+ output[dout_WIDTH - 1:0] dout;
55
+
56
+
57
+ myproject_mac_muladd_16s_9s_31s_31_1_1_DSP48_0 myproject_mac_muladd_16s_9s_31s_31_1_1_DSP48_0_U(
58
+ //
59
+ .in0( din0 ),
60
+ .in1( din1 ),
61
+ .in2( din2 ),
62
+ .dout( dout ));
63
+
64
+ endmodule
65
+
66
+
myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_9s_34s_34_1_1.v ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+ //
8
+ //
9
+ //
10
+ `timescale 1 ns / 1 ps
11
+ //
12
+ module myproject_mac_muladd_16s_9s_34s_34_1_1_DSP48_0(
13
+ input [16 - 1:0] in0,
14
+ input [9 - 1:0] in1,
15
+ input [34 - 1:0] in2,
16
+ output [34 - 1:0] dout);
17
+
18
+ wire signed [27 - 1:0] a;
19
+ wire signed [18 - 1:0] b;
20
+ wire signed [48 - 1:0] c;
21
+ wire signed [45 - 1:0] m;
22
+ wire signed [48 - 1:0] p;
23
+
24
+ assign a = $signed(in0);
25
+ assign b = $signed(in1);
26
+ assign c = $signed(in2);
27
+
28
+ assign m = a * b;
29
+ //
30
+ assign p = m + c;
31
+ //
32
+ assign dout = p;
33
+
34
+ endmodule
35
+ //
36
+
37
+ module myproject_mac_muladd_16s_9s_34s_34_1_1(
38
+ //
39
+ din0,
40
+ din1,
41
+ din2,
42
+ dout);
43
+
44
+ parameter ID = 32'd1;
45
+ parameter NUM_STAGE = 32'd1;
46
+ parameter din0_WIDTH = 32'd1;
47
+ parameter din1_WIDTH = 32'd1;
48
+ parameter din2_WIDTH = 32'd1;
49
+ parameter dout_WIDTH = 32'd1;
50
+ //
51
+ input[din0_WIDTH - 1:0] din0;
52
+ input[din1_WIDTH - 1:0] din1;
53
+ input[din2_WIDTH - 1:0] din2;
54
+ output[dout_WIDTH - 1:0] dout;
55
+
56
+
57
+ myproject_mac_muladd_16s_9s_34s_34_1_1_DSP48_0 myproject_mac_muladd_16s_9s_34s_34_1_1_DSP48_0_U(
58
+ //
59
+ .in0( din0 ),
60
+ .in1( din1 ),
61
+ .in2( din2 ),
62
+ .dout( dout ));
63
+
64
+ endmodule
65
+
66
+
myproject_prj/solution1/impl/verilog/myproject_mac_muladd_16s_9s_43s_44_1_1.v ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+ //
8
+ //
9
+ //
10
+ `timescale 1 ns / 1 ps
11
+ //
12
+ module myproject_mac_muladd_16s_9s_43s_44_1_1_DSP48_0(
13
+ input [16 - 1:0] in0,
14
+ input [9 - 1:0] in1,
15
+ input [43 - 1:0] in2,
16
+ output [44 - 1:0] dout);
17
+
18
+ wire signed [27 - 1:0] a;
19
+ wire signed [18 - 1:0] b;
20
+ wire signed [48 - 1:0] c;
21
+ wire signed [45 - 1:0] m;
22
+ wire signed [48 - 1:0] p;
23
+
24
+ assign a = $signed(in0);
25
+ assign b = $signed(in1);
26
+ assign c = $signed(in2);
27
+
28
+ assign m = a * b;
29
+ //
30
+ assign p = m + c;
31
+ //
32
+ assign dout = p;
33
+
34
+ endmodule
35
+ //
36
+
37
+ module myproject_mac_muladd_16s_9s_43s_44_1_1(
38
+ //
39
+ din0,
40
+ din1,
41
+ din2,
42
+ dout);
43
+
44
+ parameter ID = 32'd1;
45
+ parameter NUM_STAGE = 32'd1;
46
+ parameter din0_WIDTH = 32'd1;
47
+ parameter din1_WIDTH = 32'd1;
48
+ parameter din2_WIDTH = 32'd1;
49
+ parameter dout_WIDTH = 32'd1;
50
+ //
51
+ input[din0_WIDTH - 1:0] din0;
52
+ input[din1_WIDTH - 1:0] din1;
53
+ input[din2_WIDTH - 1:0] din2;
54
+ output[dout_WIDTH - 1:0] dout;
55
+
56
+
57
+ myproject_mac_muladd_16s_9s_43s_44_1_1_DSP48_0 myproject_mac_muladd_16s_9s_43s_44_1_1_DSP48_0_U(
58
+ //
59
+ .in0( din0 ),
60
+ .in1( din1 ),
61
+ .in2( din2 ),
62
+ .dout( dout ));
63
+
64
+ endmodule
65
+
66
+
myproject_prj/solution1/impl/verilog/myproject_mul_16s_16s_32_1_1.v ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
2
+
3
+ `timescale 1 ns / 1 ps
4
+
5
+ module myproject_mul_16s_16s_32_1_1(din0, din1, dout);
6
+ parameter ID = 1;
7
+ parameter NUM_STAGE = 0;
8
+ parameter din0_WIDTH = 14;
9
+ parameter din1_WIDTH = 12;
10
+ parameter dout_WIDTH = 26;
11
+
12
+ input [din0_WIDTH - 1 : 0] din0;
13
+ input [din1_WIDTH - 1 : 0] din1;
14
+ output [dout_WIDTH - 1 : 0] dout;
15
+
16
+ wire signed [dout_WIDTH - 1 : 0] tmp_product;
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+ assign tmp_product = $signed(din0) * $signed(din1);
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+ assign dout = tmp_product;
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config30_s.v ADDED
@@ -0,0 +1,473 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config30_s (
10
+ ap_clk,
11
+ ap_rst,
12
+ ap_start,
13
+ start_full_n,
14
+ ap_done,
15
+ ap_continue,
16
+ ap_idle,
17
+ ap_ready,
18
+ layer29_out_dout,
19
+ layer29_out_num_data_valid,
20
+ layer29_out_fifo_cap,
21
+ layer29_out_empty_n,
22
+ layer29_out_read,
23
+ layer30_out_din,
24
+ layer30_out_num_data_valid,
25
+ layer30_out_fifo_cap,
26
+ layer30_out_full_n,
27
+ layer30_out_write,
28
+ start_out,
29
+ start_write
30
+ );
31
+
32
+ parameter ap_ST_fsm_state1 = 1'd1;
33
+
34
+ input ap_clk;
35
+ input ap_rst;
36
+ input ap_start;
37
+ input start_full_n;
38
+ output ap_done;
39
+ input ap_continue;
40
+ output ap_idle;
41
+ output ap_ready;
42
+ input [671:0] layer29_out_dout;
43
+ input [10:0] layer29_out_num_data_valid;
44
+ input [10:0] layer29_out_fifo_cap;
45
+ input layer29_out_empty_n;
46
+ output layer29_out_read;
47
+ output [255:0] layer30_out_din;
48
+ input [10:0] layer30_out_num_data_valid;
49
+ input [10:0] layer30_out_fifo_cap;
50
+ input layer30_out_full_n;
51
+ output layer30_out_write;
52
+ output start_out;
53
+ output start_write;
54
+
55
+ reg ap_idle;
56
+ reg start_write;
57
+
58
+ reg real_start;
59
+ reg start_once_reg;
60
+ (* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm;
61
+ wire ap_CS_fsm_state1;
62
+ wire internal_ap_ready;
63
+ reg ap_done_reg;
64
+ reg ap_block_state1_pp0_stage0_iter0;
65
+ wire [0:0] icmp_ln41_fu_776_p2;
66
+ reg ap_condition_exit_pp0_iter0_stage0;
67
+ wire ap_loop_exit_ready;
68
+ reg ap_ready_int;
69
+ reg layer29_out_blk_n;
70
+ reg layer30_out_blk_n;
71
+ reg [9:0] i1_fu_170;
72
+ wire [9:0] i_fu_770_p2;
73
+ wire ap_loop_init;
74
+ reg [9:0] ap_sig_allocacmp_i1_load;
75
+ reg layer29_out_read_local;
76
+ wire [255:0] or_ln57_s_fu_733_p17;
77
+ reg layer30_out_write_local;
78
+ wire [41:0] trunc_ln44_fu_195_p1;
79
+ wire [0:0] icmp_ln51_fu_349_p2;
80
+ wire [15:0] out_data_fu_355_p4;
81
+ wire [41:0] trunc_ln44_220_fu_199_p4;
82
+ wire [0:0] icmp_ln51_220_fu_373_p2;
83
+ wire [15:0] out_data_82_fu_379_p4;
84
+ wire [41:0] trunc_ln44_221_fu_209_p4;
85
+ wire [0:0] icmp_ln51_221_fu_397_p2;
86
+ wire [15:0] out_data_84_fu_403_p4;
87
+ wire [41:0] trunc_ln44_222_fu_219_p4;
88
+ wire [0:0] icmp_ln51_222_fu_421_p2;
89
+ wire [15:0] out_data_86_fu_427_p4;
90
+ wire [41:0] trunc_ln44_223_fu_229_p4;
91
+ wire [0:0] icmp_ln51_223_fu_445_p2;
92
+ wire [15:0] trunc_ln_fu_451_p4;
93
+ wire [41:0] trunc_ln44_224_fu_239_p4;
94
+ wire [0:0] icmp_ln51_224_fu_469_p2;
95
+ wire [15:0] trunc_ln52_200_fu_475_p4;
96
+ wire [41:0] trunc_ln44_225_fu_249_p4;
97
+ wire [0:0] icmp_ln51_225_fu_493_p2;
98
+ wire [15:0] trunc_ln52_201_fu_499_p4;
99
+ wire [41:0] trunc_ln44_226_fu_259_p4;
100
+ wire [0:0] icmp_ln51_226_fu_517_p2;
101
+ wire [15:0] trunc_ln52_202_fu_523_p4;
102
+ wire [41:0] trunc_ln44_227_fu_269_p4;
103
+ wire [0:0] icmp_ln51_227_fu_541_p2;
104
+ wire [15:0] trunc_ln52_203_fu_547_p4;
105
+ wire [41:0] trunc_ln44_228_fu_279_p4;
106
+ wire [0:0] icmp_ln51_228_fu_565_p2;
107
+ wire [15:0] trunc_ln52_204_fu_571_p4;
108
+ wire [41:0] trunc_ln44_229_fu_289_p4;
109
+ wire [0:0] icmp_ln51_229_fu_589_p2;
110
+ wire [15:0] trunc_ln52_205_fu_595_p4;
111
+ wire [41:0] trunc_ln44_230_fu_299_p4;
112
+ wire [0:0] icmp_ln51_230_fu_613_p2;
113
+ wire [15:0] trunc_ln52_206_fu_619_p4;
114
+ wire [41:0] trunc_ln44_231_fu_309_p4;
115
+ wire [0:0] icmp_ln51_231_fu_637_p2;
116
+ wire [15:0] trunc_ln52_207_fu_643_p4;
117
+ wire [41:0] trunc_ln44_232_fu_319_p4;
118
+ wire [0:0] icmp_ln51_232_fu_661_p2;
119
+ wire [15:0] trunc_ln52_208_fu_667_p4;
120
+ wire [41:0] trunc_ln44_233_fu_329_p4;
121
+ wire [0:0] icmp_ln51_233_fu_685_p2;
122
+ wire [15:0] trunc_ln52_209_fu_691_p4;
123
+ wire [41:0] trunc_ln44_234_fu_339_p4;
124
+ wire [0:0] icmp_ln51_234_fu_709_p2;
125
+ wire [15:0] trunc_ln52_210_fu_715_p4;
126
+ wire [15:0] select_ln51_210_fu_725_p3;
127
+ wire [15:0] select_ln51_209_fu_701_p3;
128
+ wire [15:0] select_ln51_208_fu_677_p3;
129
+ wire [15:0] select_ln51_207_fu_653_p3;
130
+ wire [15:0] select_ln51_206_fu_629_p3;
131
+ wire [15:0] select_ln51_205_fu_605_p3;
132
+ wire [15:0] select_ln51_204_fu_581_p3;
133
+ wire [15:0] select_ln51_203_fu_557_p3;
134
+ wire [15:0] select_ln51_202_fu_533_p3;
135
+ wire [15:0] select_ln51_201_fu_509_p3;
136
+ wire [15:0] select_ln51_200_fu_485_p3;
137
+ wire [15:0] select_ln51_fu_461_p3;
138
+ wire [15:0] out_data_87_fu_437_p3;
139
+ wire [15:0] out_data_85_fu_413_p3;
140
+ wire [15:0] out_data_83_fu_389_p3;
141
+ wire [15:0] out_data_81_fu_365_p3;
142
+ wire ap_continue_int;
143
+ reg ap_done_int;
144
+ reg [0:0] ap_NS_fsm;
145
+ reg ap_ST_fsm_state1_blk;
146
+ wire ap_start_int;
147
+ wire ap_done_sig;
148
+ wire ap_ce_reg;
149
+
150
+ // power-on initialization
151
+ initial begin
152
+ #0 start_once_reg = 1'b0;
153
+ #0 ap_CS_fsm = 1'd1;
154
+ #0 ap_done_reg = 1'b0;
155
+ #0 i1_fu_170 = 10'd0;
156
+ end
157
+
158
+ myproject_flow_control_loop_pipe flow_control_loop_pipe_U(
159
+ .ap_clk(ap_clk),
160
+ .ap_rst(ap_rst),
161
+ .ap_start(real_start),
162
+ .ap_ready(internal_ap_ready),
163
+ .ap_done(ap_done_sig),
164
+ .ap_start_int(ap_start_int),
165
+ .ap_loop_init(ap_loop_init),
166
+ .ap_ready_int(ap_ready_int),
167
+ .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0),
168
+ .ap_loop_exit_done(ap_done_int),
169
+ .ap_continue_int(ap_continue_int),
170
+ .ap_done_int(ap_done_int),
171
+ .ap_continue(ap_continue)
172
+ );
173
+
174
+ always @ (posedge ap_clk) begin
175
+ if (ap_rst == 1'b1) begin
176
+ ap_CS_fsm <= ap_ST_fsm_state1;
177
+ end else begin
178
+ ap_CS_fsm <= ap_NS_fsm;
179
+ end
180
+ end
181
+
182
+ always @ (posedge ap_clk) begin
183
+ if (ap_rst == 1'b1) begin
184
+ ap_done_reg <= 1'b0;
185
+ end else begin
186
+ if ((ap_continue_int == 1'b1)) begin
187
+ ap_done_reg <= 1'b0;
188
+ end else if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
189
+ ap_done_reg <= 1'b1;
190
+ end
191
+ end
192
+ end
193
+
194
+ always @ (posedge ap_clk) begin
195
+ if (ap_rst == 1'b1) begin
196
+ start_once_reg <= 1'b0;
197
+ end else begin
198
+ if (((real_start == 1'b1) & (internal_ap_ready == 1'b0))) begin
199
+ start_once_reg <= 1'b1;
200
+ end else if ((internal_ap_ready == 1'b1)) begin
201
+ start_once_reg <= 1'b0;
202
+ end
203
+ end
204
+ end
205
+
206
+ always @ (posedge ap_clk) begin
207
+ if (((1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
208
+ i1_fu_170 <= i_fu_770_p2;
209
+ end
210
+ end
211
+
212
+ always @ (*) begin
213
+ if ((1'b1 == ap_block_state1_pp0_stage0_iter0)) begin
214
+ ap_ST_fsm_state1_blk = 1'b1;
215
+ end else begin
216
+ ap_ST_fsm_state1_blk = 1'b0;
217
+ end
218
+ end
219
+
220
+ always @ (*) begin
221
+ if (((icmp_ln41_fu_776_p2 == 1'd1) & (1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
222
+ ap_condition_exit_pp0_iter0_stage0 = 1'b1;
223
+ end else begin
224
+ ap_condition_exit_pp0_iter0_stage0 = 1'b0;
225
+ end
226
+ end
227
+
228
+ always @ (*) begin
229
+ if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
230
+ ap_done_int = 1'b1;
231
+ end else begin
232
+ ap_done_int = ap_done_reg;
233
+ end
234
+ end
235
+
236
+ always @ (*) begin
237
+ if (((ap_start_int == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin
238
+ ap_idle = 1'b1;
239
+ end else begin
240
+ ap_idle = 1'b0;
241
+ end
242
+ end
243
+
244
+ always @ (*) begin
245
+ if (((1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
246
+ ap_ready_int = 1'b1;
247
+ end else begin
248
+ ap_ready_int = 1'b0;
249
+ end
250
+ end
251
+
252
+ always @ (*) begin
253
+ if (((ap_loop_init == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
254
+ ap_sig_allocacmp_i1_load = 10'd0;
255
+ end else begin
256
+ ap_sig_allocacmp_i1_load = i1_fu_170;
257
+ end
258
+ end
259
+
260
+ always @ (*) begin
261
+ if ((~((ap_start_int == 1'b0) | (ap_done_reg == 1'b1)) & (1'b1 == ap_CS_fsm_state1))) begin
262
+ layer29_out_blk_n = layer29_out_empty_n;
263
+ end else begin
264
+ layer29_out_blk_n = 1'b1;
265
+ end
266
+ end
267
+
268
+ always @ (*) begin
269
+ if (((1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
270
+ layer29_out_read_local = 1'b1;
271
+ end else begin
272
+ layer29_out_read_local = 1'b0;
273
+ end
274
+ end
275
+
276
+ always @ (*) begin
277
+ if ((~((ap_start_int == 1'b0) | (ap_done_reg == 1'b1)) & (1'b1 == ap_CS_fsm_state1))) begin
278
+ layer30_out_blk_n = layer30_out_full_n;
279
+ end else begin
280
+ layer30_out_blk_n = 1'b1;
281
+ end
282
+ end
283
+
284
+ always @ (*) begin
285
+ if (((1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
286
+ layer30_out_write_local = 1'b1;
287
+ end else begin
288
+ layer30_out_write_local = 1'b0;
289
+ end
290
+ end
291
+
292
+ always @ (*) begin
293
+ if (((start_full_n == 1'b0) & (start_once_reg == 1'b0))) begin
294
+ real_start = 1'b0;
295
+ end else begin
296
+ real_start = ap_start;
297
+ end
298
+ end
299
+
300
+ always @ (*) begin
301
+ if (((real_start == 1'b1) & (start_once_reg == 1'b0))) begin
302
+ start_write = 1'b1;
303
+ end else begin
304
+ start_write = 1'b0;
305
+ end
306
+ end
307
+
308
+ always @ (*) begin
309
+ case (ap_CS_fsm)
310
+ ap_ST_fsm_state1 : begin
311
+ ap_NS_fsm = ap_ST_fsm_state1;
312
+ end
313
+ default : begin
314
+ ap_NS_fsm = 'bx;
315
+ end
316
+ endcase
317
+ end
318
+
319
+ assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];
320
+
321
+ always @ (*) begin
322
+ ap_block_state1_pp0_stage0_iter0 = ((ap_start_int == 1'b0) | (ap_done_reg == 1'b1) | (layer30_out_full_n == 1'b0) | (layer29_out_empty_n == 1'b0));
323
+ end
324
+
325
+ assign ap_done = ap_done_sig;
326
+
327
+ assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0;
328
+
329
+ assign ap_ready = internal_ap_ready;
330
+
331
+ assign i_fu_770_p2 = (ap_sig_allocacmp_i1_load + 10'd1);
332
+
333
+ assign icmp_ln41_fu_776_p2 = ((ap_sig_allocacmp_i1_load == 10'd1023) ? 1'b1 : 1'b0);
334
+
335
+ assign icmp_ln51_220_fu_373_p2 = (($signed(trunc_ln44_220_fu_199_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
336
+
337
+ assign icmp_ln51_221_fu_397_p2 = (($signed(trunc_ln44_221_fu_209_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
338
+
339
+ assign icmp_ln51_222_fu_421_p2 = (($signed(trunc_ln44_222_fu_219_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
340
+
341
+ assign icmp_ln51_223_fu_445_p2 = (($signed(trunc_ln44_223_fu_229_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
342
+
343
+ assign icmp_ln51_224_fu_469_p2 = (($signed(trunc_ln44_224_fu_239_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
344
+
345
+ assign icmp_ln51_225_fu_493_p2 = (($signed(trunc_ln44_225_fu_249_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
346
+
347
+ assign icmp_ln51_226_fu_517_p2 = (($signed(trunc_ln44_226_fu_259_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
348
+
349
+ assign icmp_ln51_227_fu_541_p2 = (($signed(trunc_ln44_227_fu_269_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
350
+
351
+ assign icmp_ln51_228_fu_565_p2 = (($signed(trunc_ln44_228_fu_279_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
352
+
353
+ assign icmp_ln51_229_fu_589_p2 = (($signed(trunc_ln44_229_fu_289_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
354
+
355
+ assign icmp_ln51_230_fu_613_p2 = (($signed(trunc_ln44_230_fu_299_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
356
+
357
+ assign icmp_ln51_231_fu_637_p2 = (($signed(trunc_ln44_231_fu_309_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
358
+
359
+ assign icmp_ln51_232_fu_661_p2 = (($signed(trunc_ln44_232_fu_319_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
360
+
361
+ assign icmp_ln51_233_fu_685_p2 = (($signed(trunc_ln44_233_fu_329_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
362
+
363
+ assign icmp_ln51_234_fu_709_p2 = (($signed(trunc_ln44_234_fu_339_p4) > $signed(42'd0)) ? 1'b1 : 1'b0);
364
+
365
+ assign icmp_ln51_fu_349_p2 = (($signed(trunc_ln44_fu_195_p1) > $signed(42'd0)) ? 1'b1 : 1'b0);
366
+
367
+ assign layer29_out_read = layer29_out_read_local;
368
+
369
+ assign layer30_out_din = or_ln57_s_fu_733_p17;
370
+
371
+ assign layer30_out_write = layer30_out_write_local;
372
+
373
+ assign or_ln57_s_fu_733_p17 = {{{{{{{{{{{{{{{{select_ln51_210_fu_725_p3}, {select_ln51_209_fu_701_p3}}, {select_ln51_208_fu_677_p3}}, {select_ln51_207_fu_653_p3}}, {select_ln51_206_fu_629_p3}}, {select_ln51_205_fu_605_p3}}, {select_ln51_204_fu_581_p3}}, {select_ln51_203_fu_557_p3}}, {select_ln51_202_fu_533_p3}}, {select_ln51_201_fu_509_p3}}, {select_ln51_200_fu_485_p3}}, {select_ln51_fu_461_p3}}, {out_data_87_fu_437_p3}}, {out_data_85_fu_413_p3}}, {out_data_83_fu_389_p3}}, {out_data_81_fu_365_p3}};
374
+
375
+ assign out_data_81_fu_365_p3 = ((icmp_ln51_fu_349_p2[0:0] == 1'b1) ? out_data_fu_355_p4 : 16'd0);
376
+
377
+ assign out_data_82_fu_379_p4 = {{layer29_out_dout[67:52]}};
378
+
379
+ assign out_data_83_fu_389_p3 = ((icmp_ln51_220_fu_373_p2[0:0] == 1'b1) ? out_data_82_fu_379_p4 : 16'd0);
380
+
381
+ assign out_data_84_fu_403_p4 = {{layer29_out_dout[109:94]}};
382
+
383
+ assign out_data_85_fu_413_p3 = ((icmp_ln51_221_fu_397_p2[0:0] == 1'b1) ? out_data_84_fu_403_p4 : 16'd0);
384
+
385
+ assign out_data_86_fu_427_p4 = {{layer29_out_dout[151:136]}};
386
+
387
+ assign out_data_87_fu_437_p3 = ((icmp_ln51_222_fu_421_p2[0:0] == 1'b1) ? out_data_86_fu_427_p4 : 16'd0);
388
+
389
+ assign out_data_fu_355_p4 = {{layer29_out_dout[25:10]}};
390
+
391
+ assign select_ln51_200_fu_485_p3 = ((icmp_ln51_224_fu_469_p2[0:0] == 1'b1) ? trunc_ln52_200_fu_475_p4 : 16'd0);
392
+
393
+ assign select_ln51_201_fu_509_p3 = ((icmp_ln51_225_fu_493_p2[0:0] == 1'b1) ? trunc_ln52_201_fu_499_p4 : 16'd0);
394
+
395
+ assign select_ln51_202_fu_533_p3 = ((icmp_ln51_226_fu_517_p2[0:0] == 1'b1) ? trunc_ln52_202_fu_523_p4 : 16'd0);
396
+
397
+ assign select_ln51_203_fu_557_p3 = ((icmp_ln51_227_fu_541_p2[0:0] == 1'b1) ? trunc_ln52_203_fu_547_p4 : 16'd0);
398
+
399
+ assign select_ln51_204_fu_581_p3 = ((icmp_ln51_228_fu_565_p2[0:0] == 1'b1) ? trunc_ln52_204_fu_571_p4 : 16'd0);
400
+
401
+ assign select_ln51_205_fu_605_p3 = ((icmp_ln51_229_fu_589_p2[0:0] == 1'b1) ? trunc_ln52_205_fu_595_p4 : 16'd0);
402
+
403
+ assign select_ln51_206_fu_629_p3 = ((icmp_ln51_230_fu_613_p2[0:0] == 1'b1) ? trunc_ln52_206_fu_619_p4 : 16'd0);
404
+
405
+ assign select_ln51_207_fu_653_p3 = ((icmp_ln51_231_fu_637_p2[0:0] == 1'b1) ? trunc_ln52_207_fu_643_p4 : 16'd0);
406
+
407
+ assign select_ln51_208_fu_677_p3 = ((icmp_ln51_232_fu_661_p2[0:0] == 1'b1) ? trunc_ln52_208_fu_667_p4 : 16'd0);
408
+
409
+ assign select_ln51_209_fu_701_p3 = ((icmp_ln51_233_fu_685_p2[0:0] == 1'b1) ? trunc_ln52_209_fu_691_p4 : 16'd0);
410
+
411
+ assign select_ln51_210_fu_725_p3 = ((icmp_ln51_234_fu_709_p2[0:0] == 1'b1) ? trunc_ln52_210_fu_715_p4 : 16'd0);
412
+
413
+ assign select_ln51_fu_461_p3 = ((icmp_ln51_223_fu_445_p2[0:0] == 1'b1) ? trunc_ln_fu_451_p4 : 16'd0);
414
+
415
+ assign start_out = real_start;
416
+
417
+ assign trunc_ln44_220_fu_199_p4 = {{layer29_out_dout[83:42]}};
418
+
419
+ assign trunc_ln44_221_fu_209_p4 = {{layer29_out_dout[125:84]}};
420
+
421
+ assign trunc_ln44_222_fu_219_p4 = {{layer29_out_dout[167:126]}};
422
+
423
+ assign trunc_ln44_223_fu_229_p4 = {{layer29_out_dout[209:168]}};
424
+
425
+ assign trunc_ln44_224_fu_239_p4 = {{layer29_out_dout[251:210]}};
426
+
427
+ assign trunc_ln44_225_fu_249_p4 = {{layer29_out_dout[293:252]}};
428
+
429
+ assign trunc_ln44_226_fu_259_p4 = {{layer29_out_dout[335:294]}};
430
+
431
+ assign trunc_ln44_227_fu_269_p4 = {{layer29_out_dout[377:336]}};
432
+
433
+ assign trunc_ln44_228_fu_279_p4 = {{layer29_out_dout[419:378]}};
434
+
435
+ assign trunc_ln44_229_fu_289_p4 = {{layer29_out_dout[461:420]}};
436
+
437
+ assign trunc_ln44_230_fu_299_p4 = {{layer29_out_dout[503:462]}};
438
+
439
+ assign trunc_ln44_231_fu_309_p4 = {{layer29_out_dout[545:504]}};
440
+
441
+ assign trunc_ln44_232_fu_319_p4 = {{layer29_out_dout[587:546]}};
442
+
443
+ assign trunc_ln44_233_fu_329_p4 = {{layer29_out_dout[629:588]}};
444
+
445
+ assign trunc_ln44_234_fu_339_p4 = {{layer29_out_dout[671:630]}};
446
+
447
+ assign trunc_ln44_fu_195_p1 = layer29_out_dout[41:0];
448
+
449
+ assign trunc_ln52_200_fu_475_p4 = {{layer29_out_dout[235:220]}};
450
+
451
+ assign trunc_ln52_201_fu_499_p4 = {{layer29_out_dout[277:262]}};
452
+
453
+ assign trunc_ln52_202_fu_523_p4 = {{layer29_out_dout[319:304]}};
454
+
455
+ assign trunc_ln52_203_fu_547_p4 = {{layer29_out_dout[361:346]}};
456
+
457
+ assign trunc_ln52_204_fu_571_p4 = {{layer29_out_dout[403:388]}};
458
+
459
+ assign trunc_ln52_205_fu_595_p4 = {{layer29_out_dout[445:430]}};
460
+
461
+ assign trunc_ln52_206_fu_619_p4 = {{layer29_out_dout[487:472]}};
462
+
463
+ assign trunc_ln52_207_fu_643_p4 = {{layer29_out_dout[529:514]}};
464
+
465
+ assign trunc_ln52_208_fu_667_p4 = {{layer29_out_dout[571:556]}};
466
+
467
+ assign trunc_ln52_209_fu_691_p4 = {{layer29_out_dout[613:598]}};
468
+
469
+ assign trunc_ln52_210_fu_715_p4 = {{layer29_out_dout[655:640]}};
470
+
471
+ assign trunc_ln_fu_451_p4 = {{layer29_out_dout[193:178]}};
472
+
473
+ endmodule //myproject_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config30_s
myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_1u_config2_s.v ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_1u_config2_s (
10
+ ap_clk,
11
+ ap_rst,
12
+ ap_start,
13
+ ap_done,
14
+ ap_idle,
15
+ ap_ready,
16
+ in_elem_0_0_0_0_0_val,
17
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_i,
18
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o,
19
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o_ap_vld,
20
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_176,
21
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_176_ap_vld,
22
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_i,
23
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o,
24
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o_ap_vld,
25
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_173,
26
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_173_ap_vld,
27
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_i,
28
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o,
29
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o_ap_vld,
30
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_170,
31
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_170_ap_vld,
32
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_i,
33
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o,
34
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o_ap_vld,
35
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_i,
36
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o,
37
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o_ap_vld,
38
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_i,
39
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o,
40
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o_ap_vld
41
+ );
42
+
43
+ parameter ap_ST_fsm_state1 = 1'd1;
44
+
45
+ input ap_clk;
46
+ input ap_rst;
47
+ input ap_start;
48
+ output ap_done;
49
+ output ap_idle;
50
+ output ap_ready;
51
+ input [15:0] in_elem_0_0_0_0_0_val;
52
+ input [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_i;
53
+ output [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o;
54
+ output void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o_ap_vld;
55
+ output [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_176;
56
+ output void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_176_ap_vld;
57
+ input [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_i;
58
+ output [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o;
59
+ output void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o_ap_vld;
60
+ output [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_173;
61
+ output void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_173_ap_vld;
62
+ input [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_i;
63
+ output [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o;
64
+ output void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o_ap_vld;
65
+ output [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_170;
66
+ output void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_170_ap_vld;
67
+ input [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_i;
68
+ output [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o;
69
+ output void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o_ap_vld;
70
+ input [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_i;
71
+ output [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o;
72
+ output void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o_ap_vld;
73
+ input [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_i;
74
+ output [15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o;
75
+ output void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o_ap_vld;
76
+
77
+ reg ap_done;
78
+ reg ap_idle;
79
+ reg ap_ready;
80
+ reg[15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o;
81
+ reg void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o_ap_vld;
82
+ reg void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_176_ap_vld;
83
+ reg[15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o;
84
+ reg void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o_ap_vld;
85
+ reg void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_173_ap_vld;
86
+ reg[15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o;
87
+ reg void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o_ap_vld;
88
+ reg void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_170_ap_vld;
89
+ reg[15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o;
90
+ reg void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o_ap_vld;
91
+ reg[15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o;
92
+ reg void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o_ap_vld;
93
+ reg[15:0] void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o;
94
+ reg void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o_ap_vld;
95
+
96
+ (* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm;
97
+ wire ap_CS_fsm_state1;
98
+ reg void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_ce0;
99
+ reg void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_we0;
100
+ wire [15:0] void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_q0;
101
+ reg void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_ce0;
102
+ reg void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_we0;
103
+ wire [15:0] void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_q0;
104
+ reg [0:0] ap_NS_fsm;
105
+ reg ap_ST_fsm_state1_blk;
106
+ wire ap_ce_reg;
107
+
108
+ // power-on initialization
109
+ initial begin
110
+ #0 ap_CS_fsm = 1'd1;
111
+ end
112
+
113
+ myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_1u_config2_s_void_conv_2d_buffer_bkb #(
114
+ .DataWidth( 16 ),
115
+ .AddressRange( 66 ),
116
+ .AddressWidth( 7 ))
117
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_U(
118
+ .clk(ap_clk),
119
+ .reset(ap_rst),
120
+ .address0(7'd65),
121
+ .ce0(void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_ce0),
122
+ .we0(void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_we0),
123
+ .d0(in_elem_0_0_0_0_0_val),
124
+ .q0(void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_q0)
125
+ );
126
+
127
+ myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_1u_config2_s_void_conv_2d_buffer_bkb #(
128
+ .DataWidth( 16 ),
129
+ .AddressRange( 66 ),
130
+ .AddressWidth( 7 ))
131
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_U(
132
+ .clk(ap_clk),
133
+ .reset(ap_rst),
134
+ .address0(7'd65),
135
+ .ce0(void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_ce0),
136
+ .we0(void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_we0),
137
+ .d0(void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_q0),
138
+ .q0(void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_q0)
139
+ );
140
+
141
+ always @ (posedge ap_clk) begin
142
+ if (ap_rst == 1'b1) begin
143
+ ap_CS_fsm <= ap_ST_fsm_state1;
144
+ end else begin
145
+ ap_CS_fsm <= ap_NS_fsm;
146
+ end
147
+ end
148
+
149
+ always @ (*) begin
150
+ if ((ap_start == 1'b0)) begin
151
+ ap_ST_fsm_state1_blk = 1'b1;
152
+ end else begin
153
+ ap_ST_fsm_state1_blk = 1'b0;
154
+ end
155
+ end
156
+
157
+ always @ (*) begin
158
+ if ((((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1)) | ((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1)))) begin
159
+ ap_done = 1'b1;
160
+ end else begin
161
+ ap_done = 1'b0;
162
+ end
163
+ end
164
+
165
+ always @ (*) begin
166
+ if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin
167
+ ap_idle = 1'b1;
168
+ end else begin
169
+ ap_idle = 1'b0;
170
+ end
171
+ end
172
+
173
+ always @ (*) begin
174
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
175
+ ap_ready = 1'b1;
176
+ end else begin
177
+ ap_ready = 1'b0;
178
+ end
179
+ end
180
+
181
+ always @ (*) begin
182
+ if ((1'b1 == ap_CS_fsm_state1)) begin
183
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o = in_elem_0_0_0_0_0_val;
184
+ end else begin
185
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_i;
186
+ end
187
+ end
188
+
189
+ always @ (*) begin
190
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
191
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o_ap_vld = 1'b1;
192
+ end else begin
193
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_o_ap_vld = 1'b0;
194
+ end
195
+ end
196
+
197
+ always @ (*) begin
198
+ if ((1'b1 == ap_CS_fsm_state1)) begin
199
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_168_i;
200
+ end else begin
201
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_i;
202
+ end
203
+ end
204
+
205
+ always @ (*) begin
206
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
207
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o_ap_vld = 1'b1;
208
+ end else begin
209
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_o_ap_vld = 1'b0;
210
+ end
211
+ end
212
+
213
+ always @ (*) begin
214
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
215
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_170_ap_vld = 1'b1;
216
+ end else begin
217
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_170_ap_vld = 1'b0;
218
+ end
219
+ end
220
+
221
+ always @ (*) begin
222
+ if ((1'b1 == ap_CS_fsm_state1)) begin
223
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o = void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_q0;
224
+ end else begin
225
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_i;
226
+ end
227
+ end
228
+
229
+ always @ (*) begin
230
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
231
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o_ap_vld = 1'b1;
232
+ end else begin
233
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_o_ap_vld = 1'b0;
234
+ end
235
+ end
236
+
237
+ always @ (*) begin
238
+ if ((1'b1 == ap_CS_fsm_state1)) begin
239
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_171_i;
240
+ end else begin
241
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_i;
242
+ end
243
+ end
244
+
245
+ always @ (*) begin
246
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
247
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o_ap_vld = 1'b1;
248
+ end else begin
249
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_o_ap_vld = 1'b0;
250
+ end
251
+ end
252
+
253
+ always @ (*) begin
254
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
255
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_173_ap_vld = 1'b1;
256
+ end else begin
257
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_173_ap_vld = 1'b0;
258
+ end
259
+ end
260
+
261
+ always @ (*) begin
262
+ if ((1'b1 == ap_CS_fsm_state1)) begin
263
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o = void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_q0;
264
+ end else begin
265
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_i;
266
+ end
267
+ end
268
+
269
+ always @ (*) begin
270
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
271
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o_ap_vld = 1'b1;
272
+ end else begin
273
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_o_ap_vld = 1'b0;
274
+ end
275
+ end
276
+
277
+ always @ (*) begin
278
+ if ((1'b1 == ap_CS_fsm_state1)) begin
279
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_174_i;
280
+ end else begin
281
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_i;
282
+ end
283
+ end
284
+
285
+ always @ (*) begin
286
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
287
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o_ap_vld = 1'b1;
288
+ end else begin
289
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_o_ap_vld = 1'b0;
290
+ end
291
+ end
292
+
293
+ always @ (*) begin
294
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
295
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_176_ap_vld = 1'b1;
296
+ end else begin
297
+ void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_176_ap_vld = 1'b0;
298
+ end
299
+ end
300
+
301
+ always @ (*) begin
302
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
303
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_ce0 = 1'd1;
304
+ end else begin
305
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_ce0 = 1'b0;
306
+ end
307
+ end
308
+
309
+ always @ (*) begin
310
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
311
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_we0 = 1'd1;
312
+ end else begin
313
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_1_we0 = 1'b0;
314
+ end
315
+ end
316
+
317
+ always @ (*) begin
318
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
319
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_ce0 = 1'd1;
320
+ end else begin
321
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_ce0 = 1'b0;
322
+ end
323
+ end
324
+
325
+ always @ (*) begin
326
+ if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
327
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_we0 = 1'd1;
328
+ end else begin
329
+ void_conv_2d_buffer_resource_cl_stream_stream_weight_t_bias_t_line_buffer_we0 = 1'b0;
330
+ end
331
+ end
332
+
333
+ always @ (*) begin
334
+ case (ap_CS_fsm)
335
+ ap_ST_fsm_state1 : begin
336
+ ap_NS_fsm = ap_ST_fsm_state1;
337
+ end
338
+ default : begin
339
+ ap_NS_fsm = 'bx;
340
+ end
341
+ endcase
342
+ end
343
+
344
+ assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];
345
+
346
+ assign void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_170 = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_169_i;
347
+
348
+ assign void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_173 = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_172_i;
349
+
350
+ assign void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_176 = void_compute_output_buffer_2d_array_const_ap_shift_reg_n_chan_stream_weig_175_i;
351
+
352
+ endmodule //myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_1u_config2_s
myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_24u_config35_s.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_32u_config17_s_p_ZZN4nnet26conv_2dOK.v ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_32u_config17_s_p_ZZN4nnet26conv_2dOK_core (
10
+ clk,
11
+ ce,
12
+ din,
13
+ addr,
14
+ dout);
15
+
16
+ parameter DATA_WIDTH = 16;
17
+ parameter ADDR_WIDTH = 4;
18
+ parameter DEPTH = 10;
19
+
20
+ input clk;
21
+ input ce;
22
+ input [DATA_WIDTH-1:0] din;
23
+ input [ADDR_WIDTH-1:0] addr;
24
+ output [DATA_WIDTH-1:0] dout;
25
+
26
+ reg[DATA_WIDTH-1:0] ShiftRegMem[0:DEPTH-1];
27
+
28
+ integer i;
29
+
30
+
31
+ initial
32
+ begin
33
+ for(i=0;i<DEPTH;i=i+1)
34
+ ShiftRegMem[i] <= {DATA_WIDTH{1'b0}};
35
+ end
36
+
37
+ always @ (posedge clk)
38
+ begin
39
+ if (ce)
40
+ begin
41
+ for(i=0;i<DEPTH-1;i=i+1)
42
+ ShiftRegMem[i+1] <= ShiftRegMem[i];
43
+ ShiftRegMem[0] <= din;
44
+ end
45
+ end
46
+
47
+
48
+ assign dout = ShiftRegMem[addr];
49
+
50
+
51
+
52
+
53
+ endmodule
54
+
55
+ module myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_32u_config17_s_p_ZZN4nnet26conv_2dOK (
56
+ clk,
57
+ reset,
58
+ address0,
59
+ ce0,
60
+ we0,
61
+ d0,
62
+ q0);
63
+
64
+ parameter DataWidth = 16;
65
+ parameter AddressRange = 10;
66
+ parameter AddressWidth = 4;
67
+
68
+ input clk;
69
+ input reset;
70
+ input [AddressWidth-1:0] address0;
71
+ input ce0;
72
+ input we0;
73
+ input [DataWidth-1:0] d0;
74
+ output [DataWidth-1:0] q0;
75
+
76
+ myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_32u_config17_s_p_ZZN4nnet26conv_2dOK_core #(
77
+ .DATA_WIDTH( DataWidth ),
78
+ .ADDR_WIDTH( AddressWidth ),
79
+ .DEPTH( AddressRange ))
80
+ myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_32u_config17_s_p_ZZN4nnet26conv_2dOK_core_U(
81
+ .clk(clk),
82
+ .ce(we0),
83
+ .din(d0),
84
+ .addr(address0),
85
+ .dout(q0)
86
+ );
87
+
88
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_48u_config29_s.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/impl/verilog/myproject_shift_line_buffer_array_ap_fixed_16_6_5_3_0_8u_config7_s.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/impl/verilog/myproject_start_for_clone_stream_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_16384oqc.v ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_start_for_clone_stream_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_16384oqc
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 1,
15
+ ADDR_WIDTH = 1,
16
+ DEPTH = 2)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+
30
+ output wire if_empty_n,
31
+ input wire if_read_ce,
32
+ input wire if_read,
33
+ output wire [DATA_WIDTH-1:0] if_dout
34
+ );
35
+ //------------------------Parameter----------------------
36
+ localparam
37
+ SRL_DEPTH = DEPTH,
38
+ SRL_AWIDTH = ADDR_WIDTH;
39
+ //------------------------Local signal-------------------
40
+ reg [SRL_AWIDTH-1:0] addr;
41
+ wire push;
42
+ wire pop;
43
+ reg [SRL_AWIDTH:0] mOutPtr;
44
+ reg empty_n = 1'b0;
45
+ reg full_n = 1'b1;
46
+
47
+ //------------------------Instantiation------------------
48
+ myproject_start_for_clone_stream_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_16384oqc_ShiftReg
49
+ #( .DATA_WIDTH (DATA_WIDTH),
50
+ .ADDR_WIDTH (SRL_AWIDTH),
51
+ .DEPTH (SRL_DEPTH))
52
+ U_myproject_start_for_clone_stream_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_16384oqc_ShiftReg (
53
+ .clk (clk),
54
+ .we (push),
55
+ .addr (addr),
56
+ .din (if_din),
57
+ .dout (if_dout)
58
+ );
59
+ //------------------------Task and function--------------
60
+
61
+ //------------------------Body---------------------------
62
+ // num_data_valid
63
+
64
+ // almost full/empty
65
+
66
+ // program full/empty
67
+
68
+ assign if_full_n = full_n;
69
+ assign if_empty_n = empty_n;
70
+
71
+ assign push = full_n & if_write_ce & if_write;
72
+ assign pop = empty_n & if_read_ce & if_read;
73
+
74
+ // addr
75
+ always @(posedge clk) begin
76
+ if (reset)
77
+ addr <= {SRL_AWIDTH{1'b0}};
78
+ else if (push & ~pop && empty_n)
79
+ addr <= addr + 1'b1;
80
+ else if (~push & pop && (mOutPtr != 1))
81
+ addr <= addr - 1'b1;
82
+ end
83
+
84
+ // mOutPtr
85
+ always @(posedge clk) begin
86
+ if (reset)
87
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
88
+ else if (push & ~pop)
89
+ mOutPtr <= mOutPtr + 1'b1;
90
+ else if (~push & pop)
91
+ mOutPtr <= mOutPtr - 1'b1;
92
+ end
93
+
94
+ // full_n
95
+ always @(posedge clk) begin
96
+ if (reset)
97
+ full_n <= 1'b1;
98
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
99
+ full_n <= 1'b0;
100
+ else if (~push & pop)
101
+ full_n <= 1'b1;
102
+ end
103
+
104
+ // empty_n
105
+ always @(posedge clk) begin
106
+ if (reset)
107
+ empty_n <= 1'b0;
108
+ else if (push & ~pop)
109
+ empty_n <= 1'b1;
110
+ else if ((~push & pop) && (mOutPtr == 1))
111
+ empty_n <= 1'b0;
112
+ end
113
+
114
+ // almost_full_n
115
+
116
+ // almost_empty_n
117
+
118
+ // prog_full_n
119
+
120
+ // prog_empty_n
121
+
122
+ endmodule
123
+
124
+
125
+ module myproject_start_for_clone_stream_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_16384oqc_ShiftReg
126
+ #(parameter
127
+ DATA_WIDTH = 1,
128
+ ADDR_WIDTH = 1,
129
+ DEPTH = 2)
130
+ (
131
+ input wire clk,
132
+ input wire we,
133
+ input wire [ADDR_WIDTH-1:0] addr,
134
+ input wire [DATA_WIDTH-1:0] din,
135
+ output wire [DATA_WIDTH-1:0] dout
136
+ );
137
+
138
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
139
+ integer i;
140
+
141
+ always @(posedge clk) begin
142
+ if (we) begin
143
+ for (i=0; i<DEPTH-1; i=i+1)
144
+ SRL_SIG[i+1] <= SRL_SIG[i];
145
+ SRL_SIG[0] <= din;
146
+ end
147
+ end
148
+
149
+ assign dout = SRL_SIG[addr];
150
+
151
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_start_for_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config3ozc.v ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_start_for_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config3ozc
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 1,
15
+ ADDR_WIDTH = 1,
16
+ DEPTH = 2)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+
30
+ output wire if_empty_n,
31
+ input wire if_read_ce,
32
+ input wire if_read,
33
+ output wire [DATA_WIDTH-1:0] if_dout
34
+ );
35
+ //------------------------Parameter----------------------
36
+ localparam
37
+ SRL_DEPTH = DEPTH,
38
+ SRL_AWIDTH = ADDR_WIDTH;
39
+ //------------------------Local signal-------------------
40
+ reg [SRL_AWIDTH-1:0] addr;
41
+ wire push;
42
+ wire pop;
43
+ reg [SRL_AWIDTH:0] mOutPtr;
44
+ reg empty_n = 1'b0;
45
+ reg full_n = 1'b1;
46
+
47
+ //------------------------Instantiation------------------
48
+ myproject_start_for_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config3ozc_ShiftReg
49
+ #( .DATA_WIDTH (DATA_WIDTH),
50
+ .ADDR_WIDTH (SRL_AWIDTH),
51
+ .DEPTH (SRL_DEPTH))
52
+ U_myproject_start_for_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config3ozc_ShiftReg (
53
+ .clk (clk),
54
+ .we (push),
55
+ .addr (addr),
56
+ .din (if_din),
57
+ .dout (if_dout)
58
+ );
59
+ //------------------------Task and function--------------
60
+
61
+ //------------------------Body---------------------------
62
+ // num_data_valid
63
+
64
+ // almost full/empty
65
+
66
+ // program full/empty
67
+
68
+ assign if_full_n = full_n;
69
+ assign if_empty_n = empty_n;
70
+
71
+ assign push = full_n & if_write_ce & if_write;
72
+ assign pop = empty_n & if_read_ce & if_read;
73
+
74
+ // addr
75
+ always @(posedge clk) begin
76
+ if (reset)
77
+ addr <= {SRL_AWIDTH{1'b0}};
78
+ else if (push & ~pop && empty_n)
79
+ addr <= addr + 1'b1;
80
+ else if (~push & pop && (mOutPtr != 1))
81
+ addr <= addr - 1'b1;
82
+ end
83
+
84
+ // mOutPtr
85
+ always @(posedge clk) begin
86
+ if (reset)
87
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
88
+ else if (push & ~pop)
89
+ mOutPtr <= mOutPtr + 1'b1;
90
+ else if (~push & pop)
91
+ mOutPtr <= mOutPtr - 1'b1;
92
+ end
93
+
94
+ // full_n
95
+ always @(posedge clk) begin
96
+ if (reset)
97
+ full_n <= 1'b1;
98
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
99
+ full_n <= 1'b0;
100
+ else if (~push & pop)
101
+ full_n <= 1'b1;
102
+ end
103
+
104
+ // empty_n
105
+ always @(posedge clk) begin
106
+ if (reset)
107
+ empty_n <= 1'b0;
108
+ else if (push & ~pop)
109
+ empty_n <= 1'b1;
110
+ else if ((~push & pop) && (mOutPtr == 1))
111
+ empty_n <= 1'b0;
112
+ end
113
+
114
+ // almost_full_n
115
+
116
+ // almost_empty_n
117
+
118
+ // prog_full_n
119
+
120
+ // prog_empty_n
121
+
122
+ endmodule
123
+
124
+
125
+ module myproject_start_for_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config3ozc_ShiftReg
126
+ #(parameter
127
+ DATA_WIDTH = 1,
128
+ ADDR_WIDTH = 1,
129
+ DEPTH = 2)
130
+ (
131
+ input wire clk,
132
+ input wire we,
133
+ input wire [ADDR_WIDTH-1:0] addr,
134
+ input wire [DATA_WIDTH-1:0] din,
135
+ output wire [DATA_WIDTH-1:0] dout
136
+ );
137
+
138
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
139
+ integer i;
140
+
141
+ always @(posedge clk) begin
142
+ if (we) begin
143
+ for (i=0; i<DEPTH-1; i=i+1)
144
+ SRL_SIG[i+1] <= SRL_SIG[i];
145
+ SRL_SIG[0] <= din;
146
+ end
147
+ end
148
+
149
+ assign dout = SRL_SIG[addr];
150
+
151
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_start_for_conv_2d_cl_array_ap_fixed_8u_array_ap_fixed_40_20_5_3_0_16u_config7okc.v ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_start_for_conv_2d_cl_array_ap_fixed_8u_array_ap_fixed_40_20_5_3_0_16u_config7okc
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 1,
15
+ ADDR_WIDTH = 1,
16
+ DEPTH = 2)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+
30
+ output wire if_empty_n,
31
+ input wire if_read_ce,
32
+ input wire if_read,
33
+ output wire [DATA_WIDTH-1:0] if_dout
34
+ );
35
+ //------------------------Parameter----------------------
36
+ localparam
37
+ SRL_DEPTH = DEPTH,
38
+ SRL_AWIDTH = ADDR_WIDTH;
39
+ //------------------------Local signal-------------------
40
+ reg [SRL_AWIDTH-1:0] addr;
41
+ wire push;
42
+ wire pop;
43
+ reg [SRL_AWIDTH:0] mOutPtr;
44
+ reg empty_n = 1'b0;
45
+ reg full_n = 1'b1;
46
+
47
+ //------------------------Instantiation------------------
48
+ myproject_start_for_conv_2d_cl_array_ap_fixed_8u_array_ap_fixed_40_20_5_3_0_16u_config7okc_ShiftReg
49
+ #( .DATA_WIDTH (DATA_WIDTH),
50
+ .ADDR_WIDTH (SRL_AWIDTH),
51
+ .DEPTH (SRL_DEPTH))
52
+ U_myproject_start_for_conv_2d_cl_array_ap_fixed_8u_array_ap_fixed_40_20_5_3_0_16u_config7okc_ShiftReg (
53
+ .clk (clk),
54
+ .we (push),
55
+ .addr (addr),
56
+ .din (if_din),
57
+ .dout (if_dout)
58
+ );
59
+ //------------------------Task and function--------------
60
+
61
+ //------------------------Body---------------------------
62
+ // num_data_valid
63
+
64
+ // almost full/empty
65
+
66
+ // program full/empty
67
+
68
+ assign if_full_n = full_n;
69
+ assign if_empty_n = empty_n;
70
+
71
+ assign push = full_n & if_write_ce & if_write;
72
+ assign pop = empty_n & if_read_ce & if_read;
73
+
74
+ // addr
75
+ always @(posedge clk) begin
76
+ if (reset)
77
+ addr <= {SRL_AWIDTH{1'b0}};
78
+ else if (push & ~pop && empty_n)
79
+ addr <= addr + 1'b1;
80
+ else if (~push & pop && (mOutPtr != 1))
81
+ addr <= addr - 1'b1;
82
+ end
83
+
84
+ // mOutPtr
85
+ always @(posedge clk) begin
86
+ if (reset)
87
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
88
+ else if (push & ~pop)
89
+ mOutPtr <= mOutPtr + 1'b1;
90
+ else if (~push & pop)
91
+ mOutPtr <= mOutPtr - 1'b1;
92
+ end
93
+
94
+ // full_n
95
+ always @(posedge clk) begin
96
+ if (reset)
97
+ full_n <= 1'b1;
98
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
99
+ full_n <= 1'b0;
100
+ else if (~push & pop)
101
+ full_n <= 1'b1;
102
+ end
103
+
104
+ // empty_n
105
+ always @(posedge clk) begin
106
+ if (reset)
107
+ empty_n <= 1'b0;
108
+ else if (push & ~pop)
109
+ empty_n <= 1'b1;
110
+ else if ((~push & pop) && (mOutPtr == 1))
111
+ empty_n <= 1'b0;
112
+ end
113
+
114
+ // almost_full_n
115
+
116
+ // almost_empty_n
117
+
118
+ // prog_full_n
119
+
120
+ // prog_empty_n
121
+
122
+ endmodule
123
+
124
+
125
+ module myproject_start_for_conv_2d_cl_array_ap_fixed_8u_array_ap_fixed_40_20_5_3_0_16u_config7okc_ShiftReg
126
+ #(parameter
127
+ DATA_WIDTH = 1,
128
+ ADDR_WIDTH = 1,
129
+ DEPTH = 2)
130
+ (
131
+ input wire clk,
132
+ input wire we,
133
+ input wire [ADDR_WIDTH-1:0] addr,
134
+ input wire [DATA_WIDTH-1:0] din,
135
+ output wire [DATA_WIDTH-1:0] dout
136
+ );
137
+
138
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
139
+ integer i;
140
+
141
+ always @(posedge clk) begin
142
+ if (we) begin
143
+ for (i=0; i<DEPTH-1; i=i+1)
144
+ SRL_SIG[i+1] <= SRL_SIG[i];
145
+ SRL_SIG[0] <= din;
146
+ end
147
+ end
148
+
149
+ assign dout = SRL_SIG[addr];
150
+
151
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_start_for_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_32u_config23_U0.v ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_start_for_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_32u_config23_U0
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 1,
15
+ ADDR_WIDTH = 1,
16
+ DEPTH = 2)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+
30
+ output wire if_empty_n,
31
+ input wire if_read_ce,
32
+ input wire if_read,
33
+ output wire [DATA_WIDTH-1:0] if_dout
34
+ );
35
+ //------------------------Parameter----------------------
36
+ localparam
37
+ SRL_DEPTH = DEPTH,
38
+ SRL_AWIDTH = ADDR_WIDTH;
39
+ //------------------------Local signal-------------------
40
+ reg [SRL_AWIDTH-1:0] addr;
41
+ wire push;
42
+ wire pop;
43
+ reg [SRL_AWIDTH:0] mOutPtr;
44
+ reg empty_n = 1'b0;
45
+ reg full_n = 1'b1;
46
+
47
+ //------------------------Instantiation------------------
48
+ myproject_start_for_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_32u_config23_U0_ShiftReg
49
+ #( .DATA_WIDTH (DATA_WIDTH),
50
+ .ADDR_WIDTH (SRL_AWIDTH),
51
+ .DEPTH (SRL_DEPTH))
52
+ U_myproject_start_for_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_32u_config23_U0_ShiftReg (
53
+ .clk (clk),
54
+ .we (push),
55
+ .addr (addr),
56
+ .din (if_din),
57
+ .dout (if_dout)
58
+ );
59
+ //------------------------Task and function--------------
60
+
61
+ //------------------------Body---------------------------
62
+ // num_data_valid
63
+
64
+ // almost full/empty
65
+
66
+ // program full/empty
67
+
68
+ assign if_full_n = full_n;
69
+ assign if_empty_n = empty_n;
70
+
71
+ assign push = full_n & if_write_ce & if_write;
72
+ assign pop = empty_n & if_read_ce & if_read;
73
+
74
+ // addr
75
+ always @(posedge clk) begin
76
+ if (reset)
77
+ addr <= {SRL_AWIDTH{1'b0}};
78
+ else if (push & ~pop && empty_n)
79
+ addr <= addr + 1'b1;
80
+ else if (~push & pop && (mOutPtr != 1))
81
+ addr <= addr - 1'b1;
82
+ end
83
+
84
+ // mOutPtr
85
+ always @(posedge clk) begin
86
+ if (reset)
87
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
88
+ else if (push & ~pop)
89
+ mOutPtr <= mOutPtr + 1'b1;
90
+ else if (~push & pop)
91
+ mOutPtr <= mOutPtr - 1'b1;
92
+ end
93
+
94
+ // full_n
95
+ always @(posedge clk) begin
96
+ if (reset)
97
+ full_n <= 1'b1;
98
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
99
+ full_n <= 1'b0;
100
+ else if (~push & pop)
101
+ full_n <= 1'b1;
102
+ end
103
+
104
+ // empty_n
105
+ always @(posedge clk) begin
106
+ if (reset)
107
+ empty_n <= 1'b0;
108
+ else if (push & ~pop)
109
+ empty_n <= 1'b1;
110
+ else if ((~push & pop) && (mOutPtr == 1))
111
+ empty_n <= 1'b0;
112
+ end
113
+
114
+ // almost_full_n
115
+
116
+ // almost_empty_n
117
+
118
+ // prog_full_n
119
+
120
+ // prog_empty_n
121
+
122
+ endmodule
123
+
124
+
125
+ module myproject_start_for_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_32u_config23_U0_ShiftReg
126
+ #(parameter
127
+ DATA_WIDTH = 1,
128
+ ADDR_WIDTH = 1,
129
+ DEPTH = 2)
130
+ (
131
+ input wire clk,
132
+ input wire we,
133
+ input wire [ADDR_WIDTH-1:0] addr,
134
+ input wire [DATA_WIDTH-1:0] din,
135
+ output wire [DATA_WIDTH-1:0] dout
136
+ );
137
+
138
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
139
+ integer i;
140
+
141
+ always @(posedge clk) begin
142
+ if (we) begin
143
+ for (i=0; i<DEPTH-1; i=i+1)
144
+ SRL_SIG[i+1] <= SRL_SIG[i];
145
+ SRL_SIG[0] <= din;
146
+ end
147
+ end
148
+
149
+ assign dout = SRL_SIG[addr];
150
+
151
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_start_for_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config32ovc.v ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_start_for_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config32ovc
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 1,
15
+ ADDR_WIDTH = 1,
16
+ DEPTH = 2)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+
30
+ output wire if_empty_n,
31
+ input wire if_read_ce,
32
+ input wire if_read,
33
+ output wire [DATA_WIDTH-1:0] if_dout
34
+ );
35
+ //------------------------Parameter----------------------
36
+ localparam
37
+ SRL_DEPTH = DEPTH,
38
+ SRL_AWIDTH = ADDR_WIDTH;
39
+ //------------------------Local signal-------------------
40
+ reg [SRL_AWIDTH-1:0] addr;
41
+ wire push;
42
+ wire pop;
43
+ reg [SRL_AWIDTH:0] mOutPtr;
44
+ reg empty_n = 1'b0;
45
+ reg full_n = 1'b1;
46
+
47
+ //------------------------Instantiation------------------
48
+ myproject_start_for_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config32ovc_ShiftReg
49
+ #( .DATA_WIDTH (DATA_WIDTH),
50
+ .ADDR_WIDTH (SRL_AWIDTH),
51
+ .DEPTH (SRL_DEPTH))
52
+ U_myproject_start_for_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config32ovc_ShiftReg (
53
+ .clk (clk),
54
+ .we (push),
55
+ .addr (addr),
56
+ .din (if_din),
57
+ .dout (if_dout)
58
+ );
59
+ //------------------------Task and function--------------
60
+
61
+ //------------------------Body---------------------------
62
+ // num_data_valid
63
+
64
+ // almost full/empty
65
+
66
+ // program full/empty
67
+
68
+ assign if_full_n = full_n;
69
+ assign if_empty_n = empty_n;
70
+
71
+ assign push = full_n & if_write_ce & if_write;
72
+ assign pop = empty_n & if_read_ce & if_read;
73
+
74
+ // addr
75
+ always @(posedge clk) begin
76
+ if (reset)
77
+ addr <= {SRL_AWIDTH{1'b0}};
78
+ else if (push & ~pop && empty_n)
79
+ addr <= addr + 1'b1;
80
+ else if (~push & pop && (mOutPtr != 1))
81
+ addr <= addr - 1'b1;
82
+ end
83
+
84
+ // mOutPtr
85
+ always @(posedge clk) begin
86
+ if (reset)
87
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
88
+ else if (push & ~pop)
89
+ mOutPtr <= mOutPtr + 1'b1;
90
+ else if (~push & pop)
91
+ mOutPtr <= mOutPtr - 1'b1;
92
+ end
93
+
94
+ // full_n
95
+ always @(posedge clk) begin
96
+ if (reset)
97
+ full_n <= 1'b1;
98
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
99
+ full_n <= 1'b0;
100
+ else if (~push & pop)
101
+ full_n <= 1'b1;
102
+ end
103
+
104
+ // empty_n
105
+ always @(posedge clk) begin
106
+ if (reset)
107
+ empty_n <= 1'b0;
108
+ else if (push & ~pop)
109
+ empty_n <= 1'b1;
110
+ else if ((~push & pop) && (mOutPtr == 1))
111
+ empty_n <= 1'b0;
112
+ end
113
+
114
+ // almost_full_n
115
+
116
+ // almost_empty_n
117
+
118
+ // prog_full_n
119
+
120
+ // prog_empty_n
121
+
122
+ endmodule
123
+
124
+
125
+ module myproject_start_for_relu_array_ap_fixed_16u_array_ap_fixed_16_6_5_3_0_16u_relu_config32ovc_ShiftReg
126
+ #(parameter
127
+ DATA_WIDTH = 1,
128
+ ADDR_WIDTH = 1,
129
+ DEPTH = 2)
130
+ (
131
+ input wire clk,
132
+ input wire we,
133
+ input wire [ADDR_WIDTH-1:0] addr,
134
+ input wire [DATA_WIDTH-1:0] din,
135
+ output wire [DATA_WIDTH-1:0] dout
136
+ );
137
+
138
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
139
+ integer i;
140
+
141
+ always @(posedge clk) begin
142
+ if (we) begin
143
+ for (i=0; i<DEPTH-1; i=i+1)
144
+ SRL_SIG[i+1] <= SRL_SIG[i];
145
+ SRL_SIG[0] <= din;
146
+ end
147
+ end
148
+
149
+ assign dout = SRL_SIG[addr];
150
+
151
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_start_for_zeropad2d_cl_array_ap_fixed_1u_array_ap_fixed_16_6_5_3_0_1u_config4ohc.v ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_start_for_zeropad2d_cl_array_ap_fixed_1u_array_ap_fixed_16_6_5_3_0_1u_config4ohc
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 1,
15
+ ADDR_WIDTH = 1,
16
+ DEPTH = 2)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+
30
+ output wire if_empty_n,
31
+ input wire if_read_ce,
32
+ input wire if_read,
33
+ output wire [DATA_WIDTH-1:0] if_dout
34
+ );
35
+ //------------------------Parameter----------------------
36
+ localparam
37
+ SRL_DEPTH = DEPTH,
38
+ SRL_AWIDTH = ADDR_WIDTH;
39
+ //------------------------Local signal-------------------
40
+ reg [SRL_AWIDTH-1:0] addr;
41
+ wire push;
42
+ wire pop;
43
+ reg [SRL_AWIDTH:0] mOutPtr;
44
+ reg empty_n = 1'b0;
45
+ reg full_n = 1'b1;
46
+
47
+ //------------------------Instantiation------------------
48
+ myproject_start_for_zeropad2d_cl_array_ap_fixed_1u_array_ap_fixed_16_6_5_3_0_1u_config4ohc_ShiftReg
49
+ #( .DATA_WIDTH (DATA_WIDTH),
50
+ .ADDR_WIDTH (SRL_AWIDTH),
51
+ .DEPTH (SRL_DEPTH))
52
+ U_myproject_start_for_zeropad2d_cl_array_ap_fixed_1u_array_ap_fixed_16_6_5_3_0_1u_config4ohc_ShiftReg (
53
+ .clk (clk),
54
+ .we (push),
55
+ .addr (addr),
56
+ .din (if_din),
57
+ .dout (if_dout)
58
+ );
59
+ //------------------------Task and function--------------
60
+
61
+ //------------------------Body---------------------------
62
+ // num_data_valid
63
+
64
+ // almost full/empty
65
+
66
+ // program full/empty
67
+
68
+ assign if_full_n = full_n;
69
+ assign if_empty_n = empty_n;
70
+
71
+ assign push = full_n & if_write_ce & if_write;
72
+ assign pop = empty_n & if_read_ce & if_read;
73
+
74
+ // addr
75
+ always @(posedge clk) begin
76
+ if (reset)
77
+ addr <= {SRL_AWIDTH{1'b0}};
78
+ else if (push & ~pop && empty_n)
79
+ addr <= addr + 1'b1;
80
+ else if (~push & pop && (mOutPtr != 1))
81
+ addr <= addr - 1'b1;
82
+ end
83
+
84
+ // mOutPtr
85
+ always @(posedge clk) begin
86
+ if (reset)
87
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
88
+ else if (push & ~pop)
89
+ mOutPtr <= mOutPtr + 1'b1;
90
+ else if (~push & pop)
91
+ mOutPtr <= mOutPtr - 1'b1;
92
+ end
93
+
94
+ // full_n
95
+ always @(posedge clk) begin
96
+ if (reset)
97
+ full_n <= 1'b1;
98
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
99
+ full_n <= 1'b0;
100
+ else if (~push & pop)
101
+ full_n <= 1'b1;
102
+ end
103
+
104
+ // empty_n
105
+ always @(posedge clk) begin
106
+ if (reset)
107
+ empty_n <= 1'b0;
108
+ else if (push & ~pop)
109
+ empty_n <= 1'b1;
110
+ else if ((~push & pop) && (mOutPtr == 1))
111
+ empty_n <= 1'b0;
112
+ end
113
+
114
+ // almost_full_n
115
+
116
+ // almost_empty_n
117
+
118
+ // prog_full_n
119
+
120
+ // prog_empty_n
121
+
122
+ endmodule
123
+
124
+
125
+ module myproject_start_for_zeropad2d_cl_array_ap_fixed_1u_array_ap_fixed_16_6_5_3_0_1u_config4ohc_ShiftReg
126
+ #(parameter
127
+ DATA_WIDTH = 1,
128
+ ADDR_WIDTH = 1,
129
+ DEPTH = 2)
130
+ (
131
+ input wire clk,
132
+ input wire we,
133
+ input wire [ADDR_WIDTH-1:0] addr,
134
+ input wire [DATA_WIDTH-1:0] din,
135
+ output wire [DATA_WIDTH-1:0] dout
136
+ );
137
+
138
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
139
+ integer i;
140
+
141
+ always @(posedge clk) begin
142
+ if (we) begin
143
+ for (i=0; i<DEPTH-1; i=i+1)
144
+ SRL_SIG[i+1] <= SRL_SIG[i];
145
+ SRL_SIG[0] <= din;
146
+ end
147
+ end
148
+
149
+ assign dout = SRL_SIG[addr];
150
+
151
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config50_U0.v ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config50_U0
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 1,
15
+ ADDR_WIDTH = 1,
16
+ DEPTH = 2)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+
30
+ output wire if_empty_n,
31
+ input wire if_read_ce,
32
+ input wire if_read,
33
+ output wire [DATA_WIDTH-1:0] if_dout
34
+ );
35
+ //------------------------Parameter----------------------
36
+ localparam
37
+ SRL_DEPTH = DEPTH,
38
+ SRL_AWIDTH = ADDR_WIDTH;
39
+ //------------------------Local signal-------------------
40
+ reg [SRL_AWIDTH-1:0] addr;
41
+ wire push;
42
+ wire pop;
43
+ reg [SRL_AWIDTH:0] mOutPtr;
44
+ reg empty_n = 1'b0;
45
+ reg full_n = 1'b1;
46
+
47
+ //------------------------Instantiation------------------
48
+ myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config50_U0_ShiftReg
49
+ #( .DATA_WIDTH (DATA_WIDTH),
50
+ .ADDR_WIDTH (SRL_AWIDTH),
51
+ .DEPTH (SRL_DEPTH))
52
+ U_myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config50_U0_ShiftReg (
53
+ .clk (clk),
54
+ .we (push),
55
+ .addr (addr),
56
+ .din (if_din),
57
+ .dout (if_dout)
58
+ );
59
+ //------------------------Task and function--------------
60
+
61
+ //------------------------Body---------------------------
62
+ // num_data_valid
63
+
64
+ // almost full/empty
65
+
66
+ // program full/empty
67
+
68
+ assign if_full_n = full_n;
69
+ assign if_empty_n = empty_n;
70
+
71
+ assign push = full_n & if_write_ce & if_write;
72
+ assign pop = empty_n & if_read_ce & if_read;
73
+
74
+ // addr
75
+ always @(posedge clk) begin
76
+ if (reset)
77
+ addr <= {SRL_AWIDTH{1'b0}};
78
+ else if (push & ~pop && empty_n)
79
+ addr <= addr + 1'b1;
80
+ else if (~push & pop && (mOutPtr != 1))
81
+ addr <= addr - 1'b1;
82
+ end
83
+
84
+ // mOutPtr
85
+ always @(posedge clk) begin
86
+ if (reset)
87
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
88
+ else if (push & ~pop)
89
+ mOutPtr <= mOutPtr + 1'b1;
90
+ else if (~push & pop)
91
+ mOutPtr <= mOutPtr - 1'b1;
92
+ end
93
+
94
+ // full_n
95
+ always @(posedge clk) begin
96
+ if (reset)
97
+ full_n <= 1'b1;
98
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
99
+ full_n <= 1'b0;
100
+ else if (~push & pop)
101
+ full_n <= 1'b1;
102
+ end
103
+
104
+ // empty_n
105
+ always @(posedge clk) begin
106
+ if (reset)
107
+ empty_n <= 1'b0;
108
+ else if (push & ~pop)
109
+ empty_n <= 1'b1;
110
+ else if ((~push & pop) && (mOutPtr == 1))
111
+ empty_n <= 1'b0;
112
+ end
113
+
114
+ // almost_full_n
115
+
116
+ // almost_empty_n
117
+
118
+ // prog_full_n
119
+
120
+ // prog_empty_n
121
+
122
+ endmodule
123
+
124
+
125
+ module myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config50_U0_ShiftReg
126
+ #(parameter
127
+ DATA_WIDTH = 1,
128
+ ADDR_WIDTH = 1,
129
+ DEPTH = 2)
130
+ (
131
+ input wire clk,
132
+ input wire we,
133
+ input wire [ADDR_WIDTH-1:0] addr,
134
+ input wire [DATA_WIDTH-1:0] din,
135
+ output wire [DATA_WIDTH-1:0] dout
136
+ );
137
+
138
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
139
+ integer i;
140
+
141
+ always @(posedge clk) begin
142
+ if (we) begin
143
+ for (i=0; i<DEPTH-1; i=i+1)
144
+ SRL_SIG[i+1] <= SRL_SIG[i];
145
+ SRL_SIG[0] <= din;
146
+ end
147
+ end
148
+
149
+ assign dout = SRL_SIG[addr];
150
+
151
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config52_U0.v ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config52_U0
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 1,
15
+ ADDR_WIDTH = 1,
16
+ DEPTH = 2)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+
30
+ output wire if_empty_n,
31
+ input wire if_read_ce,
32
+ input wire if_read,
33
+ output wire [DATA_WIDTH-1:0] if_dout
34
+ );
35
+ //------------------------Parameter----------------------
36
+ localparam
37
+ SRL_DEPTH = DEPTH,
38
+ SRL_AWIDTH = ADDR_WIDTH;
39
+ //------------------------Local signal-------------------
40
+ reg [SRL_AWIDTH-1:0] addr;
41
+ wire push;
42
+ wire pop;
43
+ reg [SRL_AWIDTH:0] mOutPtr;
44
+ reg empty_n = 1'b0;
45
+ reg full_n = 1'b1;
46
+
47
+ //------------------------Instantiation------------------
48
+ myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config52_U0_ShiftReg
49
+ #( .DATA_WIDTH (DATA_WIDTH),
50
+ .ADDR_WIDTH (SRL_AWIDTH),
51
+ .DEPTH (SRL_DEPTH))
52
+ U_myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config52_U0_ShiftReg (
53
+ .clk (clk),
54
+ .we (push),
55
+ .addr (addr),
56
+ .din (if_din),
57
+ .dout (if_dout)
58
+ );
59
+ //------------------------Task and function--------------
60
+
61
+ //------------------------Body---------------------------
62
+ // num_data_valid
63
+
64
+ // almost full/empty
65
+
66
+ // program full/empty
67
+
68
+ assign if_full_n = full_n;
69
+ assign if_empty_n = empty_n;
70
+
71
+ assign push = full_n & if_write_ce & if_write;
72
+ assign pop = empty_n & if_read_ce & if_read;
73
+
74
+ // addr
75
+ always @(posedge clk) begin
76
+ if (reset)
77
+ addr <= {SRL_AWIDTH{1'b0}};
78
+ else if (push & ~pop && empty_n)
79
+ addr <= addr + 1'b1;
80
+ else if (~push & pop && (mOutPtr != 1))
81
+ addr <= addr - 1'b1;
82
+ end
83
+
84
+ // mOutPtr
85
+ always @(posedge clk) begin
86
+ if (reset)
87
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
88
+ else if (push & ~pop)
89
+ mOutPtr <= mOutPtr + 1'b1;
90
+ else if (~push & pop)
91
+ mOutPtr <= mOutPtr - 1'b1;
92
+ end
93
+
94
+ // full_n
95
+ always @(posedge clk) begin
96
+ if (reset)
97
+ full_n <= 1'b1;
98
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
99
+ full_n <= 1'b0;
100
+ else if (~push & pop)
101
+ full_n <= 1'b1;
102
+ end
103
+
104
+ // empty_n
105
+ always @(posedge clk) begin
106
+ if (reset)
107
+ empty_n <= 1'b0;
108
+ else if (push & ~pop)
109
+ empty_n <= 1'b1;
110
+ else if ((~push & pop) && (mOutPtr == 1))
111
+ empty_n <= 1'b0;
112
+ end
113
+
114
+ // almost_full_n
115
+
116
+ // almost_empty_n
117
+
118
+ // prog_full_n
119
+
120
+ // prog_empty_n
121
+
122
+ endmodule
123
+
124
+
125
+ module myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_32u_config52_U0_ShiftReg
126
+ #(parameter
127
+ DATA_WIDTH = 1,
128
+ ADDR_WIDTH = 1,
129
+ DEPTH = 2)
130
+ (
131
+ input wire clk,
132
+ input wire we,
133
+ input wire [ADDR_WIDTH-1:0] addr,
134
+ input wire [DATA_WIDTH-1:0] din,
135
+ output wire [DATA_WIDTH-1:0] dout
136
+ );
137
+
138
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
139
+ integer i;
140
+
141
+ always @(posedge clk) begin
142
+ if (we) begin
143
+ for (i=0; i<DEPTH-1; i=i+1)
144
+ SRL_SIG[i+1] <= SRL_SIG[i];
145
+ SRL_SIG[0] <= din;
146
+ end
147
+ end
148
+
149
+ assign dout = SRL_SIG[addr];
150
+
151
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_48u_config56_U0.v ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+ // 67d7842dbbe25473c3c32b93c0da8047785f30d78e8a024de1b57352245f9689
7
+
8
+ `timescale 1ns/1ps
9
+ //RAW latency 1
10
+
11
+ module myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_48u_config56_U0
12
+ #(parameter
13
+ MEM_STYLE = "shiftReg",
14
+ DATA_WIDTH = 1,
15
+ ADDR_WIDTH = 1,
16
+ DEPTH = 2)
17
+ (
18
+ // system signal
19
+ input wire clk,
20
+ input wire reset,
21
+
22
+ // write
23
+ output wire if_full_n,
24
+ input wire if_write_ce,
25
+ input wire if_write,
26
+ input wire [DATA_WIDTH-1:0] if_din,
27
+
28
+ // read
29
+
30
+ output wire if_empty_n,
31
+ input wire if_read_ce,
32
+ input wire if_read,
33
+ output wire [DATA_WIDTH-1:0] if_dout
34
+ );
35
+ //------------------------Parameter----------------------
36
+ localparam
37
+ SRL_DEPTH = DEPTH,
38
+ SRL_AWIDTH = ADDR_WIDTH;
39
+ //------------------------Local signal-------------------
40
+ reg [SRL_AWIDTH-1:0] addr;
41
+ wire push;
42
+ wire pop;
43
+ reg [SRL_AWIDTH:0] mOutPtr;
44
+ reg empty_n = 1'b0;
45
+ reg full_n = 1'b1;
46
+
47
+ //------------------------Instantiation------------------
48
+ myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_48u_config56_U0_ShiftReg
49
+ #( .DATA_WIDTH (DATA_WIDTH),
50
+ .ADDR_WIDTH (SRL_AWIDTH),
51
+ .DEPTH (SRL_DEPTH))
52
+ U_myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_48u_config56_U0_ShiftReg (
53
+ .clk (clk),
54
+ .we (push),
55
+ .addr (addr),
56
+ .din (if_din),
57
+ .dout (if_dout)
58
+ );
59
+ //------------------------Task and function--------------
60
+
61
+ //------------------------Body---------------------------
62
+ // num_data_valid
63
+
64
+ // almost full/empty
65
+
66
+ // program full/empty
67
+
68
+ assign if_full_n = full_n;
69
+ assign if_empty_n = empty_n;
70
+
71
+ assign push = full_n & if_write_ce & if_write;
72
+ assign pop = empty_n & if_read_ce & if_read;
73
+
74
+ // addr
75
+ always @(posedge clk) begin
76
+ if (reset)
77
+ addr <= {SRL_AWIDTH{1'b0}};
78
+ else if (push & ~pop && empty_n)
79
+ addr <= addr + 1'b1;
80
+ else if (~push & pop && (mOutPtr != 1))
81
+ addr <= addr - 1'b1;
82
+ end
83
+
84
+ // mOutPtr
85
+ always @(posedge clk) begin
86
+ if (reset)
87
+ mOutPtr <= {SRL_AWIDTH+1{1'b0}};
88
+ else if (push & ~pop)
89
+ mOutPtr <= mOutPtr + 1'b1;
90
+ else if (~push & pop)
91
+ mOutPtr <= mOutPtr - 1'b1;
92
+ end
93
+
94
+ // full_n
95
+ always @(posedge clk) begin
96
+ if (reset)
97
+ full_n <= 1'b1;
98
+ else if ((push & ~pop) && (mOutPtr == DEPTH - 1))
99
+ full_n <= 1'b0;
100
+ else if (~push & pop)
101
+ full_n <= 1'b1;
102
+ end
103
+
104
+ // empty_n
105
+ always @(posedge clk) begin
106
+ if (reset)
107
+ empty_n <= 1'b0;
108
+ else if (push & ~pop)
109
+ empty_n <= 1'b1;
110
+ else if ((~push & pop) && (mOutPtr == 1))
111
+ empty_n <= 1'b0;
112
+ end
113
+
114
+ // almost_full_n
115
+
116
+ // almost_empty_n
117
+
118
+ // prog_full_n
119
+
120
+ // prog_empty_n
121
+
122
+ endmodule
123
+
124
+
125
+ module myproject_start_for_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_48u_config56_U0_ShiftReg
126
+ #(parameter
127
+ DATA_WIDTH = 1,
128
+ ADDR_WIDTH = 1,
129
+ DEPTH = 2)
130
+ (
131
+ input wire clk,
132
+ input wire we,
133
+ input wire [ADDR_WIDTH-1:0] addr,
134
+ input wire [DATA_WIDTH-1:0] din,
135
+ output wire [DATA_WIDTH-1:0] dout
136
+ );
137
+
138
+ reg [DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1];
139
+ integer i;
140
+
141
+ always @(posedge clk) begin
142
+ if (we) begin
143
+ for (i=0; i<DEPTH-1; i=i+1)
144
+ SRL_SIG[i+1] <= SRL_SIG[i];
145
+ SRL_SIG[0] <= din;
146
+ end
147
+ end
148
+
149
+ assign dout = SRL_SIG[addr];
150
+
151
+ endmodule
myproject_prj/solution1/impl/verilog/myproject_transpose_array_array_ap_fixed_1u_config41_Pipeline_VITIS_LOOP_45_1.v ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_transpose_array_array_ap_fixed_1u_config41_Pipeline_VITIS_LOOP_45_1 (
10
+ ap_clk,
11
+ ap_rst,
12
+ ap_start,
13
+ ap_done,
14
+ ap_idle,
15
+ ap_ready,
16
+ x_TVALID,
17
+ x_TDATA,
18
+ x_TREADY,
19
+ p_0_0_0209_out,
20
+ p_0_0_0209_out_ap_vld
21
+ );
22
+
23
+ parameter ap_ST_fsm_state1 = 1'd1;
24
+
25
+ input ap_clk;
26
+ input ap_rst;
27
+ input ap_start;
28
+ output ap_done;
29
+ output ap_idle;
30
+ output ap_ready;
31
+ input x_TVALID;
32
+ input [1023:0] x_TDATA;
33
+ output x_TREADY;
34
+ output [15:0] p_0_0_0209_out;
35
+ output p_0_0_0209_out_ap_vld;
36
+
37
+ reg ap_idle;
38
+ reg x_TREADY;
39
+ reg p_0_0_0209_out_ap_vld;
40
+
41
+ (* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm;
42
+ wire ap_CS_fsm_state1;
43
+ wire [0:0] icmp_ln45_fu_193_p2;
44
+ reg ap_block_state1_pp0_stage0_iter0;
45
+ reg ap_condition_exit_pp0_iter0_stage0;
46
+ wire ap_loop_exit_ready;
47
+ reg ap_ready_int;
48
+ reg x_TDATA_blk_n;
49
+ reg [6:0] i_fu_164;
50
+ wire [6:0] add_ln45_fu_199_p2;
51
+ wire ap_loop_init;
52
+ reg [6:0] ap_sig_allocacmp_i_32;
53
+ reg [15:0] p_0_0_0209_fu_168;
54
+ wire [15:0] data_array_fu_209_p1;
55
+ wire [5:0] trunc_ln45_fu_205_p1;
56
+ reg ap_done_reg;
57
+ wire ap_continue_int;
58
+ reg ap_done_int;
59
+ reg [0:0] ap_NS_fsm;
60
+ reg ap_ST_fsm_state1_blk;
61
+ wire ap_start_int;
62
+ wire ap_ready_sig;
63
+ wire ap_done_sig;
64
+ wire ap_ce_reg;
65
+
66
+ // power-on initialization
67
+ initial begin
68
+ #0 ap_CS_fsm = 1'd1;
69
+ #0 i_fu_164 = 7'd0;
70
+ #0 p_0_0_0209_fu_168 = 16'd0;
71
+ #0 ap_done_reg = 1'b0;
72
+ end
73
+
74
+ myproject_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U(
75
+ .ap_clk(ap_clk),
76
+ .ap_rst(ap_rst),
77
+ .ap_start(ap_start),
78
+ .ap_ready(ap_ready_sig),
79
+ .ap_done(ap_done_sig),
80
+ .ap_start_int(ap_start_int),
81
+ .ap_loop_init(ap_loop_init),
82
+ .ap_ready_int(ap_ready_int),
83
+ .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0),
84
+ .ap_loop_exit_done(ap_done_int),
85
+ .ap_continue_int(ap_continue_int),
86
+ .ap_done_int(ap_done_int)
87
+ );
88
+
89
+ always @ (posedge ap_clk) begin
90
+ if (ap_rst == 1'b1) begin
91
+ ap_CS_fsm <= ap_ST_fsm_state1;
92
+ end else begin
93
+ ap_CS_fsm <= ap_NS_fsm;
94
+ end
95
+ end
96
+
97
+ always @ (posedge ap_clk) begin
98
+ if (ap_rst == 1'b1) begin
99
+ ap_done_reg <= 1'b0;
100
+ end else begin
101
+ if ((ap_continue_int == 1'b1)) begin
102
+ ap_done_reg <= 1'b0;
103
+ end else if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
104
+ ap_done_reg <= 1'b1;
105
+ end
106
+ end
107
+ end
108
+
109
+ always @ (posedge ap_clk) begin
110
+ if (((1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
111
+ if ((icmp_ln45_fu_193_p2 == 1'd0)) begin
112
+ i_fu_164 <= add_ln45_fu_199_p2;
113
+ end else if ((ap_loop_init == 1'b1)) begin
114
+ i_fu_164 <= 7'd0;
115
+ end
116
+ end
117
+ end
118
+
119
+ always @ (posedge ap_clk) begin
120
+ if (((trunc_ln45_fu_205_p1 == 6'd0) & (1'b0 == ap_block_state1_pp0_stage0_iter0) & (icmp_ln45_fu_193_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state1))) begin
121
+ p_0_0_0209_fu_168 <= data_array_fu_209_p1;
122
+ end
123
+ end
124
+
125
+ always @ (*) begin
126
+ if ((1'b1 == ap_block_state1_pp0_stage0_iter0)) begin
127
+ ap_ST_fsm_state1_blk = 1'b1;
128
+ end else begin
129
+ ap_ST_fsm_state1_blk = 1'b0;
130
+ end
131
+ end
132
+
133
+ always @ (*) begin
134
+ if (((1'b0 == ap_block_state1_pp0_stage0_iter0) & (icmp_ln45_fu_193_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state1))) begin
135
+ ap_condition_exit_pp0_iter0_stage0 = 1'b1;
136
+ end else begin
137
+ ap_condition_exit_pp0_iter0_stage0 = 1'b0;
138
+ end
139
+ end
140
+
141
+ always @ (*) begin
142
+ if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
143
+ ap_done_int = 1'b1;
144
+ end else begin
145
+ ap_done_int = ap_done_reg;
146
+ end
147
+ end
148
+
149
+ always @ (*) begin
150
+ if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b0))) begin
151
+ ap_idle = 1'b1;
152
+ end else begin
153
+ ap_idle = 1'b0;
154
+ end
155
+ end
156
+
157
+ always @ (*) begin
158
+ if (((1'b0 == ap_block_state1_pp0_stage0_iter0) & (1'b1 == ap_CS_fsm_state1))) begin
159
+ ap_ready_int = 1'b1;
160
+ end else begin
161
+ ap_ready_int = 1'b0;
162
+ end
163
+ end
164
+
165
+ always @ (*) begin
166
+ if (((ap_loop_init == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin
167
+ ap_sig_allocacmp_i_32 = 7'd0;
168
+ end else begin
169
+ ap_sig_allocacmp_i_32 = i_fu_164;
170
+ end
171
+ end
172
+
173
+ always @ (*) begin
174
+ if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_state1_pp0_stage0_iter0) & (icmp_ln45_fu_193_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state1))) begin
175
+ p_0_0_0209_out_ap_vld = 1'b1;
176
+ end else begin
177
+ p_0_0_0209_out_ap_vld = 1'b0;
178
+ end
179
+ end
180
+
181
+ always @ (*) begin
182
+ if (((icmp_ln45_fu_193_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin
183
+ x_TDATA_blk_n = x_TVALID;
184
+ end else begin
185
+ x_TDATA_blk_n = 1'b1;
186
+ end
187
+ end
188
+
189
+ always @ (*) begin
190
+ if (((1'b0 == ap_block_state1_pp0_stage0_iter0) & (icmp_ln45_fu_193_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state1))) begin
191
+ x_TREADY = 1'b1;
192
+ end else begin
193
+ x_TREADY = 1'b0;
194
+ end
195
+ end
196
+
197
+ always @ (*) begin
198
+ case (ap_CS_fsm)
199
+ ap_ST_fsm_state1 : begin
200
+ ap_NS_fsm = ap_ST_fsm_state1;
201
+ end
202
+ default : begin
203
+ ap_NS_fsm = 'bx;
204
+ end
205
+ endcase
206
+ end
207
+
208
+ assign add_ln45_fu_199_p2 = (ap_sig_allocacmp_i_32 + 7'd1);
209
+
210
+ assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];
211
+
212
+ always @ (*) begin
213
+ ap_block_state1_pp0_stage0_iter0 = ((ap_start_int == 1'b0) | ((icmp_ln45_fu_193_p2 == 1'd0) & (x_TVALID == 1'b0)));
214
+ end
215
+
216
+ assign ap_done = ap_done_sig;
217
+
218
+ assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0;
219
+
220
+ assign ap_ready = ap_ready_sig;
221
+
222
+ assign data_array_fu_209_p1 = x_TDATA[15:0];
223
+
224
+ assign icmp_ln45_fu_193_p2 = ((ap_sig_allocacmp_i_32 == 7'd64) ? 1'b1 : 1'b0);
225
+
226
+ assign p_0_0_0209_out = p_0_0_0209_fu_168;
227
+
228
+ assign trunc_ln45_fu_205_p1 = ap_sig_allocacmp_i_32[5:0];
229
+
230
+ endmodule //myproject_transpose_array_array_ap_fixed_1u_config41_Pipeline_VITIS_LOOP_45_1
myproject_prj/solution1/impl/verilog/myproject_zeropad2d_cl_array_ap_fixed_8u_array_ap_fixed_16_6_5_3_0_8u_config47_s.v ADDED
@@ -0,0 +1,430 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_zeropad2d_cl_array_ap_fixed_8u_array_ap_fixed_16_6_5_3_0_8u_config47_s (
10
+ ap_clk,
11
+ ap_rst,
12
+ ap_start,
13
+ start_full_n,
14
+ ap_done,
15
+ ap_continue,
16
+ ap_idle,
17
+ ap_ready,
18
+ start_out,
19
+ start_write,
20
+ layer3_out_dout,
21
+ layer3_out_num_data_valid,
22
+ layer3_out_fifo_cap,
23
+ layer3_out_empty_n,
24
+ layer3_out_read,
25
+ layer47_out_din,
26
+ layer47_out_num_data_valid,
27
+ layer47_out_fifo_cap,
28
+ layer47_out_full_n,
29
+ layer47_out_write
30
+ );
31
+
32
+ parameter ap_ST_fsm_state1 = 8'd1;
33
+ parameter ap_ST_fsm_state2 = 8'd2;
34
+ parameter ap_ST_fsm_state3 = 8'd4;
35
+ parameter ap_ST_fsm_state4 = 8'd8;
36
+ parameter ap_ST_fsm_state5 = 8'd16;
37
+ parameter ap_ST_fsm_state6 = 8'd32;
38
+ parameter ap_ST_fsm_state7 = 8'd64;
39
+ parameter ap_ST_fsm_state8 = 8'd128;
40
+
41
+ input ap_clk;
42
+ input ap_rst;
43
+ input ap_start;
44
+ input start_full_n;
45
+ output ap_done;
46
+ input ap_continue;
47
+ output ap_idle;
48
+ output ap_ready;
49
+ output start_out;
50
+ output start_write;
51
+ input [127:0] layer3_out_dout;
52
+ input [12:0] layer3_out_num_data_valid;
53
+ input [12:0] layer3_out_fifo_cap;
54
+ input layer3_out_empty_n;
55
+ output layer3_out_read;
56
+ output [127:0] layer47_out_din;
57
+ input [13:0] layer47_out_num_data_valid;
58
+ input [13:0] layer47_out_fifo_cap;
59
+ input layer47_out_full_n;
60
+ output layer47_out_write;
61
+
62
+ reg ap_done;
63
+ reg ap_idle;
64
+ reg start_write;
65
+ reg layer3_out_read;
66
+ reg[127:0] layer47_out_din;
67
+ reg layer47_out_write;
68
+
69
+ reg real_start;
70
+ reg start_once_reg;
71
+ reg ap_done_reg;
72
+ (* fsm_encoding = "none" *) reg [7:0] ap_CS_fsm;
73
+ wire ap_CS_fsm_state1;
74
+ reg internal_ap_ready;
75
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_start;
76
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_done;
77
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_idle;
78
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_ready;
79
+ wire [127:0] grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_layer47_out_din;
80
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_layer47_out_write;
81
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_start;
82
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_done;
83
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_idle;
84
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_ready;
85
+ wire [127:0] grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_layer47_out_din;
86
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_layer47_out_write;
87
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_layer3_out_read;
88
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_start;
89
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_done;
90
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_idle;
91
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_ready;
92
+ wire [127:0] grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_layer47_out_din;
93
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_layer47_out_write;
94
+ reg grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_start_reg;
95
+ reg ap_block_state1_ignore_call3;
96
+ wire ap_CS_fsm_state2;
97
+ reg grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_start_reg;
98
+ wire ap_CS_fsm_state4;
99
+ wire ap_CS_fsm_state5;
100
+ reg grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_start_reg;
101
+ wire ap_CS_fsm_state7;
102
+ wire ap_CS_fsm_state8;
103
+ reg [7:0] ap_NS_fsm;
104
+ reg ap_block_state1;
105
+ reg ap_ST_fsm_state1_blk;
106
+ reg ap_ST_fsm_state2_blk;
107
+ wire ap_ST_fsm_state3_blk;
108
+ wire ap_ST_fsm_state4_blk;
109
+ reg ap_ST_fsm_state5_blk;
110
+ wire ap_ST_fsm_state6_blk;
111
+ wire ap_ST_fsm_state7_blk;
112
+ reg ap_ST_fsm_state8_blk;
113
+ wire ap_ce_reg;
114
+
115
+ // power-on initialization
116
+ initial begin
117
+ #0 start_once_reg = 1'b0;
118
+ #0 ap_done_reg = 1'b0;
119
+ #0 ap_CS_fsm = 8'd1;
120
+ #0 grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_start_reg = 1'b0;
121
+ #0 grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_start_reg = 1'b0;
122
+ #0 grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_start_reg = 1'b0;
123
+ end
124
+
125
+ myproject_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22(
126
+ .ap_clk(ap_clk),
127
+ .ap_rst(ap_rst),
128
+ .ap_start(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_start),
129
+ .ap_done(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_done),
130
+ .ap_idle(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_idle),
131
+ .ap_ready(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_ready),
132
+ .layer47_out_din(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_layer47_out_din),
133
+ .layer47_out_num_data_valid(14'd0),
134
+ .layer47_out_fifo_cap(14'd0),
135
+ .layer47_out_full_n(layer47_out_full_n),
136
+ .layer47_out_write(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_layer47_out_write)
137
+ );
138
+
139
+ myproject_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28(
140
+ .ap_clk(ap_clk),
141
+ .ap_rst(ap_rst),
142
+ .ap_start(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_start),
143
+ .ap_done(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_done),
144
+ .ap_idle(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_idle),
145
+ .ap_ready(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_ready),
146
+ .layer47_out_din(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_layer47_out_din),
147
+ .layer47_out_num_data_valid(14'd0),
148
+ .layer47_out_fifo_cap(14'd0),
149
+ .layer47_out_full_n(layer47_out_full_n),
150
+ .layer47_out_write(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_layer47_out_write),
151
+ .layer3_out_dout(layer3_out_dout),
152
+ .layer3_out_num_data_valid(13'd0),
153
+ .layer3_out_fifo_cap(13'd0),
154
+ .layer3_out_empty_n(layer3_out_empty_n),
155
+ .layer3_out_read(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_layer3_out_read)
156
+ );
157
+
158
+ myproject_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36(
159
+ .ap_clk(ap_clk),
160
+ .ap_rst(ap_rst),
161
+ .ap_start(grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_start),
162
+ .ap_done(grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_done),
163
+ .ap_idle(grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_idle),
164
+ .ap_ready(grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_ready),
165
+ .layer47_out_din(grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_layer47_out_din),
166
+ .layer47_out_num_data_valid(14'd0),
167
+ .layer47_out_fifo_cap(14'd0),
168
+ .layer47_out_full_n(layer47_out_full_n),
169
+ .layer47_out_write(grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_layer47_out_write)
170
+ );
171
+
172
+ always @ (posedge ap_clk) begin
173
+ if (ap_rst == 1'b1) begin
174
+ ap_CS_fsm <= ap_ST_fsm_state1;
175
+ end else begin
176
+ ap_CS_fsm <= ap_NS_fsm;
177
+ end
178
+ end
179
+
180
+ always @ (posedge ap_clk) begin
181
+ if (ap_rst == 1'b1) begin
182
+ ap_done_reg <= 1'b0;
183
+ end else begin
184
+ if ((ap_continue == 1'b1)) begin
185
+ ap_done_reg <= 1'b0;
186
+ end else if (((grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin
187
+ ap_done_reg <= 1'b1;
188
+ end
189
+ end
190
+ end
191
+
192
+ always @ (posedge ap_clk) begin
193
+ if (ap_rst == 1'b1) begin
194
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_start_reg <= 1'b0;
195
+ end else begin
196
+ if ((1'b1 == ap_CS_fsm_state4)) begin
197
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_start_reg <= 1'b1;
198
+ end else if ((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_ready == 1'b1)) begin
199
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_start_reg <= 1'b0;
200
+ end
201
+ end
202
+ end
203
+
204
+ always @ (posedge ap_clk) begin
205
+ if (ap_rst == 1'b1) begin
206
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_start_reg <= 1'b0;
207
+ end else begin
208
+ if (((1'b1 == ap_CS_fsm_state1) & (1'b0 == ap_block_state1_ignore_call3))) begin
209
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_start_reg <= 1'b1;
210
+ end else if ((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_ready == 1'b1)) begin
211
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_start_reg <= 1'b0;
212
+ end
213
+ end
214
+ end
215
+
216
+ always @ (posedge ap_clk) begin
217
+ if (ap_rst == 1'b1) begin
218
+ grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_start_reg <= 1'b0;
219
+ end else begin
220
+ if ((1'b1 == ap_CS_fsm_state7)) begin
221
+ grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_start_reg <= 1'b1;
222
+ end else if ((grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_ready == 1'b1)) begin
223
+ grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_start_reg <= 1'b0;
224
+ end
225
+ end
226
+ end
227
+
228
+ always @ (posedge ap_clk) begin
229
+ if (ap_rst == 1'b1) begin
230
+ start_once_reg <= 1'b0;
231
+ end else begin
232
+ if (((internal_ap_ready == 1'b0) & (real_start == 1'b1))) begin
233
+ start_once_reg <= 1'b1;
234
+ end else if ((internal_ap_ready == 1'b1)) begin
235
+ start_once_reg <= 1'b0;
236
+ end
237
+ end
238
+ end
239
+
240
+ always @ (*) begin
241
+ if ((1'b1 == ap_block_state1)) begin
242
+ ap_ST_fsm_state1_blk = 1'b1;
243
+ end else begin
244
+ ap_ST_fsm_state1_blk = 1'b0;
245
+ end
246
+ end
247
+
248
+ always @ (*) begin
249
+ if ((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_done == 1'b0)) begin
250
+ ap_ST_fsm_state2_blk = 1'b1;
251
+ end else begin
252
+ ap_ST_fsm_state2_blk = 1'b0;
253
+ end
254
+ end
255
+
256
+ assign ap_ST_fsm_state3_blk = 1'b0;
257
+
258
+ assign ap_ST_fsm_state4_blk = 1'b0;
259
+
260
+ always @ (*) begin
261
+ if ((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_done == 1'b0)) begin
262
+ ap_ST_fsm_state5_blk = 1'b1;
263
+ end else begin
264
+ ap_ST_fsm_state5_blk = 1'b0;
265
+ end
266
+ end
267
+
268
+ assign ap_ST_fsm_state6_blk = 1'b0;
269
+
270
+ assign ap_ST_fsm_state7_blk = 1'b0;
271
+
272
+ always @ (*) begin
273
+ if ((grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b0)) begin
274
+ ap_ST_fsm_state8_blk = 1'b1;
275
+ end else begin
276
+ ap_ST_fsm_state8_blk = 1'b0;
277
+ end
278
+ end
279
+
280
+ always @ (*) begin
281
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin
282
+ ap_done = 1'b1;
283
+ end else begin
284
+ ap_done = ap_done_reg;
285
+ end
286
+ end
287
+
288
+ always @ (*) begin
289
+ if (((1'b1 == ap_CS_fsm_state1) & (real_start == 1'b0))) begin
290
+ ap_idle = 1'b1;
291
+ end else begin
292
+ ap_idle = 1'b0;
293
+ end
294
+ end
295
+
296
+ always @ (*) begin
297
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin
298
+ internal_ap_ready = 1'b1;
299
+ end else begin
300
+ internal_ap_ready = 1'b0;
301
+ end
302
+ end
303
+
304
+ always @ (*) begin
305
+ if ((1'b1 == ap_CS_fsm_state5)) begin
306
+ layer3_out_read = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_layer3_out_read;
307
+ end else begin
308
+ layer3_out_read = 1'b0;
309
+ end
310
+ end
311
+
312
+ always @ (*) begin
313
+ if ((1'b1 == ap_CS_fsm_state8)) begin
314
+ layer47_out_din = grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_layer47_out_din;
315
+ end else if ((1'b1 == ap_CS_fsm_state5)) begin
316
+ layer47_out_din = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_layer47_out_din;
317
+ end else if ((1'b1 == ap_CS_fsm_state2)) begin
318
+ layer47_out_din = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_layer47_out_din;
319
+ end else begin
320
+ layer47_out_din = grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_layer47_out_din;
321
+ end
322
+ end
323
+
324
+ always @ (*) begin
325
+ if ((1'b1 == ap_CS_fsm_state8)) begin
326
+ layer47_out_write = grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_layer47_out_write;
327
+ end else if ((1'b1 == ap_CS_fsm_state5)) begin
328
+ layer47_out_write = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_layer47_out_write;
329
+ end else if ((1'b1 == ap_CS_fsm_state2)) begin
330
+ layer47_out_write = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_layer47_out_write;
331
+ end else begin
332
+ layer47_out_write = 1'b0;
333
+ end
334
+ end
335
+
336
+ always @ (*) begin
337
+ if (((start_once_reg == 1'b0) & (start_full_n == 1'b0))) begin
338
+ real_start = 1'b0;
339
+ end else begin
340
+ real_start = ap_start;
341
+ end
342
+ end
343
+
344
+ always @ (*) begin
345
+ if (((start_once_reg == 1'b0) & (real_start == 1'b1))) begin
346
+ start_write = 1'b1;
347
+ end else begin
348
+ start_write = 1'b0;
349
+ end
350
+ end
351
+
352
+ always @ (*) begin
353
+ case (ap_CS_fsm)
354
+ ap_ST_fsm_state1 : begin
355
+ if (((1'b1 == ap_CS_fsm_state1) & (1'b0 == ap_block_state1))) begin
356
+ ap_NS_fsm = ap_ST_fsm_state2;
357
+ end else begin
358
+ ap_NS_fsm = ap_ST_fsm_state1;
359
+ end
360
+ end
361
+ ap_ST_fsm_state2 : begin
362
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin
363
+ ap_NS_fsm = ap_ST_fsm_state3;
364
+ end else begin
365
+ ap_NS_fsm = ap_ST_fsm_state2;
366
+ end
367
+ end
368
+ ap_ST_fsm_state3 : begin
369
+ ap_NS_fsm = ap_ST_fsm_state4;
370
+ end
371
+ ap_ST_fsm_state4 : begin
372
+ ap_NS_fsm = ap_ST_fsm_state5;
373
+ end
374
+ ap_ST_fsm_state5 : begin
375
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state5))) begin
376
+ ap_NS_fsm = ap_ST_fsm_state6;
377
+ end else begin
378
+ ap_NS_fsm = ap_ST_fsm_state5;
379
+ end
380
+ end
381
+ ap_ST_fsm_state6 : begin
382
+ ap_NS_fsm = ap_ST_fsm_state7;
383
+ end
384
+ ap_ST_fsm_state7 : begin
385
+ ap_NS_fsm = ap_ST_fsm_state8;
386
+ end
387
+ ap_ST_fsm_state8 : begin
388
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin
389
+ ap_NS_fsm = ap_ST_fsm_state1;
390
+ end else begin
391
+ ap_NS_fsm = ap_ST_fsm_state8;
392
+ end
393
+ end
394
+ default : begin
395
+ ap_NS_fsm = 'bx;
396
+ end
397
+ endcase
398
+ end
399
+
400
+ assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];
401
+
402
+ assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1];
403
+
404
+ assign ap_CS_fsm_state4 = ap_CS_fsm[32'd3];
405
+
406
+ assign ap_CS_fsm_state5 = ap_CS_fsm[32'd4];
407
+
408
+ assign ap_CS_fsm_state7 = ap_CS_fsm[32'd6];
409
+
410
+ assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7];
411
+
412
+ always @ (*) begin
413
+ ap_block_state1 = ((ap_done_reg == 1'b1) | (real_start == 1'b0));
414
+ end
415
+
416
+ always @ (*) begin
417
+ ap_block_state1_ignore_call3 = ((ap_done_reg == 1'b1) | (real_start == 1'b0));
418
+ end
419
+
420
+ assign ap_ready = internal_ap_ready;
421
+
422
+ assign grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_start = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadMain_fu_28_ap_start_reg;
423
+
424
+ assign grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_start = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config47_Pipeline_PadTopWidth_fu_22_ap_start_reg;
425
+
426
+ assign grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_start = grp_zeropad2d_cl_array_array_ap_fixed_8u_config47_Pipeline_PadBottomWidth_fu_36_ap_start_reg;
427
+
428
+ assign start_out = real_start;
429
+
430
+ endmodule //myproject_zeropad2d_cl_array_ap_fixed_8u_array_ap_fixed_16_6_5_3_0_8u_config47_s
myproject_prj/solution1/impl/verilog/myproject_zeropad2d_cl_array_ap_fixed_8u_array_ap_fixed_16_6_5_3_0_8u_config48_s.v ADDED
@@ -0,0 +1,430 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ==============================================================
2
+ // Generated by Vitis HLS v2024.1
3
+ // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
4
+ // Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
5
+ // ==============================================================
6
+
7
+ `timescale 1 ns / 1 ps
8
+
9
+ module myproject_zeropad2d_cl_array_ap_fixed_8u_array_ap_fixed_16_6_5_3_0_8u_config48_s (
10
+ ap_clk,
11
+ ap_rst,
12
+ ap_start,
13
+ start_full_n,
14
+ ap_done,
15
+ ap_continue,
16
+ ap_idle,
17
+ ap_ready,
18
+ start_out,
19
+ start_write,
20
+ layer6_out_dout,
21
+ layer6_out_num_data_valid,
22
+ layer6_out_fifo_cap,
23
+ layer6_out_empty_n,
24
+ layer6_out_read,
25
+ layer48_out_din,
26
+ layer48_out_num_data_valid,
27
+ layer48_out_fifo_cap,
28
+ layer48_out_full_n,
29
+ layer48_out_write
30
+ );
31
+
32
+ parameter ap_ST_fsm_state1 = 8'd1;
33
+ parameter ap_ST_fsm_state2 = 8'd2;
34
+ parameter ap_ST_fsm_state3 = 8'd4;
35
+ parameter ap_ST_fsm_state4 = 8'd8;
36
+ parameter ap_ST_fsm_state5 = 8'd16;
37
+ parameter ap_ST_fsm_state6 = 8'd32;
38
+ parameter ap_ST_fsm_state7 = 8'd64;
39
+ parameter ap_ST_fsm_state8 = 8'd128;
40
+
41
+ input ap_clk;
42
+ input ap_rst;
43
+ input ap_start;
44
+ input start_full_n;
45
+ output ap_done;
46
+ input ap_continue;
47
+ output ap_idle;
48
+ output ap_ready;
49
+ output start_out;
50
+ output start_write;
51
+ input [127:0] layer6_out_dout;
52
+ input [10:0] layer6_out_num_data_valid;
53
+ input [10:0] layer6_out_fifo_cap;
54
+ input layer6_out_empty_n;
55
+ output layer6_out_read;
56
+ output [127:0] layer48_out_din;
57
+ input [11:0] layer48_out_num_data_valid;
58
+ input [11:0] layer48_out_fifo_cap;
59
+ input layer48_out_full_n;
60
+ output layer48_out_write;
61
+
62
+ reg ap_done;
63
+ reg ap_idle;
64
+ reg start_write;
65
+ reg layer6_out_read;
66
+ reg[127:0] layer48_out_din;
67
+ reg layer48_out_write;
68
+
69
+ reg real_start;
70
+ reg start_once_reg;
71
+ reg ap_done_reg;
72
+ (* fsm_encoding = "none" *) reg [7:0] ap_CS_fsm;
73
+ wire ap_CS_fsm_state1;
74
+ reg internal_ap_ready;
75
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_start;
76
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_done;
77
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_idle;
78
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_ready;
79
+ wire [127:0] grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_layer48_out_din;
80
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_layer48_out_write;
81
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_start;
82
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_done;
83
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_idle;
84
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_ready;
85
+ wire [127:0] grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_layer48_out_din;
86
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_layer48_out_write;
87
+ wire grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_layer6_out_read;
88
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_start;
89
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_done;
90
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_idle;
91
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_ready;
92
+ wire [127:0] grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_layer48_out_din;
93
+ wire grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_layer48_out_write;
94
+ reg grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_start_reg;
95
+ reg ap_block_state1_ignore_call3;
96
+ wire ap_CS_fsm_state2;
97
+ reg grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_start_reg;
98
+ wire ap_CS_fsm_state4;
99
+ wire ap_CS_fsm_state5;
100
+ reg grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_start_reg;
101
+ wire ap_CS_fsm_state7;
102
+ wire ap_CS_fsm_state8;
103
+ reg [7:0] ap_NS_fsm;
104
+ reg ap_block_state1;
105
+ reg ap_ST_fsm_state1_blk;
106
+ reg ap_ST_fsm_state2_blk;
107
+ wire ap_ST_fsm_state3_blk;
108
+ wire ap_ST_fsm_state4_blk;
109
+ reg ap_ST_fsm_state5_blk;
110
+ wire ap_ST_fsm_state6_blk;
111
+ wire ap_ST_fsm_state7_blk;
112
+ reg ap_ST_fsm_state8_blk;
113
+ wire ap_ce_reg;
114
+
115
+ // power-on initialization
116
+ initial begin
117
+ #0 start_once_reg = 1'b0;
118
+ #0 ap_done_reg = 1'b0;
119
+ #0 ap_CS_fsm = 8'd1;
120
+ #0 grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_start_reg = 1'b0;
121
+ #0 grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_start_reg = 1'b0;
122
+ #0 grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_start_reg = 1'b0;
123
+ end
124
+
125
+ myproject_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22(
126
+ .ap_clk(ap_clk),
127
+ .ap_rst(ap_rst),
128
+ .ap_start(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_start),
129
+ .ap_done(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_done),
130
+ .ap_idle(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_idle),
131
+ .ap_ready(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_ready),
132
+ .layer48_out_din(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_layer48_out_din),
133
+ .layer48_out_num_data_valid(12'd0),
134
+ .layer48_out_fifo_cap(12'd0),
135
+ .layer48_out_full_n(layer48_out_full_n),
136
+ .layer48_out_write(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_layer48_out_write)
137
+ );
138
+
139
+ myproject_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28(
140
+ .ap_clk(ap_clk),
141
+ .ap_rst(ap_rst),
142
+ .ap_start(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_start),
143
+ .ap_done(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_done),
144
+ .ap_idle(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_idle),
145
+ .ap_ready(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_ready),
146
+ .layer48_out_din(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_layer48_out_din),
147
+ .layer48_out_num_data_valid(12'd0),
148
+ .layer48_out_fifo_cap(12'd0),
149
+ .layer48_out_full_n(layer48_out_full_n),
150
+ .layer48_out_write(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_layer48_out_write),
151
+ .layer6_out_dout(layer6_out_dout),
152
+ .layer6_out_num_data_valid(11'd0),
153
+ .layer6_out_fifo_cap(11'd0),
154
+ .layer6_out_empty_n(layer6_out_empty_n),
155
+ .layer6_out_read(grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_layer6_out_read)
156
+ );
157
+
158
+ myproject_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36(
159
+ .ap_clk(ap_clk),
160
+ .ap_rst(ap_rst),
161
+ .ap_start(grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_start),
162
+ .ap_done(grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_done),
163
+ .ap_idle(grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_idle),
164
+ .ap_ready(grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_ready),
165
+ .layer48_out_din(grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_layer48_out_din),
166
+ .layer48_out_num_data_valid(12'd0),
167
+ .layer48_out_fifo_cap(12'd0),
168
+ .layer48_out_full_n(layer48_out_full_n),
169
+ .layer48_out_write(grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_layer48_out_write)
170
+ );
171
+
172
+ always @ (posedge ap_clk) begin
173
+ if (ap_rst == 1'b1) begin
174
+ ap_CS_fsm <= ap_ST_fsm_state1;
175
+ end else begin
176
+ ap_CS_fsm <= ap_NS_fsm;
177
+ end
178
+ end
179
+
180
+ always @ (posedge ap_clk) begin
181
+ if (ap_rst == 1'b1) begin
182
+ ap_done_reg <= 1'b0;
183
+ end else begin
184
+ if ((ap_continue == 1'b1)) begin
185
+ ap_done_reg <= 1'b0;
186
+ end else if (((grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin
187
+ ap_done_reg <= 1'b1;
188
+ end
189
+ end
190
+ end
191
+
192
+ always @ (posedge ap_clk) begin
193
+ if (ap_rst == 1'b1) begin
194
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_start_reg <= 1'b0;
195
+ end else begin
196
+ if ((1'b1 == ap_CS_fsm_state4)) begin
197
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_start_reg <= 1'b1;
198
+ end else if ((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_ready == 1'b1)) begin
199
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_start_reg <= 1'b0;
200
+ end
201
+ end
202
+ end
203
+
204
+ always @ (posedge ap_clk) begin
205
+ if (ap_rst == 1'b1) begin
206
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_start_reg <= 1'b0;
207
+ end else begin
208
+ if (((1'b1 == ap_CS_fsm_state1) & (1'b0 == ap_block_state1_ignore_call3))) begin
209
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_start_reg <= 1'b1;
210
+ end else if ((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_ready == 1'b1)) begin
211
+ grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_start_reg <= 1'b0;
212
+ end
213
+ end
214
+ end
215
+
216
+ always @ (posedge ap_clk) begin
217
+ if (ap_rst == 1'b1) begin
218
+ grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_start_reg <= 1'b0;
219
+ end else begin
220
+ if ((1'b1 == ap_CS_fsm_state7)) begin
221
+ grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_start_reg <= 1'b1;
222
+ end else if ((grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_ready == 1'b1)) begin
223
+ grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_start_reg <= 1'b0;
224
+ end
225
+ end
226
+ end
227
+
228
+ always @ (posedge ap_clk) begin
229
+ if (ap_rst == 1'b1) begin
230
+ start_once_reg <= 1'b0;
231
+ end else begin
232
+ if (((internal_ap_ready == 1'b0) & (real_start == 1'b1))) begin
233
+ start_once_reg <= 1'b1;
234
+ end else if ((internal_ap_ready == 1'b1)) begin
235
+ start_once_reg <= 1'b0;
236
+ end
237
+ end
238
+ end
239
+
240
+ always @ (*) begin
241
+ if ((1'b1 == ap_block_state1)) begin
242
+ ap_ST_fsm_state1_blk = 1'b1;
243
+ end else begin
244
+ ap_ST_fsm_state1_blk = 1'b0;
245
+ end
246
+ end
247
+
248
+ always @ (*) begin
249
+ if ((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_done == 1'b0)) begin
250
+ ap_ST_fsm_state2_blk = 1'b1;
251
+ end else begin
252
+ ap_ST_fsm_state2_blk = 1'b0;
253
+ end
254
+ end
255
+
256
+ assign ap_ST_fsm_state3_blk = 1'b0;
257
+
258
+ assign ap_ST_fsm_state4_blk = 1'b0;
259
+
260
+ always @ (*) begin
261
+ if ((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_done == 1'b0)) begin
262
+ ap_ST_fsm_state5_blk = 1'b1;
263
+ end else begin
264
+ ap_ST_fsm_state5_blk = 1'b0;
265
+ end
266
+ end
267
+
268
+ assign ap_ST_fsm_state6_blk = 1'b0;
269
+
270
+ assign ap_ST_fsm_state7_blk = 1'b0;
271
+
272
+ always @ (*) begin
273
+ if ((grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b0)) begin
274
+ ap_ST_fsm_state8_blk = 1'b1;
275
+ end else begin
276
+ ap_ST_fsm_state8_blk = 1'b0;
277
+ end
278
+ end
279
+
280
+ always @ (*) begin
281
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin
282
+ ap_done = 1'b1;
283
+ end else begin
284
+ ap_done = ap_done_reg;
285
+ end
286
+ end
287
+
288
+ always @ (*) begin
289
+ if (((1'b1 == ap_CS_fsm_state1) & (real_start == 1'b0))) begin
290
+ ap_idle = 1'b1;
291
+ end else begin
292
+ ap_idle = 1'b0;
293
+ end
294
+ end
295
+
296
+ always @ (*) begin
297
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin
298
+ internal_ap_ready = 1'b1;
299
+ end else begin
300
+ internal_ap_ready = 1'b0;
301
+ end
302
+ end
303
+
304
+ always @ (*) begin
305
+ if ((1'b1 == ap_CS_fsm_state8)) begin
306
+ layer48_out_din = grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_layer48_out_din;
307
+ end else if ((1'b1 == ap_CS_fsm_state5)) begin
308
+ layer48_out_din = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_layer48_out_din;
309
+ end else if ((1'b1 == ap_CS_fsm_state2)) begin
310
+ layer48_out_din = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_layer48_out_din;
311
+ end else begin
312
+ layer48_out_din = grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_layer48_out_din;
313
+ end
314
+ end
315
+
316
+ always @ (*) begin
317
+ if ((1'b1 == ap_CS_fsm_state8)) begin
318
+ layer48_out_write = grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_layer48_out_write;
319
+ end else if ((1'b1 == ap_CS_fsm_state5)) begin
320
+ layer48_out_write = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_layer48_out_write;
321
+ end else if ((1'b1 == ap_CS_fsm_state2)) begin
322
+ layer48_out_write = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_layer48_out_write;
323
+ end else begin
324
+ layer48_out_write = 1'b0;
325
+ end
326
+ end
327
+
328
+ always @ (*) begin
329
+ if ((1'b1 == ap_CS_fsm_state5)) begin
330
+ layer6_out_read = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_layer6_out_read;
331
+ end else begin
332
+ layer6_out_read = 1'b0;
333
+ end
334
+ end
335
+
336
+ always @ (*) begin
337
+ if (((start_once_reg == 1'b0) & (start_full_n == 1'b0))) begin
338
+ real_start = 1'b0;
339
+ end else begin
340
+ real_start = ap_start;
341
+ end
342
+ end
343
+
344
+ always @ (*) begin
345
+ if (((start_once_reg == 1'b0) & (real_start == 1'b1))) begin
346
+ start_write = 1'b1;
347
+ end else begin
348
+ start_write = 1'b0;
349
+ end
350
+ end
351
+
352
+ always @ (*) begin
353
+ case (ap_CS_fsm)
354
+ ap_ST_fsm_state1 : begin
355
+ if (((1'b1 == ap_CS_fsm_state1) & (1'b0 == ap_block_state1))) begin
356
+ ap_NS_fsm = ap_ST_fsm_state2;
357
+ end else begin
358
+ ap_NS_fsm = ap_ST_fsm_state1;
359
+ end
360
+ end
361
+ ap_ST_fsm_state2 : begin
362
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin
363
+ ap_NS_fsm = ap_ST_fsm_state3;
364
+ end else begin
365
+ ap_NS_fsm = ap_ST_fsm_state2;
366
+ end
367
+ end
368
+ ap_ST_fsm_state3 : begin
369
+ ap_NS_fsm = ap_ST_fsm_state4;
370
+ end
371
+ ap_ST_fsm_state4 : begin
372
+ ap_NS_fsm = ap_ST_fsm_state5;
373
+ end
374
+ ap_ST_fsm_state5 : begin
375
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state5))) begin
376
+ ap_NS_fsm = ap_ST_fsm_state6;
377
+ end else begin
378
+ ap_NS_fsm = ap_ST_fsm_state5;
379
+ end
380
+ end
381
+ ap_ST_fsm_state6 : begin
382
+ ap_NS_fsm = ap_ST_fsm_state7;
383
+ end
384
+ ap_ST_fsm_state7 : begin
385
+ ap_NS_fsm = ap_ST_fsm_state8;
386
+ end
387
+ ap_ST_fsm_state8 : begin
388
+ if (((grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin
389
+ ap_NS_fsm = ap_ST_fsm_state1;
390
+ end else begin
391
+ ap_NS_fsm = ap_ST_fsm_state8;
392
+ end
393
+ end
394
+ default : begin
395
+ ap_NS_fsm = 'bx;
396
+ end
397
+ endcase
398
+ end
399
+
400
+ assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];
401
+
402
+ assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1];
403
+
404
+ assign ap_CS_fsm_state4 = ap_CS_fsm[32'd3];
405
+
406
+ assign ap_CS_fsm_state5 = ap_CS_fsm[32'd4];
407
+
408
+ assign ap_CS_fsm_state7 = ap_CS_fsm[32'd6];
409
+
410
+ assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7];
411
+
412
+ always @ (*) begin
413
+ ap_block_state1 = ((ap_done_reg == 1'b1) | (real_start == 1'b0));
414
+ end
415
+
416
+ always @ (*) begin
417
+ ap_block_state1_ignore_call3 = ((ap_done_reg == 1'b1) | (real_start == 1'b0));
418
+ end
419
+
420
+ assign ap_ready = internal_ap_ready;
421
+
422
+ assign grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_start = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadMain_fu_28_ap_start_reg;
423
+
424
+ assign grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_start = grp_zeropad2d_cl_array_array_ap_fixed_16_6_5_3_0_8u_config48_Pipeline_PadTopWidth_fu_22_ap_start_reg;
425
+
426
+ assign grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_start = grp_zeropad2d_cl_array_array_ap_fixed_8u_config48_Pipeline_PadBottomWidth_fu_36_ap_start_reg;
427
+
428
+ assign start_out = real_start;
429
+
430
+ endmodule //myproject_zeropad2d_cl_array_ap_fixed_8u_array_ap_fixed_16_6_5_3_0_8u_config48_s