rtrevinnoc commited on
Commit
2e59ca4
·
verified ·
1 Parent(s): b8ab7c4

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/syn/verilog/myproject.v +0 -0
  2. myproject_prj/solution1/syn/verilog/myproject_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_16u_config31_s.v +0 -0
  3. myproject_prj/solution1/syn/verilog/myproject_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_16u_config9_s.v +0 -0
  4. myproject_prj/solution1/syn/verilog/myproject_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_8u_config35_s.v +0 -0
  5. myproject_prj/solution1/syn/verilog/myproject_conv_2d_cl_array_ap_fixed_24u_array_ap_fixed_41_21_5_3_0_8u_config35_s.v +397 -0
  6. myproject_prj/solution1/syn/verilog/myproject_conv_2d_cl_array_array_ap_fixed_41_21_5_3_0_32u_config12_s.v +373 -0
  7. myproject_prj/solution1/syn/verilog/myproject_conv_2d_cl_array_array_ap_fixed_43_23_5_3_0_64u_config19_s.v +517 -0
  8. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_37_17_5_3_0_config2_mult_s_oudEe.v +42 -0
  9. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_40_20_5_3_0_config4_mult_s.v +0 -0
  10. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_outidx_5_ROM_dkF.dat +576 -0
  11. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_w14_ROM_NP_BRdlF.dat +576 -0
  12. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_w14_ROM_NP_BRdlF.v +42 -0
  13. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config19_mult_s_outidx_7_ROM_g0b.v +42 -0
  14. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config31_mult_s.v +0 -0
  15. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config37_mult_s_w37_ROM_NP_BRoic.dat +144 -0
  16. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_36_16_5_3_0_config58_mult_s.v +663 -0
  17. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_40_20_5_3_0_config7_mult_s_w7_ROMUhA.v +42 -0
  18. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config12_mult_s_w12_Rceu.v +42 -0
  19. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config12_mult_s_w12_Rcgu.v +42 -0
  20. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config31_mult_s_w31_Rnbc.v +42 -0
  21. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config31_mult_s_w31_Rndc.dat +144 -0
  22. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbrm.v +42 -0
  23. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbtn.dat +144 -0
  24. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbtn.v +42 -0
  25. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_42_22_5_3_0_config14_mult_s_w14_RdjF.v +42 -0
  26. myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_42_22_5_3_0_config17_mult_s_w17_ReSV.dat +144 -0
  27. myproject_prj/solution1/syn/verilog/myproject_fifo_w1024_d64_A.v +237 -0
  28. myproject_prj/solution1/syn/verilog/myproject_fifo_w1312_d256_A.v +237 -0
  29. myproject_prj/solution1/syn/verilog/myproject_fifo_w1376_d256_A.v +237 -0
  30. myproject_prj/solution1/syn/verilog/myproject_fifo_w1536_d256_A.v +237 -0
  31. myproject_prj/solution1/syn/verilog/myproject_fifo_w16_d4096_A.v +237 -0
  32. myproject_prj/solution1/syn/verilog/myproject_fifo_w16_d64_S.v +155 -0
  33. myproject_prj/solution1/syn/verilog/myproject_fifo_w256_d1156_A.v +237 -0
  34. myproject_prj/solution1/syn/verilog/myproject_fifo_w320_d4096_A.v +237 -0
  35. myproject_prj/solution1/syn/verilog/myproject_fifo_w328_d4096_A.v +237 -0
  36. myproject_prj/solution1/syn/verilog/myproject_fifo_w36_d4096_A.v +237 -0
  37. myproject_prj/solution1/syn/verilog/myproject_fifo_w384_d4096_A.v +237 -0
  38. myproject_prj/solution1/syn/verilog/myproject_fifo_w512_d256_A.v +237 -0
  39. myproject_prj/solution1/syn/verilog/myproject_fifo_w768_d1024_A.v +237 -0
  40. myproject_prj/solution1/syn/verilog/myproject_flow_control_loop_pipe_no_ap_cont.v +104 -0
  41. myproject_prj/solution1/syn/verilog/myproject_flow_control_loop_pipe_sequential_init.v +107 -0
  42. myproject_prj/solution1/syn/verilog/myproject_mac_muladd_16s_10s_33s_33_1_1.v +66 -0
  43. myproject_prj/solution1/syn/verilog/myproject_mac_muladd_16s_16s_33s_33_1_1.v +66 -0
  44. myproject_prj/solution1/syn/verilog/myproject_mac_muladd_16s_16s_40s_41_1_1.v +66 -0
  45. myproject_prj/solution1/syn/verilog/myproject_mac_muladd_16s_16s_41s_42_1_1.v +66 -0
  46. myproject_prj/solution1/syn/verilog/myproject_mac_muladd_16s_9s_31s_31_1_1.v +66 -0
  47. myproject_prj/solution1/syn/verilog/myproject_mac_muladd_16s_9s_34s_34_1_1.v +66 -0
  48. myproject_prj/solution1/syn/verilog/myproject_mac_muladd_16s_9s_41s_42_1_1.v +66 -0
  49. myproject_prj/solution1/syn/verilog/myproject_mac_muladd_16s_9s_43s_44_1_1.v +66 -0
  50. myproject_prj/solution1/syn/verilog/myproject_mul_16s_16s_32_1_1.v +75 -0
myproject_prj/solution1/syn/verilog/myproject.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/syn/verilog/myproject_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_16u_config31_s.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/syn/verilog/myproject_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_16u_config9_s.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/syn/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/syn/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
+ layer56_out_dout,
21
+ layer56_out_num_data_valid,
22
+ layer56_out_fifo_cap,
23
+ layer56_out_empty_n,
24
+ layer56_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] layer56_out_dout;
47
+ input [13:0] layer56_out_num_data_valid;
48
+ input [13:0] layer56_out_fifo_cap;
49
+ input layer56_out_empty_n;
50
+ output layer56_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 layer56_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 layer56_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 <= {{layer56_out_dout[47:32]}};
218
+ trunc_ln58_11_reg_1552 <= {{layer56_out_dout[63:48]}};
219
+ trunc_ln58_12_reg_1557 <= {{layer56_out_dout[79:64]}};
220
+ trunc_ln58_13_reg_1562 <= {{layer56_out_dout[95:80]}};
221
+ trunc_ln58_14_reg_1567 <= {{layer56_out_dout[111:96]}};
222
+ trunc_ln58_15_reg_1572 <= {{layer56_out_dout[127:112]}};
223
+ trunc_ln58_16_reg_1577 <= {{layer56_out_dout[143:128]}};
224
+ trunc_ln58_17_reg_1582 <= {{layer56_out_dout[159:144]}};
225
+ trunc_ln58_18_reg_1587 <= {{layer56_out_dout[175:160]}};
226
+ trunc_ln58_19_reg_1592 <= {{layer56_out_dout[191:176]}};
227
+ trunc_ln58_20_reg_1597 <= {{layer56_out_dout[207:192]}};
228
+ trunc_ln58_21_reg_1602 <= {{layer56_out_dout[223:208]}};
229
+ trunc_ln58_22_reg_1607 <= {{layer56_out_dout[239:224]}};
230
+ trunc_ln58_23_reg_1612 <= {{layer56_out_dout[255:240]}};
231
+ trunc_ln58_24_reg_1617 <= {{layer56_out_dout[271:256]}};
232
+ trunc_ln58_25_reg_1622 <= {{layer56_out_dout[287:272]}};
233
+ trunc_ln58_26_reg_1627 <= {{layer56_out_dout[303:288]}};
234
+ trunc_ln58_27_reg_1632 <= {{layer56_out_dout[319:304]}};
235
+ trunc_ln58_28_reg_1637 <= {{layer56_out_dout[335:320]}};
236
+ trunc_ln58_29_reg_1642 <= {{layer56_out_dout[351:336]}};
237
+ trunc_ln58_30_reg_1647 <= {{layer56_out_dout[367:352]}};
238
+ trunc_ln58_31_reg_1652 <= {{layer56_out_dout[383:368]}};
239
+ trunc_ln58_reg_1537 <= trunc_ln58_fu_1264_p1;
240
+ trunc_ln58_s_reg_1542 <= {{layer56_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
+ layer56_out_blk_n = layer56_out_empty_n;
303
+ end else begin
304
+ layer56_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
+ layer56_out_read_local = 1'b1;
311
+ end else begin
312
+ layer56_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) & (layer56_out_empty_n == 1'b0));
377
+ end
378
+
379
+ always @ (*) begin
380
+ ap_block_state2_ignore_call27 = ((icmp_ln52_fu_1252_p2 == 1'd0) & (layer56_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 layer56_out_read = layer56_out_read_local;
392
+
393
+ assign start_out = real_start;
394
+
395
+ assign trunc_ln58_fu_1264_p1 = layer56_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/syn/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
+ layer48_out_dout,
21
+ layer48_out_num_data_valid,
22
+ layer48_out_fifo_cap,
23
+ layer48_out_empty_n,
24
+ layer48_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] layer48_out_dout;
47
+ input [9:0] layer48_out_num_data_valid;
48
+ input [9:0] layer48_out_fifo_cap;
49
+ input layer48_out_empty_n;
50
+ output layer48_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 layer48_out_blk_n;
69
+ wire ap_CS_fsm_state2;
70
+ wire [0:0] icmp_ln52_fu_864_p2;
71
+ wire [15:0] trunc_ln58_fu_876_p1;
72
+ reg [15:0] trunc_ln58_reg_1061;
73
+ reg ap_block_state2;
74
+ reg [15:0] trunc_ln58_s_reg_1066;
75
+ reg [15:0] trunc_ln58_226_reg_1071;
76
+ reg [15:0] trunc_ln58_227_reg_1076;
77
+ reg [15:0] trunc_ln58_228_reg_1081;
78
+ reg [15:0] trunc_ln58_229_reg_1086;
79
+ reg [15:0] trunc_ln58_230_reg_1091;
80
+ reg [15:0] trunc_ln58_231_reg_1096;
81
+ reg [15:0] trunc_ln58_232_reg_1101;
82
+ reg [15:0] trunc_ln58_233_reg_1106;
83
+ reg [15:0] trunc_ln58_234_reg_1111;
84
+ reg [15:0] trunc_ln58_235_reg_1116;
85
+ reg [15:0] trunc_ln58_236_reg_1121;
86
+ reg [15:0] trunc_ln58_237_reg_1126;
87
+ reg [15:0] trunc_ln58_238_reg_1131;
88
+ reg [15:0] trunc_ln58_239_reg_1136;
89
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_ap_start;
90
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_ap_done;
91
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_ap_idle;
92
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_ap_ready;
93
+ wire [1311:0] grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_layer12_out_din;
94
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_layer12_out_write;
95
+ reg grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_ap_start_reg;
96
+ reg ap_block_state2_ignore_call19;
97
+ wire ap_CS_fsm_state3;
98
+ reg [8:0] indvar_flatten_fu_460;
99
+ wire [8:0] add_ln52_fu_870_p2;
100
+ reg ap_block_state1;
101
+ reg layer48_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_470_ap_start_reg = 1'b0;
114
+ #0 indvar_flatten_fu_460 = 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_470(
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_470_ap_start),
121
+ .ap_done(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_ap_done),
122
+ .ap_idle(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_ap_idle),
123
+ .ap_ready(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_ap_ready),
124
+ .p_read(trunc_ln58_reg_1061),
125
+ .p_read1(trunc_ln58_s_reg_1066),
126
+ .p_read2(trunc_ln58_226_reg_1071),
127
+ .p_read3(trunc_ln58_227_reg_1076),
128
+ .p_read4(trunc_ln58_228_reg_1081),
129
+ .p_read5(trunc_ln58_229_reg_1086),
130
+ .p_read6(trunc_ln58_230_reg_1091),
131
+ .p_read7(trunc_ln58_231_reg_1096),
132
+ .p_read8(trunc_ln58_232_reg_1101),
133
+ .p_read9(trunc_ln58_233_reg_1106),
134
+ .p_read10(trunc_ln58_234_reg_1111),
135
+ .p_read11(trunc_ln58_235_reg_1116),
136
+ .p_read12(trunc_ln58_236_reg_1121),
137
+ .p_read13(trunc_ln58_237_reg_1126),
138
+ .p_read14(trunc_ln58_238_reg_1131),
139
+ .p_read15(trunc_ln58_239_reg_1136),
140
+ .layer12_out_din(grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_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_470_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_864_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_470_ap_start_reg <= 1'b0;
170
+ end else begin
171
+ if (((1'b0 == ap_block_state2_ignore_call19) & (icmp_ln52_fu_864_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_470_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_470_ap_ready == 1'b1)) begin
174
+ grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_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_460 <= 9'd0;
194
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_864_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
195
+ indvar_flatten_fu_460 <= add_ln52_fu_870_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_1071 <= {{layer48_out_dout[47:32]}};
202
+ trunc_ln58_227_reg_1076 <= {{layer48_out_dout[63:48]}};
203
+ trunc_ln58_228_reg_1081 <= {{layer48_out_dout[79:64]}};
204
+ trunc_ln58_229_reg_1086 <= {{layer48_out_dout[95:80]}};
205
+ trunc_ln58_230_reg_1091 <= {{layer48_out_dout[111:96]}};
206
+ trunc_ln58_231_reg_1096 <= {{layer48_out_dout[127:112]}};
207
+ trunc_ln58_232_reg_1101 <= {{layer48_out_dout[143:128]}};
208
+ trunc_ln58_233_reg_1106 <= {{layer48_out_dout[159:144]}};
209
+ trunc_ln58_234_reg_1111 <= {{layer48_out_dout[175:160]}};
210
+ trunc_ln58_235_reg_1116 <= {{layer48_out_dout[191:176]}};
211
+ trunc_ln58_236_reg_1121 <= {{layer48_out_dout[207:192]}};
212
+ trunc_ln58_237_reg_1126 <= {{layer48_out_dout[223:208]}};
213
+ trunc_ln58_238_reg_1131 <= {{layer48_out_dout[239:224]}};
214
+ trunc_ln58_239_reg_1136 <= {{layer48_out_dout[255:240]}};
215
+ trunc_ln58_reg_1061 <= trunc_ln58_fu_876_p1;
216
+ trunc_ln58_s_reg_1066 <= {{layer48_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_470_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_864_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_864_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_470_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_864_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
278
+ layer48_out_blk_n = layer48_out_empty_n;
279
+ end else begin
280
+ layer48_out_blk_n = 1'b1;
281
+ end
282
+ end
283
+
284
+ always @ (*) begin
285
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_864_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
286
+ layer48_out_read_local = 1'b1;
287
+ end else begin
288
+ layer48_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_864_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_864_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_470_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_870_p2 = (indvar_flatten_fu_460 + 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_864_p2 == 1'd0) & (layer48_out_empty_n == 1'b0));
353
+ end
354
+
355
+ always @ (*) begin
356
+ ap_block_state2_ignore_call19 = ((icmp_ln52_fu_864_p2 == 1'd0) & (layer48_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_470_ap_start = grp_compute_output_buffer_2d_array_array_ap_fixed_41_21_5_3_0_32u_config12_s_fu_470_ap_start_reg;
362
+
363
+ assign icmp_ln52_fu_864_p2 = ((indvar_flatten_fu_460 == 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_470_layer12_out_din;
366
+
367
+ assign layer48_out_read = layer48_out_read_local;
368
+
369
+ assign start_out = real_start;
370
+
371
+ assign trunc_ln58_fu_876_p1 = layer48_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/syn/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
+ layer51_out_dout,
21
+ layer51_out_num_data_valid,
22
+ layer51_out_fifo_cap,
23
+ layer51_out_empty_n,
24
+ layer51_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] layer51_out_dout;
47
+ input [7:0] layer51_out_num_data_valid;
48
+ input [7:0] layer51_out_fifo_cap;
49
+ input layer51_out_empty_n;
50
+ output layer51_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 layer51_out_blk_n;
69
+ wire ap_CS_fsm_state2;
70
+ wire [0:0] icmp_ln52_fu_3216_p2;
71
+ wire [15:0] trunc_ln58_fu_3228_p1;
72
+ reg [15:0] trunc_ln58_reg_3941;
73
+ reg ap_block_state2;
74
+ reg [15:0] trunc_ln58_s_reg_3946;
75
+ reg [15:0] trunc_ln58_46_reg_3951;
76
+ reg [15:0] trunc_ln58_47_reg_3956;
77
+ reg [15:0] trunc_ln58_48_reg_3961;
78
+ reg [15:0] trunc_ln58_49_reg_3966;
79
+ reg [15:0] trunc_ln58_50_reg_3971;
80
+ reg [15:0] trunc_ln58_51_reg_3976;
81
+ reg [15:0] trunc_ln58_52_reg_3981;
82
+ reg [15:0] trunc_ln58_53_reg_3986;
83
+ reg [15:0] trunc_ln58_54_reg_3991;
84
+ reg [15:0] trunc_ln58_55_reg_3996;
85
+ reg [15:0] trunc_ln58_56_reg_4001;
86
+ reg [15:0] trunc_ln58_57_reg_4006;
87
+ reg [15:0] trunc_ln58_58_reg_4011;
88
+ reg [15:0] trunc_ln58_59_reg_4016;
89
+ reg [15:0] trunc_ln58_60_reg_4021;
90
+ reg [15:0] trunc_ln58_61_reg_4026;
91
+ reg [15:0] trunc_ln58_62_reg_4031;
92
+ reg [15:0] trunc_ln58_63_reg_4036;
93
+ reg [15:0] trunc_ln58_64_reg_4041;
94
+ reg [15:0] trunc_ln58_65_reg_4046;
95
+ reg [15:0] trunc_ln58_66_reg_4051;
96
+ reg [15:0] trunc_ln58_67_reg_4056;
97
+ reg [15:0] trunc_ln58_68_reg_4061;
98
+ reg [15:0] trunc_ln58_69_reg_4066;
99
+ reg [15:0] trunc_ln58_70_reg_4071;
100
+ reg [15:0] trunc_ln58_71_reg_4076;
101
+ reg [15:0] trunc_ln58_72_reg_4081;
102
+ reg [15:0] trunc_ln58_73_reg_4086;
103
+ reg [15:0] trunc_ln58_74_reg_4091;
104
+ reg [15:0] trunc_ln58_75_reg_4096;
105
+ reg [15:0] trunc_ln58_76_reg_4101;
106
+ reg [15:0] trunc_ln58_77_reg_4106;
107
+ reg [15:0] trunc_ln58_78_reg_4111;
108
+ reg [15:0] trunc_ln58_79_reg_4116;
109
+ reg [15:0] trunc_ln58_80_reg_4121;
110
+ reg [15:0] trunc_ln58_81_reg_4126;
111
+ reg [15:0] trunc_ln58_82_reg_4131;
112
+ reg [15:0] trunc_ln58_83_reg_4136;
113
+ reg [15:0] trunc_ln58_84_reg_4141;
114
+ reg [15:0] trunc_ln58_85_reg_4146;
115
+ reg [15:0] trunc_ln58_86_reg_4151;
116
+ reg [15:0] trunc_ln58_87_reg_4156;
117
+ reg [15:0] trunc_ln58_88_reg_4161;
118
+ reg [15:0] trunc_ln58_89_reg_4166;
119
+ reg [15:0] trunc_ln58_90_reg_4171;
120
+ reg [15:0] trunc_ln58_91_reg_4176;
121
+ reg [15:0] trunc_ln58_92_reg_4181;
122
+ reg [15:0] trunc_ln58_93_reg_4186;
123
+ reg [15:0] trunc_ln58_94_reg_4191;
124
+ reg [15:0] trunc_ln58_95_reg_4196;
125
+ reg [15:0] trunc_ln58_96_reg_4201;
126
+ reg [15:0] trunc_ln58_97_reg_4206;
127
+ reg [15:0] trunc_ln58_98_reg_4211;
128
+ reg [15:0] trunc_ln58_99_reg_4216;
129
+ reg [15:0] trunc_ln58_100_reg_4221;
130
+ reg [15:0] trunc_ln58_101_reg_4226;
131
+ reg [15:0] trunc_ln58_102_reg_4231;
132
+ reg [15:0] trunc_ln58_103_reg_4236;
133
+ reg [15:0] trunc_ln58_104_reg_4241;
134
+ reg [15:0] trunc_ln58_105_reg_4246;
135
+ reg [15:0] trunc_ln58_106_reg_4251;
136
+ reg [15:0] trunc_ln58_107_reg_4256;
137
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_ap_start;
138
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_ap_done;
139
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_ap_idle;
140
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_ap_ready;
141
+ wire [2751:0] grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_layer19_out_din;
142
+ wire grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_layer19_out_write;
143
+ reg grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_ap_start_reg;
144
+ reg ap_block_state2_ignore_call67;
145
+ wire ap_CS_fsm_state3;
146
+ reg [6:0] indvar_flatten_fu_1708;
147
+ wire [6:0] add_ln52_fu_3222_p2;
148
+ reg ap_block_state1;
149
+ reg layer51_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_1718_ap_start_reg = 1'b0;
162
+ #0 indvar_flatten_fu_1708 = 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_1718(
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_1718_ap_start),
169
+ .ap_done(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_ap_done),
170
+ .ap_idle(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_ap_idle),
171
+ .ap_ready(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_ap_ready),
172
+ .p_read(trunc_ln58_reg_3941),
173
+ .p_read1(trunc_ln58_s_reg_3946),
174
+ .p_read2(trunc_ln58_46_reg_3951),
175
+ .p_read3(trunc_ln58_47_reg_3956),
176
+ .p_read4(trunc_ln58_48_reg_3961),
177
+ .p_read5(trunc_ln58_49_reg_3966),
178
+ .p_read6(trunc_ln58_50_reg_3971),
179
+ .p_read7(trunc_ln58_51_reg_3976),
180
+ .p_read8(trunc_ln58_52_reg_3981),
181
+ .p_read9(trunc_ln58_53_reg_3986),
182
+ .p_read10(trunc_ln58_54_reg_3991),
183
+ .p_read11(trunc_ln58_55_reg_3996),
184
+ .p_read12(trunc_ln58_56_reg_4001),
185
+ .p_read13(trunc_ln58_57_reg_4006),
186
+ .p_read14(trunc_ln58_58_reg_4011),
187
+ .p_read15(trunc_ln58_59_reg_4016),
188
+ .p_read16(trunc_ln58_60_reg_4021),
189
+ .p_read17(trunc_ln58_61_reg_4026),
190
+ .p_read18(trunc_ln58_62_reg_4031),
191
+ .p_read19(trunc_ln58_63_reg_4036),
192
+ .p_read20(trunc_ln58_64_reg_4041),
193
+ .p_read21(trunc_ln58_65_reg_4046),
194
+ .p_read22(trunc_ln58_66_reg_4051),
195
+ .p_read23(trunc_ln58_67_reg_4056),
196
+ .p_read24(trunc_ln58_68_reg_4061),
197
+ .p_read25(trunc_ln58_69_reg_4066),
198
+ .p_read26(trunc_ln58_70_reg_4071),
199
+ .p_read27(trunc_ln58_71_reg_4076),
200
+ .p_read28(trunc_ln58_72_reg_4081),
201
+ .p_read29(trunc_ln58_73_reg_4086),
202
+ .p_read30(trunc_ln58_74_reg_4091),
203
+ .p_read31(trunc_ln58_75_reg_4096),
204
+ .p_read32(trunc_ln58_76_reg_4101),
205
+ .p_read33(trunc_ln58_77_reg_4106),
206
+ .p_read34(trunc_ln58_78_reg_4111),
207
+ .p_read35(trunc_ln58_79_reg_4116),
208
+ .p_read36(trunc_ln58_80_reg_4121),
209
+ .p_read37(trunc_ln58_81_reg_4126),
210
+ .p_read38(trunc_ln58_82_reg_4131),
211
+ .p_read39(trunc_ln58_83_reg_4136),
212
+ .p_read40(trunc_ln58_84_reg_4141),
213
+ .p_read41(trunc_ln58_85_reg_4146),
214
+ .p_read42(trunc_ln58_86_reg_4151),
215
+ .p_read43(trunc_ln58_87_reg_4156),
216
+ .p_read44(trunc_ln58_88_reg_4161),
217
+ .p_read45(trunc_ln58_89_reg_4166),
218
+ .p_read46(trunc_ln58_90_reg_4171),
219
+ .p_read47(trunc_ln58_91_reg_4176),
220
+ .p_read48(trunc_ln58_92_reg_4181),
221
+ .p_read49(trunc_ln58_93_reg_4186),
222
+ .p_read50(trunc_ln58_94_reg_4191),
223
+ .p_read51(trunc_ln58_95_reg_4196),
224
+ .p_read52(trunc_ln58_96_reg_4201),
225
+ .p_read53(trunc_ln58_97_reg_4206),
226
+ .p_read54(trunc_ln58_98_reg_4211),
227
+ .p_read55(trunc_ln58_99_reg_4216),
228
+ .p_read56(trunc_ln58_100_reg_4221),
229
+ .p_read57(trunc_ln58_101_reg_4226),
230
+ .p_read58(trunc_ln58_102_reg_4231),
231
+ .p_read59(trunc_ln58_103_reg_4236),
232
+ .p_read60(trunc_ln58_104_reg_4241),
233
+ .p_read61(trunc_ln58_105_reg_4246),
234
+ .p_read62(trunc_ln58_106_reg_4251),
235
+ .p_read63(trunc_ln58_107_reg_4256),
236
+ .layer19_out_din(grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_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_1718_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_3216_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_1718_ap_start_reg <= 1'b0;
266
+ end else begin
267
+ if (((1'b0 == ap_block_state2_ignore_call67) & (icmp_ln52_fu_3216_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_1718_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_1718_ap_ready == 1'b1)) begin
270
+ grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_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_1708 <= 7'd0;
290
+ end else if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_3216_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
291
+ indvar_flatten_fu_1708 <= add_ln52_fu_3222_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_4221 <= {{layer51_out_dout[911:896]}};
298
+ trunc_ln58_101_reg_4226 <= {{layer51_out_dout[927:912]}};
299
+ trunc_ln58_102_reg_4231 <= {{layer51_out_dout[943:928]}};
300
+ trunc_ln58_103_reg_4236 <= {{layer51_out_dout[959:944]}};
301
+ trunc_ln58_104_reg_4241 <= {{layer51_out_dout[975:960]}};
302
+ trunc_ln58_105_reg_4246 <= {{layer51_out_dout[991:976]}};
303
+ trunc_ln58_106_reg_4251 <= {{layer51_out_dout[1007:992]}};
304
+ trunc_ln58_107_reg_4256 <= {{layer51_out_dout[1023:1008]}};
305
+ trunc_ln58_46_reg_3951 <= {{layer51_out_dout[47:32]}};
306
+ trunc_ln58_47_reg_3956 <= {{layer51_out_dout[63:48]}};
307
+ trunc_ln58_48_reg_3961 <= {{layer51_out_dout[79:64]}};
308
+ trunc_ln58_49_reg_3966 <= {{layer51_out_dout[95:80]}};
309
+ trunc_ln58_50_reg_3971 <= {{layer51_out_dout[111:96]}};
310
+ trunc_ln58_51_reg_3976 <= {{layer51_out_dout[127:112]}};
311
+ trunc_ln58_52_reg_3981 <= {{layer51_out_dout[143:128]}};
312
+ trunc_ln58_53_reg_3986 <= {{layer51_out_dout[159:144]}};
313
+ trunc_ln58_54_reg_3991 <= {{layer51_out_dout[175:160]}};
314
+ trunc_ln58_55_reg_3996 <= {{layer51_out_dout[191:176]}};
315
+ trunc_ln58_56_reg_4001 <= {{layer51_out_dout[207:192]}};
316
+ trunc_ln58_57_reg_4006 <= {{layer51_out_dout[223:208]}};
317
+ trunc_ln58_58_reg_4011 <= {{layer51_out_dout[239:224]}};
318
+ trunc_ln58_59_reg_4016 <= {{layer51_out_dout[255:240]}};
319
+ trunc_ln58_60_reg_4021 <= {{layer51_out_dout[271:256]}};
320
+ trunc_ln58_61_reg_4026 <= {{layer51_out_dout[287:272]}};
321
+ trunc_ln58_62_reg_4031 <= {{layer51_out_dout[303:288]}};
322
+ trunc_ln58_63_reg_4036 <= {{layer51_out_dout[319:304]}};
323
+ trunc_ln58_64_reg_4041 <= {{layer51_out_dout[335:320]}};
324
+ trunc_ln58_65_reg_4046 <= {{layer51_out_dout[351:336]}};
325
+ trunc_ln58_66_reg_4051 <= {{layer51_out_dout[367:352]}};
326
+ trunc_ln58_67_reg_4056 <= {{layer51_out_dout[383:368]}};
327
+ trunc_ln58_68_reg_4061 <= {{layer51_out_dout[399:384]}};
328
+ trunc_ln58_69_reg_4066 <= {{layer51_out_dout[415:400]}};
329
+ trunc_ln58_70_reg_4071 <= {{layer51_out_dout[431:416]}};
330
+ trunc_ln58_71_reg_4076 <= {{layer51_out_dout[447:432]}};
331
+ trunc_ln58_72_reg_4081 <= {{layer51_out_dout[463:448]}};
332
+ trunc_ln58_73_reg_4086 <= {{layer51_out_dout[479:464]}};
333
+ trunc_ln58_74_reg_4091 <= {{layer51_out_dout[495:480]}};
334
+ trunc_ln58_75_reg_4096 <= {{layer51_out_dout[511:496]}};
335
+ trunc_ln58_76_reg_4101 <= {{layer51_out_dout[527:512]}};
336
+ trunc_ln58_77_reg_4106 <= {{layer51_out_dout[543:528]}};
337
+ trunc_ln58_78_reg_4111 <= {{layer51_out_dout[559:544]}};
338
+ trunc_ln58_79_reg_4116 <= {{layer51_out_dout[575:560]}};
339
+ trunc_ln58_80_reg_4121 <= {{layer51_out_dout[591:576]}};
340
+ trunc_ln58_81_reg_4126 <= {{layer51_out_dout[607:592]}};
341
+ trunc_ln58_82_reg_4131 <= {{layer51_out_dout[623:608]}};
342
+ trunc_ln58_83_reg_4136 <= {{layer51_out_dout[639:624]}};
343
+ trunc_ln58_84_reg_4141 <= {{layer51_out_dout[655:640]}};
344
+ trunc_ln58_85_reg_4146 <= {{layer51_out_dout[671:656]}};
345
+ trunc_ln58_86_reg_4151 <= {{layer51_out_dout[687:672]}};
346
+ trunc_ln58_87_reg_4156 <= {{layer51_out_dout[703:688]}};
347
+ trunc_ln58_88_reg_4161 <= {{layer51_out_dout[719:704]}};
348
+ trunc_ln58_89_reg_4166 <= {{layer51_out_dout[735:720]}};
349
+ trunc_ln58_90_reg_4171 <= {{layer51_out_dout[751:736]}};
350
+ trunc_ln58_91_reg_4176 <= {{layer51_out_dout[767:752]}};
351
+ trunc_ln58_92_reg_4181 <= {{layer51_out_dout[783:768]}};
352
+ trunc_ln58_93_reg_4186 <= {{layer51_out_dout[799:784]}};
353
+ trunc_ln58_94_reg_4191 <= {{layer51_out_dout[815:800]}};
354
+ trunc_ln58_95_reg_4196 <= {{layer51_out_dout[831:816]}};
355
+ trunc_ln58_96_reg_4201 <= {{layer51_out_dout[847:832]}};
356
+ trunc_ln58_97_reg_4206 <= {{layer51_out_dout[863:848]}};
357
+ trunc_ln58_98_reg_4211 <= {{layer51_out_dout[879:864]}};
358
+ trunc_ln58_99_reg_4216 <= {{layer51_out_dout[895:880]}};
359
+ trunc_ln58_reg_3941 <= trunc_ln58_fu_3228_p1;
360
+ trunc_ln58_s_reg_3946 <= {{layer51_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_1718_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_3216_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_3216_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_1718_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_3216_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
422
+ layer51_out_blk_n = layer51_out_empty_n;
423
+ end else begin
424
+ layer51_out_blk_n = 1'b1;
425
+ end
426
+ end
427
+
428
+ always @ (*) begin
429
+ if (((1'b0 == ap_block_state2) & (icmp_ln52_fu_3216_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin
430
+ layer51_out_read_local = 1'b1;
431
+ end else begin
432
+ layer51_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_3216_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_3216_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_1718_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_3222_p2 = (indvar_flatten_fu_1708 + 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_3216_p2 == 1'd0) & (layer51_out_empty_n == 1'b0));
497
+ end
498
+
499
+ always @ (*) begin
500
+ ap_block_state2_ignore_call67 = ((icmp_ln52_fu_3216_p2 == 1'd0) & (layer51_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_1718_ap_start = grp_compute_output_buffer_2d_array_array_ap_fixed_43_23_5_3_0_64u_config19_s_fu_1718_ap_start_reg;
506
+
507
+ assign icmp_ln52_fu_3216_p2 = ((indvar_flatten_fu_1708 == 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_1718_layer19_out_din;
510
+
511
+ assign layer51_out_read = layer51_out_read_local;
512
+
513
+ assign start_out = real_start;
514
+
515
+ assign trunc_ln58_fu_3228_p1 = layer51_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/syn/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/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_40_20_5_3_0_config4_mult_s.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config14_mult_s_outidx_5_ROM_dkF.dat ADDED
@@ -0,0 +1,576 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 0
2
+ 0
3
+ 0
4
+ 0
5
+ 0
6
+ 0
7
+ 0
8
+ 0
9
+ 0
10
+ 0
11
+ 0
12
+ 0
13
+ 0
14
+ 0
15
+ 0
16
+ 0
17
+ 0
18
+ 0
19
+ 0
20
+ 0
21
+ 0
22
+ 0
23
+ 0
24
+ 0
25
+ 0
26
+ 0
27
+ 0
28
+ 0
29
+ 0
30
+ 0
31
+ 0
32
+ 0
33
+ 0
34
+ 0
35
+ 0
36
+ 0
37
+ 0
38
+ 0
39
+ 0
40
+ 0
41
+ 0
42
+ 0
43
+ 0
44
+ 0
45
+ 0
46
+ 0
47
+ 0
48
+ 0
49
+ 0
50
+ 0
51
+ 0
52
+ 0
53
+ 0
54
+ 0
55
+ 0
56
+ 0
57
+ 0
58
+ 0
59
+ 0
60
+ 0
61
+ 0
62
+ 0
63
+ 0
64
+ 0
65
+ 0
66
+ 0
67
+ 0
68
+ 0
69
+ 0
70
+ 0
71
+ 0
72
+ 0
73
+ 0
74
+ 0
75
+ 0
76
+ 0
77
+ 0
78
+ 0
79
+ 0
80
+ 0
81
+ 0
82
+ 0
83
+ 0
84
+ 0
85
+ 0
86
+ 0
87
+ 0
88
+ 0
89
+ 0
90
+ 0
91
+ 0
92
+ 0
93
+ 0
94
+ 0
95
+ 0
96
+ 0
97
+ 0
98
+ 0
99
+ 0
100
+ 0
101
+ 0
102
+ 0
103
+ 0
104
+ 0
105
+ 0
106
+ 0
107
+ 0
108
+ 0
109
+ 0
110
+ 0
111
+ 0
112
+ 0
113
+ 0
114
+ 0
115
+ 0
116
+ 0
117
+ 0
118
+ 0
119
+ 0
120
+ 0
121
+ 0
122
+ 0
123
+ 0
124
+ 0
125
+ 0
126
+ 0
127
+ 0
128
+ 0
129
+ 0
130
+ 0
131
+ 0
132
+ 0
133
+ 0
134
+ 0
135
+ 0
136
+ 0
137
+ 0
138
+ 0
139
+ 0
140
+ 0
141
+ 0
142
+ 0
143
+ 0
144
+ 0
145
+ 0
146
+ 0
147
+ 0
148
+ 0
149
+ 0
150
+ 0
151
+ 0
152
+ 0
153
+ 0
154
+ 0
155
+ 0
156
+ 0
157
+ 0
158
+ 0
159
+ 0
160
+ 0
161
+ 0
162
+ 0
163
+ 0
164
+ 0
165
+ 0
166
+ 0
167
+ 0
168
+ 0
169
+ 0
170
+ 0
171
+ 0
172
+ 0
173
+ 0
174
+ 0
175
+ 0
176
+ 0
177
+ 0
178
+ 0
179
+ 0
180
+ 0
181
+ 0
182
+ 0
183
+ 0
184
+ 0
185
+ 0
186
+ 0
187
+ 0
188
+ 0
189
+ 0
190
+ 0
191
+ 0
192
+ 0
193
+ 0
194
+ 0
195
+ 0
196
+ 0
197
+ 0
198
+ 0
199
+ 0
200
+ 0
201
+ 0
202
+ 0
203
+ 0
204
+ 0
205
+ 0
206
+ 0
207
+ 0
208
+ 0
209
+ 0
210
+ 0
211
+ 0
212
+ 0
213
+ 0
214
+ 0
215
+ 0
216
+ 0
217
+ 0
218
+ 0
219
+ 0
220
+ 0
221
+ 0
222
+ 0
223
+ 0
224
+ 0
225
+ 0
226
+ 0
227
+ 0
228
+ 0
229
+ 0
230
+ 0
231
+ 0
232
+ 0
233
+ 0
234
+ 0
235
+ 0
236
+ 0
237
+ 0
238
+ 0
239
+ 0
240
+ 0
241
+ 0
242
+ 0
243
+ 0
244
+ 0
245
+ 0
246
+ 0
247
+ 0
248
+ 0
249
+ 0
250
+ 0
251
+ 0
252
+ 0
253
+ 0
254
+ 0
255
+ 0
256
+ 0
257
+ 0
258
+ 0
259
+ 0
260
+ 0
261
+ 0
262
+ 0
263
+ 0
264
+ 0
265
+ 0
266
+ 0
267
+ 0
268
+ 0
269
+ 0
270
+ 0
271
+ 0
272
+ 0
273
+ 0
274
+ 0
275
+ 0
276
+ 0
277
+ 0
278
+ 0
279
+ 0
280
+ 0
281
+ 0
282
+ 0
283
+ 0
284
+ 0
285
+ 0
286
+ 0
287
+ 0
288
+ 0
289
+ 1
290
+ 1
291
+ 1
292
+ 1
293
+ 1
294
+ 1
295
+ 1
296
+ 1
297
+ 1
298
+ 1
299
+ 1
300
+ 1
301
+ 1
302
+ 1
303
+ 1
304
+ 1
305
+ 1
306
+ 1
307
+ 1
308
+ 1
309
+ 1
310
+ 1
311
+ 1
312
+ 1
313
+ 1
314
+ 1
315
+ 1
316
+ 1
317
+ 1
318
+ 1
319
+ 1
320
+ 1
321
+ 1
322
+ 1
323
+ 1
324
+ 1
325
+ 1
326
+ 1
327
+ 1
328
+ 1
329
+ 1
330
+ 1
331
+ 1
332
+ 1
333
+ 1
334
+ 1
335
+ 1
336
+ 1
337
+ 1
338
+ 1
339
+ 1
340
+ 1
341
+ 1
342
+ 1
343
+ 1
344
+ 1
345
+ 1
346
+ 1
347
+ 1
348
+ 1
349
+ 1
350
+ 1
351
+ 1
352
+ 1
353
+ 1
354
+ 1
355
+ 1
356
+ 1
357
+ 1
358
+ 1
359
+ 1
360
+ 1
361
+ 1
362
+ 1
363
+ 1
364
+ 1
365
+ 1
366
+ 1
367
+ 1
368
+ 1
369
+ 1
370
+ 1
371
+ 1
372
+ 1
373
+ 1
374
+ 1
375
+ 1
376
+ 1
377
+ 1
378
+ 1
379
+ 1
380
+ 1
381
+ 1
382
+ 1
383
+ 1
384
+ 1
385
+ 1
386
+ 1
387
+ 1
388
+ 1
389
+ 1
390
+ 1
391
+ 1
392
+ 1
393
+ 1
394
+ 1
395
+ 1
396
+ 1
397
+ 1
398
+ 1
399
+ 1
400
+ 1
401
+ 1
402
+ 1
403
+ 1
404
+ 1
405
+ 1
406
+ 1
407
+ 1
408
+ 1
409
+ 1
410
+ 1
411
+ 1
412
+ 1
413
+ 1
414
+ 1
415
+ 1
416
+ 1
417
+ 1
418
+ 1
419
+ 1
420
+ 1
421
+ 1
422
+ 1
423
+ 1
424
+ 1
425
+ 1
426
+ 1
427
+ 1
428
+ 1
429
+ 1
430
+ 1
431
+ 1
432
+ 1
433
+ 1
434
+ 1
435
+ 1
436
+ 1
437
+ 1
438
+ 1
439
+ 1
440
+ 1
441
+ 1
442
+ 1
443
+ 1
444
+ 1
445
+ 1
446
+ 1
447
+ 1
448
+ 1
449
+ 1
450
+ 1
451
+ 1
452
+ 1
453
+ 1
454
+ 1
455
+ 1
456
+ 1
457
+ 1
458
+ 1
459
+ 1
460
+ 1
461
+ 1
462
+ 1
463
+ 1
464
+ 1
465
+ 1
466
+ 1
467
+ 1
468
+ 1
469
+ 1
470
+ 1
471
+ 1
472
+ 1
473
+ 1
474
+ 1
475
+ 1
476
+ 1
477
+ 1
478
+ 1
479
+ 1
480
+ 1
481
+ 1
482
+ 1
483
+ 1
484
+ 1
485
+ 1
486
+ 1
487
+ 1
488
+ 1
489
+ 1
490
+ 1
491
+ 1
492
+ 1
493
+ 1
494
+ 1
495
+ 1
496
+ 1
497
+ 1
498
+ 1
499
+ 1
500
+ 1
501
+ 1
502
+ 1
503
+ 1
504
+ 1
505
+ 1
506
+ 1
507
+ 1
508
+ 1
509
+ 1
510
+ 1
511
+ 1
512
+ 1
513
+ 1
514
+ 1
515
+ 1
516
+ 1
517
+ 1
518
+ 1
519
+ 1
520
+ 1
521
+ 1
522
+ 1
523
+ 1
524
+ 1
525
+ 1
526
+ 1
527
+ 1
528
+ 1
529
+ 1
530
+ 1
531
+ 1
532
+ 1
533
+ 1
534
+ 1
535
+ 1
536
+ 1
537
+ 1
538
+ 1
539
+ 1
540
+ 1
541
+ 1
542
+ 1
543
+ 1
544
+ 1
545
+ 1
546
+ 1
547
+ 1
548
+ 1
549
+ 1
550
+ 1
551
+ 1
552
+ 1
553
+ 1
554
+ 1
555
+ 1
556
+ 1
557
+ 1
558
+ 1
559
+ 1
560
+ 1
561
+ 1
562
+ 1
563
+ 1
564
+ 1
565
+ 1
566
+ 1
567
+ 1
568
+ 1
569
+ 1
570
+ 1
571
+ 1
572
+ 1
573
+ 1
574
+ 1
575
+ 1
576
+ 1
myproject_prj/solution1/syn/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/syn/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/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config19_mult_s_outidx_7_ROM_g0b.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_config19_mult_s_outidx_7_ROM_g0b (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 1;
12
+ parameter AddressWidth = 11;
13
+ parameter AddressRange = 1152;
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_config19_mult_s_outidx_7_ROM_g0b.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/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config31_mult_s.v ADDED
The diff for this file is too large to render. See raw diff
 
myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_gt_nin_rem0_ap_fixed_ap_fixed_config37_mult_s_w37_ROM_NP_BRoic.dat ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 69B0076FF17FFC9
2
+ 6B101EAFFF7011C
3
+ 04C01C500D001F1
4
+ 70800130026FFCC
5
+ 02B008E0006FFAF
6
+ 625FF7AFF36FF62
7
+ 059FFE6006D001E
8
+ 01B002CFFD40227
9
+ 03EFF90FFDD00B5
10
+ 0F20172007CFF90
11
+ 7E1012F0118015F
12
+ 095FF9B00D200EB
13
+ 7B6FFEBFFBAFEAF
14
+ 61AFF02FFC0FEFF
15
+ 7A7FF9100390091
16
+ 773FF42FFA2005C
17
+ 77E0059FF4AFEE1
18
+ 06301FAFFF9FDAC
19
+ 734FFBF018D021E
20
+ 7BAFF560053FEFD
21
+ 7E900ABFF6AFF3C
22
+ 7EA0017FF99FD57
23
+ 020FFE1007B0017
24
+ 7DDFF53FF6A0253
25
+ 71D01350037008C
26
+ 61F00F90064012D
27
+ 0E000C9009CFFA1
28
+ 7EC0162010B0047
29
+ 7F8FEB7FFCFFF4A
30
+ 562FED9FFE6FFDE
31
+ 06800700023FFFB
32
+ 06B00E5FF380023
33
+ 071006B00C300C0
34
+ 090000F010CFFAA
35
+ 087FF53010CFF0F
36
+ 223007B0191016C
37
+ 75AFF180023FF05
38
+ 5A3FDC6008CFFAA
39
+ 017005FFF9300BB
40
+ 016FFCAFF12FEC4
41
+ 7BC00D20022FF04
42
+ 00F01020043FD67
43
+ 7BFFE5A012F0013
44
+ 09101280122FF29
45
+ 7DFFF15FFBFFF91
46
+ 6F3FEE20013FE44
47
+ 7E7001AFFD30099
48
+ 0910049FF4700E7
49
+ 6E3FF5AFF37FFE0
50
+ 6E5FE19007F0186
51
+ 151027F0154005E
52
+ 73BFF440024000D
53
+ 7F8FFA5FFEC0064
54
+ 671FCAFFEE90049
55
+ 06B0091006EFF62
56
+ 13E0247FEC9FFBB
57
+ 052FE63FFEA0085
58
+ 112FD61010E0027
59
+ 0F300DB016C0031
60
+ 0CBFDCC005200E9
61
+ 02E00A7FF6DFFA3
62
+ 603FD13FF60FFAF
63
+ 79400FD00150040
64
+ 0BB0188FEA7FED3
65
+ 794FF71FF5AFF7F
66
+ 0A1FE780059FEF4
67
+ 005FFE801A300F1
68
+ 778FE920001FF74
69
+ 7A9FFAEFFD0005C
70
+ 78BFD7CFEDEFF4A
71
+ 07000890033003B
72
+ 13F01F7FF630098
73
+ 060FFE50061FF41
74
+ 7EB007BFFD60014
75
+ 02500C600ACFF92
76
+ 07EFFC7FFA3FFBA
77
+ 7C1017EFF7A0006
78
+ 7F2FE94FFB70015
79
+ 7B0FF76FFAD0052
80
+ 7B9FFAE01020006
81
+ 092FFE0003FFFBE
82
+ 01500B6FFF40055
83
+ 7DF00A0007CFFBA
84
+ 08EFFC4FF980021
85
+ 7A801CEFF170044
86
+ 005FF39FFF6FFD0
87
+ 7EEFFEFFFF900AB
88
+ 790002F0047003C
89
+ 06FFFBA0069FF68
90
+ 7FF0040006E001F
91
+ 0050061FFA8FFBB
92
+ 077FF55FFF5FFC6
93
+ 7590259FE8D004A
94
+ 01EFEDB0037FFD3
95
+ 7A6FFA800070072
96
+ 7DDFFAB0020FFD2
97
+ 0B2FF71FFE4FFB3
98
+ 03A00BCFF6B008C
99
+ 03300AB00E6FFC8
100
+ 0CBFFABFFD6FFFA
101
+ 025006BFFE00026
102
+ 7E40019FF9A001F
103
+ 7B70062001100A5
104
+ 781001E01880050
105
+ 0B2FFC3FFFDFFD8
106
+ 03D012CFF6700B5
107
+ 7DE00D60099FFDB
108
+ 0C3FFA2FFAC0092
109
+ 7FD00A4FF74004C
110
+ 0470088FF9AFFF6
111
+ 7D200C5004E00EF
112
+ 77900CA005A0077
113
+ 0ADFF670010FFA0
114
+ 02600A3FFF8007E
115
+ 02D0044FFAFFFBF
116
+ 0C8FF9BFFFFFFF3
117
+ 7DC00C6FF420059
118
+ 019FFF6FFDEFFE6
119
+ 7A90043007900AB
120
+ 7BFFFE200990025
121
+ 076FFBB001CFF3C
122
+ 022000AFFBD0002
123
+ 05B008D019EFF8A
124
+ 09F0028FFDCFFB4
125
+ 03C00B2007CFFCA
126
+ 7A0FF49FF3F0069
127
+ 7890033003E0067
128
+ 771FF9D019D0012
129
+ 0B4FFE40023FFA5
130
+ 042008CFFC90047
131
+ 02F00D40146FF7C
132
+ 0C4FFF0FFF60042
133
+ 7FA00A6000D0020
134
+ 7D8FFACFF59003E
135
+ 7D400B5006A00B7
136
+ 79E003100C60054
137
+ 097FFB80049FF48
138
+ 01B00350025000D
139
+ 05F00190090FF8F
140
+ 08E0037002AFFCB
141
+ 7EB008CFFB80024
142
+ 7DCFECBFF9A0023
143
+ 7980059007E006F
144
+ 7B6FF6E00F4FFEB
myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_36_16_5_3_0_config58_mult_s.v ADDED
@@ -0,0 +1,663 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_464_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_247;
60
+ reg [15:0] data_0_val4_phi_reg_260;
61
+ reg [15:0] data_1_val5_phi_reg_273;
62
+ reg [15:0] data_2_val6_phi_reg_286;
63
+ reg [15:0] data_3_val7_phi_reg_299;
64
+ reg [15:0] data_4_val8_phi_reg_312;
65
+ reg [15:0] data_5_val9_phi_reg_325;
66
+ reg [15:0] data_6_val10_phi_reg_338;
67
+ reg [15:0] data_7_val11_phi_reg_351;
68
+ reg [29:0] res_02_reg_364;
69
+ wire [15:0] a_fu_378_p19;
70
+ reg signed [15:0] a_reg_488;
71
+ wire ap_block_pp0_stage0_11001;
72
+ wire [11:0] w_fu_418_p19;
73
+ reg signed [11:0] w_reg_493;
74
+ wire [2:0] w_index_fu_458_p2;
75
+ reg [2:0] w_index_reg_498;
76
+ reg [0:0] icmp_ln46_reg_503;
77
+ wire signed [29:0] grp_fu_479_p3;
78
+ reg [0:0] ap_phi_mux_do_init_phi_fu_131_p6;
79
+ wire ap_loop_init;
80
+ wire ap_block_pp0_stage0;
81
+ reg [2:0] ap_phi_mux_phi_ln46_phi_fu_250_p6;
82
+ reg [15:0] ap_phi_mux_data_0_val4_phi_phi_fu_264_p4;
83
+ wire [15:0] ap_phi_reg_pp0_iter0_data_0_val4_phi_reg_260;
84
+ reg [15:0] ap_phi_mux_data_1_val5_phi_phi_fu_277_p4;
85
+ wire [15:0] ap_phi_reg_pp0_iter0_data_1_val5_phi_reg_273;
86
+ reg [15:0] ap_phi_mux_data_2_val6_phi_phi_fu_290_p4;
87
+ wire [15:0] ap_phi_reg_pp0_iter0_data_2_val6_phi_reg_286;
88
+ reg [15:0] ap_phi_mux_data_3_val7_phi_phi_fu_303_p4;
89
+ wire [15:0] ap_phi_reg_pp0_iter0_data_3_val7_phi_reg_299;
90
+ reg [15:0] ap_phi_mux_data_4_val8_phi_phi_fu_316_p4;
91
+ wire [15:0] ap_phi_reg_pp0_iter0_data_4_val8_phi_reg_312;
92
+ reg [15:0] ap_phi_mux_data_5_val9_phi_phi_fu_329_p4;
93
+ wire [15:0] ap_phi_reg_pp0_iter0_data_5_val9_phi_reg_325;
94
+ reg [15:0] ap_phi_mux_data_6_val10_phi_phi_fu_342_p4;
95
+ wire [15:0] ap_phi_reg_pp0_iter0_data_6_val10_phi_reg_338;
96
+ reg [15:0] ap_phi_mux_data_7_val11_phi_phi_fu_355_p4;
97
+ wire [15:0] ap_phi_reg_pp0_iter0_data_7_val11_phi_reg_351;
98
+ reg signed [29:0] ap_phi_mux_res_02_phi_fu_368_p6;
99
+ reg ap_loop_init_pp0_iter1_reg;
100
+ wire [15:0] a_fu_378_p17;
101
+ wire [11:0] w_fu_418_p17;
102
+ reg [29:0] ap_return_preg;
103
+ reg ap_done_reg;
104
+ wire ap_continue_int;
105
+ reg ap_done_int;
106
+ reg ap_loop_exit_ready_pp0_iter1_reg;
107
+ reg [0:0] ap_NS_fsm;
108
+ reg ap_idle_pp0_0to0;
109
+ reg ap_reset_idle_pp0;
110
+ wire ap_enable_pp0;
111
+ wire ap_start_int;
112
+ wire ap_ready_sig;
113
+ wire ap_done_sig;
114
+ reg ap_condition_101;
115
+ reg ap_condition_107;
116
+ wire [2:0] a_fu_378_p1;
117
+ wire [2:0] a_fu_378_p3;
118
+ wire [2:0] a_fu_378_p5;
119
+ wire [2:0] a_fu_378_p7;
120
+ wire signed [2:0] a_fu_378_p9;
121
+ wire signed [2:0] a_fu_378_p11;
122
+ wire signed [2:0] a_fu_378_p13;
123
+ wire signed [2:0] a_fu_378_p15;
124
+ wire [2:0] w_fu_418_p1;
125
+ wire [2:0] w_fu_418_p3;
126
+ wire [2:0] w_fu_418_p5;
127
+ wire [2:0] w_fu_418_p7;
128
+ wire signed [2:0] w_fu_418_p9;
129
+ wire signed [2:0] w_fu_418_p11;
130
+ wire signed [2:0] w_fu_418_p13;
131
+ wire signed [2:0] w_fu_418_p15;
132
+ wire ap_ce_reg;
133
+
134
+ // power-on initialization
135
+ initial begin
136
+ #0 ap_CS_fsm = 1'd1;
137
+ #0 ap_enable_reg_pp0_iter1 = 1'b0;
138
+ #0 ap_return_preg = 30'd0;
139
+ #0 ap_done_reg = 1'b0;
140
+ end
141
+
142
+ (* dissolve_hierarchy = "yes" *) myproject_sparsemux_17_3_16_1_1 #(
143
+ .ID( 1 ),
144
+ .NUM_STAGE( 1 ),
145
+ .CASE0( 3'h0 ),
146
+ .din0_WIDTH( 16 ),
147
+ .CASE1( 3'h1 ),
148
+ .din1_WIDTH( 16 ),
149
+ .CASE2( 3'h2 ),
150
+ .din2_WIDTH( 16 ),
151
+ .CASE3( 3'h3 ),
152
+ .din3_WIDTH( 16 ),
153
+ .CASE4( 3'h4 ),
154
+ .din4_WIDTH( 16 ),
155
+ .CASE5( 3'h5 ),
156
+ .din5_WIDTH( 16 ),
157
+ .CASE6( 3'h6 ),
158
+ .din6_WIDTH( 16 ),
159
+ .CASE7( 3'h7 ),
160
+ .din7_WIDTH( 16 ),
161
+ .def_WIDTH( 16 ),
162
+ .sel_WIDTH( 3 ),
163
+ .dout_WIDTH( 16 ))
164
+ sparsemux_17_3_16_1_1_U8778(
165
+ .din0(ap_phi_mux_data_0_val4_phi_phi_fu_264_p4),
166
+ .din1(ap_phi_mux_data_1_val5_phi_phi_fu_277_p4),
167
+ .din2(ap_phi_mux_data_2_val6_phi_phi_fu_290_p4),
168
+ .din3(ap_phi_mux_data_3_val7_phi_phi_fu_303_p4),
169
+ .din4(ap_phi_mux_data_4_val8_phi_phi_fu_316_p4),
170
+ .din5(ap_phi_mux_data_5_val9_phi_phi_fu_329_p4),
171
+ .din6(ap_phi_mux_data_6_val10_phi_phi_fu_342_p4),
172
+ .din7(ap_phi_mux_data_7_val11_phi_phi_fu_355_p4),
173
+ .def(a_fu_378_p17),
174
+ .sel(ap_phi_mux_phi_ln46_phi_fu_250_p6),
175
+ .dout(a_fu_378_p19)
176
+ );
177
+
178
+ (* dissolve_hierarchy = "yes" *) myproject_sparsemux_17_3_12_1_1 #(
179
+ .ID( 1 ),
180
+ .NUM_STAGE( 1 ),
181
+ .CASE0( 3'h0 ),
182
+ .din0_WIDTH( 12 ),
183
+ .CASE1( 3'h1 ),
184
+ .din1_WIDTH( 12 ),
185
+ .CASE2( 3'h2 ),
186
+ .din2_WIDTH( 12 ),
187
+ .CASE3( 3'h3 ),
188
+ .din3_WIDTH( 12 ),
189
+ .CASE4( 3'h4 ),
190
+ .din4_WIDTH( 12 ),
191
+ .CASE5( 3'h5 ),
192
+ .din5_WIDTH( 12 ),
193
+ .CASE6( 3'h6 ),
194
+ .din6_WIDTH( 12 ),
195
+ .CASE7( 3'h7 ),
196
+ .din7_WIDTH( 12 ),
197
+ .def_WIDTH( 12 ),
198
+ .sel_WIDTH( 3 ),
199
+ .dout_WIDTH( 12 ))
200
+ sparsemux_17_3_12_1_1_U8779(
201
+ .din0(12'd3452),
202
+ .din1(12'd978),
203
+ .din2(12'd3298),
204
+ .din3(12'd3581),
205
+ .din4(12'd3649),
206
+ .din5(12'd624),
207
+ .din6(12'd3542),
208
+ .din7(12'd2852),
209
+ .def(w_fu_418_p17),
210
+ .sel(ap_phi_mux_phi_ln46_phi_fu_250_p6),
211
+ .dout(w_fu_418_p19)
212
+ );
213
+
214
+ myproject_mac_muladd_16s_12s_30s_30_1_1 #(
215
+ .ID( 1 ),
216
+ .NUM_STAGE( 1 ),
217
+ .din0_WIDTH( 16 ),
218
+ .din1_WIDTH( 12 ),
219
+ .din2_WIDTH( 30 ),
220
+ .dout_WIDTH( 30 ))
221
+ mac_muladd_16s_12s_30s_30_1_1_U8780(
222
+ .din0(a_reg_488),
223
+ .din1(w_reg_493),
224
+ .din2(ap_phi_mux_res_02_phi_fu_368_p6),
225
+ .dout(grp_fu_479_p3)
226
+ );
227
+
228
+ myproject_flow_control_loop_pipe_no_ap_cont flow_control_loop_pipe_no_ap_cont_U(
229
+ .ap_clk(ap_clk),
230
+ .ap_rst(ap_rst),
231
+ .ap_start(ap_start),
232
+ .ap_ready(ap_ready_sig),
233
+ .ap_done(ap_done_sig),
234
+ .ap_start_int(ap_start_int),
235
+ .ap_loop_init(ap_loop_init),
236
+ .ap_ready_int(ap_ready_int),
237
+ .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0),
238
+ .ap_loop_exit_done(ap_done_int),
239
+ .ap_continue_int(ap_continue_int),
240
+ .ap_done_int(ap_done_int)
241
+ );
242
+
243
+ always @ (posedge ap_clk) begin
244
+ if (ap_rst == 1'b1) begin
245
+ ap_CS_fsm <= ap_ST_fsm_pp0_stage0;
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_int == 1'b1)) begin
256
+ ap_done_reg <= 1'b0;
257
+ 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
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
+ ap_enable_reg_pp0_iter1 <= 1'b0;
266
+ end else begin
267
+ if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
268
+ ap_enable_reg_pp0_iter1 <= ap_start_int;
269
+ end
270
+ end
271
+ end
272
+
273
+ always @ (posedge ap_clk) begin
274
+ if (ap_rst == 1'b1) begin
275
+ ap_return_preg <= 30'd0;
276
+ end else begin
277
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_503 == 1'd1))) begin
278
+ ap_return_preg <= grp_fu_479_p3;
279
+ end
280
+ end
281
+ end
282
+
283
+ always @ (posedge ap_clk) begin
284
+ if ((1'b1 == ap_CS_fsm_pp0_stage0)) begin
285
+ if (((ap_loop_exit_ready == 1'b0) & (1'b0 == ap_block_pp0_stage0_subdone))) begin
286
+ ap_loop_exit_ready_pp0_iter1_reg <= 1'b0;
287
+ end else if ((1'b0 == ap_block_pp0_stage0_11001)) begin
288
+ ap_loop_exit_ready_pp0_iter1_reg <= ap_loop_exit_ready;
289
+ end
290
+ end
291
+ end
292
+
293
+ always @ (posedge ap_clk) begin
294
+ if ((1'b1 == ap_condition_101)) begin
295
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
296
+ data_0_val4_phi_reg_260 <= data_0_val4_phi_reg_260;
297
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
298
+ data_0_val4_phi_reg_260 <= data_0_val;
299
+ end else if (~(icmp_ln46_fu_464_p2 == 1'd1)) begin
300
+ data_0_val4_phi_reg_260 <= ap_phi_reg_pp0_iter0_data_0_val4_phi_reg_260;
301
+ end
302
+ end
303
+ end
304
+
305
+ always @ (posedge ap_clk) begin
306
+ if ((1'b1 == ap_condition_101)) begin
307
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
308
+ data_1_val5_phi_reg_273 <= data_1_val5_phi_reg_273;
309
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
310
+ data_1_val5_phi_reg_273 <= data_1_val;
311
+ end else if (~(icmp_ln46_fu_464_p2 == 1'd1)) begin
312
+ data_1_val5_phi_reg_273 <= ap_phi_reg_pp0_iter0_data_1_val5_phi_reg_273;
313
+ end
314
+ end
315
+ end
316
+
317
+ always @ (posedge ap_clk) begin
318
+ if ((1'b1 == ap_condition_101)) begin
319
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
320
+ data_2_val6_phi_reg_286 <= data_2_val6_phi_reg_286;
321
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
322
+ data_2_val6_phi_reg_286 <= data_2_val;
323
+ end else if (~(icmp_ln46_fu_464_p2 == 1'd1)) begin
324
+ data_2_val6_phi_reg_286 <= ap_phi_reg_pp0_iter0_data_2_val6_phi_reg_286;
325
+ end
326
+ end
327
+ end
328
+
329
+ always @ (posedge ap_clk) begin
330
+ if ((1'b1 == ap_condition_101)) begin
331
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
332
+ data_3_val7_phi_reg_299 <= data_3_val7_phi_reg_299;
333
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
334
+ data_3_val7_phi_reg_299 <= data_3_val;
335
+ end else if (~(icmp_ln46_fu_464_p2 == 1'd1)) begin
336
+ data_3_val7_phi_reg_299 <= ap_phi_reg_pp0_iter0_data_3_val7_phi_reg_299;
337
+ end
338
+ end
339
+ end
340
+
341
+ always @ (posedge ap_clk) begin
342
+ if ((1'b1 == ap_condition_101)) begin
343
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
344
+ data_4_val8_phi_reg_312 <= data_4_val8_phi_reg_312;
345
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
346
+ data_4_val8_phi_reg_312 <= data_4_val;
347
+ end else if (~(icmp_ln46_fu_464_p2 == 1'd1)) begin
348
+ data_4_val8_phi_reg_312 <= ap_phi_reg_pp0_iter0_data_4_val8_phi_reg_312;
349
+ end
350
+ end
351
+ end
352
+
353
+ always @ (posedge ap_clk) begin
354
+ if ((1'b1 == ap_condition_101)) begin
355
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
356
+ data_5_val9_phi_reg_325 <= data_5_val9_phi_reg_325;
357
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
358
+ data_5_val9_phi_reg_325 <= data_5_val;
359
+ end else if (~(icmp_ln46_fu_464_p2 == 1'd1)) begin
360
+ data_5_val9_phi_reg_325 <= ap_phi_reg_pp0_iter0_data_5_val9_phi_reg_325;
361
+ end
362
+ end
363
+ end
364
+
365
+ always @ (posedge ap_clk) begin
366
+ if ((1'b1 == ap_condition_101)) begin
367
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
368
+ data_6_val10_phi_reg_338 <= data_6_val10_phi_reg_338;
369
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
370
+ data_6_val10_phi_reg_338 <= data_6_val;
371
+ end else if (~(icmp_ln46_fu_464_p2 == 1'd1)) begin
372
+ data_6_val10_phi_reg_338 <= ap_phi_reg_pp0_iter0_data_6_val10_phi_reg_338;
373
+ end
374
+ end
375
+ end
376
+
377
+ always @ (posedge ap_clk) begin
378
+ if ((1'b1 == ap_condition_101)) begin
379
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
380
+ data_7_val11_phi_reg_351 <= data_7_val11_phi_reg_351;
381
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
382
+ data_7_val11_phi_reg_351 <= data_7_val;
383
+ end else if (~(icmp_ln46_fu_464_p2 == 1'd1)) begin
384
+ data_7_val11_phi_reg_351 <= ap_phi_reg_pp0_iter0_data_7_val11_phi_reg_351;
385
+ end
386
+ end
387
+ end
388
+
389
+ always @ (posedge ap_clk) begin
390
+ 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_503 == 1'd0))) begin
391
+ do_init_reg_128 <= 1'd0;
392
+ 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_503 == 1'd1)) | ((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init == 1'b1)))) begin
393
+ do_init_reg_128 <= 1'd1;
394
+ end
395
+ end
396
+
397
+ always @ (posedge ap_clk) begin
398
+ 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_503 == 1'd0))) begin
399
+ phi_ln46_reg_247 <= w_index_reg_498;
400
+ 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_503 == 1'd1)) | ((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init == 1'b1)))) begin
401
+ phi_ln46_reg_247 <= 3'd0;
402
+ end
403
+ end
404
+
405
+ always @ (posedge ap_clk) begin
406
+ if ((1'b1 == ap_condition_107)) begin
407
+ if ((icmp_ln46_reg_503 == 1'd1)) begin
408
+ res_02_reg_364 <= 30'd1073627136;
409
+ end else if ((icmp_ln46_reg_503 == 1'd0)) begin
410
+ res_02_reg_364 <= grp_fu_479_p3;
411
+ end
412
+ end
413
+ end
414
+
415
+ always @ (posedge ap_clk) begin
416
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
417
+ a_reg_488 <= a_fu_378_p19;
418
+ ap_loop_init_pp0_iter1_reg <= ap_loop_init;
419
+ icmp_ln46_reg_503 <= icmp_ln46_fu_464_p2;
420
+ w_reg_493 <= w_fu_418_p19;
421
+ end
422
+ end
423
+
424
+ always @ (posedge ap_clk) begin
425
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
426
+ w_index_reg_498 <= w_index_fu_458_p2;
427
+ end
428
+ end
429
+
430
+ always @ (*) begin
431
+ if (((icmp_ln46_fu_464_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
432
+ ap_condition_exit_pp0_iter0_stage0 = 1'b1;
433
+ end else begin
434
+ ap_condition_exit_pp0_iter0_stage0 = 1'b0;
435
+ end
436
+ end
437
+
438
+ always @ (*) begin
439
+ 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
440
+ ap_done_int = 1'b1;
441
+ end else begin
442
+ ap_done_int = ap_done_reg;
443
+ end
444
+ end
445
+
446
+ always @ (*) begin
447
+ if (((ap_start_int == 1'b0) & (ap_idle_pp0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
448
+ ap_idle = 1'b1;
449
+ end else begin
450
+ ap_idle = 1'b0;
451
+ end
452
+ end
453
+
454
+ always @ (*) begin
455
+ if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin
456
+ ap_idle_pp0 = 1'b1;
457
+ end else begin
458
+ ap_idle_pp0 = 1'b0;
459
+ end
460
+ end
461
+
462
+ always @ (*) begin
463
+ if ((ap_enable_reg_pp0_iter0 == 1'b0)) begin
464
+ ap_idle_pp0_0to0 = 1'b1;
465
+ end else begin
466
+ ap_idle_pp0_0to0 = 1'b0;
467
+ end
468
+ end
469
+
470
+ always @ (*) begin
471
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
472
+ ap_phi_mux_data_0_val4_phi_phi_fu_264_p4 = data_0_val4_phi_reg_260;
473
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
474
+ ap_phi_mux_data_0_val4_phi_phi_fu_264_p4 = data_0_val;
475
+ end else begin
476
+ ap_phi_mux_data_0_val4_phi_phi_fu_264_p4 = ap_phi_reg_pp0_iter0_data_0_val4_phi_reg_260;
477
+ end
478
+ end
479
+
480
+ always @ (*) begin
481
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
482
+ ap_phi_mux_data_1_val5_phi_phi_fu_277_p4 = data_1_val5_phi_reg_273;
483
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
484
+ ap_phi_mux_data_1_val5_phi_phi_fu_277_p4 = data_1_val;
485
+ end else begin
486
+ ap_phi_mux_data_1_val5_phi_phi_fu_277_p4 = ap_phi_reg_pp0_iter0_data_1_val5_phi_reg_273;
487
+ end
488
+ end
489
+
490
+ always @ (*) begin
491
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
492
+ ap_phi_mux_data_2_val6_phi_phi_fu_290_p4 = data_2_val6_phi_reg_286;
493
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
494
+ ap_phi_mux_data_2_val6_phi_phi_fu_290_p4 = data_2_val;
495
+ end else begin
496
+ ap_phi_mux_data_2_val6_phi_phi_fu_290_p4 = ap_phi_reg_pp0_iter0_data_2_val6_phi_reg_286;
497
+ end
498
+ end
499
+
500
+ always @ (*) begin
501
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
502
+ ap_phi_mux_data_3_val7_phi_phi_fu_303_p4 = data_3_val7_phi_reg_299;
503
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
504
+ ap_phi_mux_data_3_val7_phi_phi_fu_303_p4 = data_3_val;
505
+ end else begin
506
+ ap_phi_mux_data_3_val7_phi_phi_fu_303_p4 = ap_phi_reg_pp0_iter0_data_3_val7_phi_reg_299;
507
+ end
508
+ end
509
+
510
+ always @ (*) begin
511
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
512
+ ap_phi_mux_data_4_val8_phi_phi_fu_316_p4 = data_4_val8_phi_reg_312;
513
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
514
+ ap_phi_mux_data_4_val8_phi_phi_fu_316_p4 = data_4_val;
515
+ end else begin
516
+ ap_phi_mux_data_4_val8_phi_phi_fu_316_p4 = ap_phi_reg_pp0_iter0_data_4_val8_phi_reg_312;
517
+ end
518
+ end
519
+
520
+ always @ (*) begin
521
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
522
+ ap_phi_mux_data_5_val9_phi_phi_fu_329_p4 = data_5_val9_phi_reg_325;
523
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
524
+ ap_phi_mux_data_5_val9_phi_phi_fu_329_p4 = data_5_val;
525
+ end else begin
526
+ ap_phi_mux_data_5_val9_phi_phi_fu_329_p4 = ap_phi_reg_pp0_iter0_data_5_val9_phi_reg_325;
527
+ end
528
+ end
529
+
530
+ always @ (*) begin
531
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
532
+ ap_phi_mux_data_6_val10_phi_phi_fu_342_p4 = data_6_val10_phi_reg_338;
533
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
534
+ ap_phi_mux_data_6_val10_phi_phi_fu_342_p4 = data_6_val;
535
+ end else begin
536
+ ap_phi_mux_data_6_val10_phi_phi_fu_342_p4 = ap_phi_reg_pp0_iter0_data_6_val10_phi_reg_338;
537
+ end
538
+ end
539
+
540
+ always @ (*) begin
541
+ if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd0)) begin
542
+ ap_phi_mux_data_7_val11_phi_phi_fu_355_p4 = data_7_val11_phi_reg_351;
543
+ end else if ((ap_phi_mux_do_init_phi_fu_131_p6 == 1'd1)) begin
544
+ ap_phi_mux_data_7_val11_phi_phi_fu_355_p4 = data_7_val;
545
+ end else begin
546
+ ap_phi_mux_data_7_val11_phi_phi_fu_355_p4 = ap_phi_reg_pp0_iter0_data_7_val11_phi_reg_351;
547
+ end
548
+ end
549
+
550
+ always @ (*) begin
551
+ if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_503 == 1'd0))) begin
552
+ ap_phi_mux_do_init_phi_fu_131_p6 = 1'd0;
553
+ 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_503 == 1'd1)))) begin
554
+ ap_phi_mux_do_init_phi_fu_131_p6 = 1'd1;
555
+ end else begin
556
+ ap_phi_mux_do_init_phi_fu_131_p6 = do_init_reg_128;
557
+ end
558
+ end
559
+
560
+ always @ (*) begin
561
+ if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_503 == 1'd0))) begin
562
+ ap_phi_mux_phi_ln46_phi_fu_250_p6 = w_index_reg_498;
563
+ 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_503 == 1'd1)))) begin
564
+ ap_phi_mux_phi_ln46_phi_fu_250_p6 = 3'd0;
565
+ end else begin
566
+ ap_phi_mux_phi_ln46_phi_fu_250_p6 = phi_ln46_reg_247;
567
+ end
568
+ end
569
+
570
+ always @ (*) begin
571
+ if (((1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init_pp0_iter1_reg == 1'b1))) begin
572
+ ap_phi_mux_res_02_phi_fu_368_p6 = 30'd1073627136;
573
+ end else begin
574
+ ap_phi_mux_res_02_phi_fu_368_p6 = res_02_reg_364;
575
+ end
576
+ end
577
+
578
+ always @ (*) begin
579
+ if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
580
+ ap_ready_int = 1'b1;
581
+ end else begin
582
+ ap_ready_int = 1'b0;
583
+ end
584
+ end
585
+
586
+ always @ (*) begin
587
+ if (((ap_start_int == 1'b0) & (ap_idle_pp0_0to0 == 1'b1))) begin
588
+ ap_reset_idle_pp0 = 1'b1;
589
+ end else begin
590
+ ap_reset_idle_pp0 = 1'b0;
591
+ end
592
+ end
593
+
594
+ always @ (*) begin
595
+ if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0) & (icmp_ln46_reg_503 == 1'd1))) begin
596
+ ap_return = grp_fu_479_p3;
597
+ end else begin
598
+ ap_return = ap_return_preg;
599
+ end
600
+ end
601
+
602
+ always @ (*) begin
603
+ case (ap_CS_fsm)
604
+ ap_ST_fsm_pp0_stage0 : begin
605
+ ap_NS_fsm = ap_ST_fsm_pp0_stage0;
606
+ end
607
+ default : begin
608
+ ap_NS_fsm = 'bx;
609
+ end
610
+ endcase
611
+ end
612
+
613
+ assign a_fu_378_p17 = 'bx;
614
+
615
+ assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0];
616
+
617
+ assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1);
618
+
619
+ assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1);
620
+
621
+ assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1);
622
+
623
+ always @ (*) begin
624
+ ap_condition_101 = ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0));
625
+ end
626
+
627
+ always @ (*) begin
628
+ ap_condition_107 = ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0));
629
+ end
630
+
631
+ assign ap_done = ap_done_sig;
632
+
633
+ assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1);
634
+
635
+ assign ap_enable_reg_pp0_iter0 = ap_start_int;
636
+
637
+ assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0;
638
+
639
+ assign ap_phi_reg_pp0_iter0_data_0_val4_phi_reg_260 = 'bx;
640
+
641
+ assign ap_phi_reg_pp0_iter0_data_1_val5_phi_reg_273 = 'bx;
642
+
643
+ assign ap_phi_reg_pp0_iter0_data_2_val6_phi_reg_286 = 'bx;
644
+
645
+ assign ap_phi_reg_pp0_iter0_data_3_val7_phi_reg_299 = 'bx;
646
+
647
+ assign ap_phi_reg_pp0_iter0_data_4_val8_phi_reg_312 = 'bx;
648
+
649
+ assign ap_phi_reg_pp0_iter0_data_5_val9_phi_reg_325 = 'bx;
650
+
651
+ assign ap_phi_reg_pp0_iter0_data_6_val10_phi_reg_338 = 'bx;
652
+
653
+ assign ap_phi_reg_pp0_iter0_data_7_val11_phi_reg_351 = 'bx;
654
+
655
+ assign ap_ready = ap_ready_sig;
656
+
657
+ assign icmp_ln46_fu_464_p2 = ((ap_phi_mux_phi_ln46_phi_fu_250_p6 == 3'd7) ? 1'b1 : 1'b0);
658
+
659
+ assign w_fu_418_p17 = 'bx;
660
+
661
+ assign w_index_fu_458_p2 = (ap_phi_mux_phi_ln46_phi_fu_250_p6 + 3'd1);
662
+
663
+ endmodule //myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_36_16_5_3_0_config58_mult_s
myproject_prj/solution1/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_40_20_5_3_0_config7_mult_s_w7_ROMUhA.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_40_20_5_3_0_config7_mult_s_w7_ROMUhA (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 250;
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_40_20_5_3_0_config7_mult_s_w7_ROMUhA.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/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config12_mult_s_w12_Rceu.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_Rceu (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 1018;
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_config12_mult_s_w12_Rceu.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/syn/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/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config31_mult_s_w31_Rnbc.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_config31_mult_s_w31_Rnbc (
8
+ address0, ce0, q0,
9
+ reset, clk);
10
+
11
+ parameter DataWidth = 505;
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_config31_mult_s_w31_Rnbc.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/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config31_mult_s_w31_Rndc.dat ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 043FFE3FFC2005000C1FFE800D5FF5FFDE800420058004AFFA7FFF1000F0018
2
+ 01C003D000EFF95FFC6FFFBFFC9FF23000E0005FFAA0009FFD2FFED0014FF6C
3
+ 1C8FFECFFDF0059FFD70016FFBAFEF5007DFFCDFFD6FFF0FFC8FFC2FFB60086
4
+ 0DBFFC1FFE2FFC5005CFFF300B0FFF3FF4300B4006AFFCEFFFDFFFA000BFFAE
5
+ 063000EFFFCFFE9FFA4FFC2FFBCFF49FFDD00790009FFF3FFEFFFD8FFE50068
6
+ 01000030020000CFFD5FFFEFFE0FF9FFF2A0003FFDC0046FFB6FF85FFB400A8
7
+ 1FFFFEA0027FFFF0008FF920050FF83FFC9FFBFFFFFFFE7FFCF0052003F0054
8
+ 1D500130004FFC7FF69FFE60018006F00190040FF96FFE500350017000900BD
9
+ 1EA004800240014FFB70003FF5DFFD5FFB3FFE00006003E001AFFFF0047007D
10
+ 1FE00090025FF51FFDCFFF7FED601040048FFDDFECBFF9F00A7004AFFCDFFA5
11
+ 1AAFFED0049FFC4FF8CFFF6FFAB017201E0FFEFFFD6FFCC0006001FFFFEFFBD
12
+ 0EDFFC5FFC7FFDFFFA1FFEBFF98FF9D0039003400410010FFC2FFE1FFD10004
13
+ 0BBFFFAFFD8FFED002AFFBE0037FF9CFF4F008B006C002FFFDAFFEA000DFF25
14
+ 00200030039FFA5FFB40001FFA4FFC70047002A0038FF9100180030FFCBFF57
15
+ 1C300080014FFC6FFBEFFF2FF3900FE0168FFEFFFC6FFE10041000A0005000F
16
+ 1DCFF7BFFC20014000E00230061FF7BFFAC002A0035FFE2FFBBFFDEFFF40098
17
+ 03FFFEC0012FFC5006A0019007BFFFFFFD8005B007A0009001B00320046FF35
18
+ 0140041FFFEFFA5FFA20011FFDBFEE9FFA2FFF7FFC00005FFD7FFEC0000FF6A
19
+ 1EB00000006001CFF8A000D0038FFF4008FFFEA0028001300140011FFCD0048
20
+ 0DFFFA0FFDEFFA000ACFFE5013C0011004D00940037FFDA001AFFF80008FFD5
21
+ 06DFFFF0017FFACFFB5FFF6FFCDFFBE006300760006FFEBFFE9FFDC0004009A
22
+ 008FFFD0002002DFFF1FFD20017FF9AFFD3002EFFE10081FFCAFFAAFF87001D
23
+ 03EFFE70026FFEFFFE9FFC4001DFFD80015FF9C0024FFEEFFFE005A0013FFE6
24
+ 1EDFFF5FFDCFFC2FF3FFFE9FFF600AEFFE50034FFB3FFA8009E0034FFF7005A
25
+ 1F0006A002C0041FFAFFF91FF67FF8A007FFFE4FFF4003F002300070029FF4D
26
+ 1FF0022FFDAFF60FF88002FFFA200B6FF60FFE1FF88FFD7008C0020FFAC002F
27
+ 00EFFAE0031FF98FFDFFFD200530091FFC800260008FFD900130049FFF80023
28
+ 0B5FFBCFFC2FFA3FF7DFFF7FF86FFEB0063004C002B000FFFBEFFE5FFD2FFBF
29
+ 0A1FFFCFFDBFFEBFFEFFFDA0044FFBCFF7600A900800021FFF1FFF00009FF8B
30
+ 1E4FFEF0034FF8AFFE6000B0013FF8D000000320025FF8E0023004AFFB6FFBB
31
+ 0070024000E0038FFDA0008FF7F0055FF7D0011FFFDFFE10009FFDAFFA4FFBB
32
+ 1E6FF7AFFF7FFF80047FFFD006AFF95008F002DFFD8FFFBFFD4FFF00017FFE3
33
+ 188FFC6FFD60001FFD10054FFB700950058FFDEFFD9001B0004FFEEFF8900BD
34
+ 00300290015FF6FFF94FFFDFFDFFF0C004CFFF7FF95FFD3FFDFFFF0000AFF89
35
+ 1DCFFFDFFF1002AFFEBFFFD000D00B30022FFAFFFFEFFDC0044001CFFFC0043
36
+ 0D5FFC40001FFA7012FFFE70170001BFFA500D50046FFE7000400130031FF66
37
+ 1E8001B0016FFCCFF74FFE3FFA2FF4CFFAA008AFFD8FFD1FF9BFFDD001D0032
38
+ 01A00130027FFFAFFF000000000FF74FF36FFEAFFE40078FF9EFF85FF79FFCD
39
+ 1D7FFEF00010006FF7BFFC1FFDDFFBA006DFFC6FFA2FFEAFFD500260039FF85
40
+ 16CFFDCFFA3FFE4FECF0041FFA3014100A9005EFF4BFF9300AB004FFFDF0146
41
+ 1EF003F002EFFE8FF860013FF6FFFA0FFB1FFD2FFDC00290000FFF7002CFFC6
42
+ 1F10014FFF2FF55FEF3006FFEAE00AC00B1FFDDFF56FFC800920014FFB500F9
43
+ 03EFFF4FFD0002E0007FFC600C7FF55FFB6FFED008A002FFF60FFD7007EFFA5
44
+ 07AFFDAFFEEFFA7FFA0FFF5FFAEFFCA005700610051FFFCFF94FFE0000BFFCB
45
+ 0A0FFF8FFEBFFF30068FFB5008DFFC6FEFD00BE006CFFEDFFDE00090027FF02
46
+ 00F0018004AFF98FFD4FFEAFFCFFFB8FFDB0028000DFF80001A0032FF9FFF35
47
+ 1F00014FFECFFE6FF78003BFF2C009800910015FF910003000DFFC0FFB90053
48
+ 1C2FFC7FFFFFFF1003000000049FFA2FFDE0032FFD0000CFFC1FFD7000E0020
49
+ 040FFE7FFE50005FFB60052003CFFACFEAD0045FFF9000AFFD9FFF9FFEA0031
50
+ 00D002B0024FF700030FFECFFEBFFA8FFD8FFF5FF9F0017FFF400000009FF94
51
+ 002FFE1000D000DFFCE0021FFAAFF67FFC7FFDDFF7CFFF2FFE4FFBFFFB0002C
52
+ 0D3FFDDFFBBFFDD002AFFEA004000060004004C0097FFE8FFE5FFE0FFEA004D
53
+ 0720019FFF1FFD0FFE9FF8FFFB6001EFFD900770019FFF5FFF0FFCFFFD8FFA2
54
+ 1FC0006FFEE003CFFC80021FFF5FF9500490018FFEA0085FFB8FF99FFD20076
55
+ 01EFFD20032FFD4003DFFF60030005BFFCCFF98FFEFFFC7003D00A50047FFD4
56
+ 018000B002BFFBF0011FF8D001DFFCCFFA40025000000190044001D00270017
57
+ 1CE0064FFC00032FFB5FFE8FF6E00100069FFE7FFF80057001FFFFD0006FFD2
58
+ 1F9FFE10071FFAAFFD0FFD1FF7D002300120008FF69FFE700520032FFF1FFE2
59
+ 00BFFF8003FFFCD0011FFA8FFBF00D50118FFB80084FFAC000A00260045FFF7
60
+ 0BDFFFBFFD4FFB0FFF6FF9BFFA000130004001C00B50001FFBAFFD1FFDCFF3A
61
+ 045FFD2000BFFBC003BFFE5FFFA0003002F0048004CFFE7FFF40014FFF8FFC2
62
+ 1E0FFFF003AFFB9FF41FFF8FFE4003FFFE0004B0027FFD000330044FFA4FFF4
63
+ 1EBFFEB004BFF9FFFDCFFEB001DFFC0006C001D0021001B004500460068FFEC
64
+ 01BFF8BFFDCFFF5000D003E0030FF9BFFF50091FFD0FFD8003D0016FFE800FC
65
+ 04EFFDE003CFF93FFF9007000510053FFC600520062FFC8003E00540045FFFD
66
+ 1F10034FFE4FF87FFDA00010012FF6DFF890003FFDE0024FFEE0004FFEA0007
67
+ 03CFFD90040FFCA001DFFF50060FFECFFCB0012FFE40009004E0034FFD2005F
68
+ 0C7FFB7FFC2FFAC0042FFEE009E001900B300560053FFE9000DFFE7FFC7000B
69
+ 061FFF8FFEAFFA4FFE8FFEBFFD9008C002B0079003CFFD90010FFD8FFDB000D
70
+ 008FFFFFFDB00500006FFE7FFFDFF8700DB003CFFF7008BFFC9FFD9FFA0FFD9
71
+ 04BFFD30043FFCB0087FFF900390060FF51FFA2001DFFC4008700B9001A0023
72
+ 035000A001BFFB5004FFF5CFFFEFFCCFF4B00250013FFE6008F001C002AFFDF
73
+ 1D70086FFDD003DFFA5FFBCFF6F000C00E70009FFF40058003D0015FFF5FF80
74
+ 1F00005003CFF74FFD7FFF5001AFFB6FF3CFFF9001F0024001B0006FFDE0021
75
+ 033FFC70044FF97003CFF790059FFF5FFFD00240067FFAB002100360009FFF1
76
+ 080FFD0FFC1FF93FFD6FFB8FFAA00540079003000BD001CFFAEFFD6FFCEFF3F
77
+ 03FFFC70004FFC7FFDB000F00070020FFA700530047FFE100000025FFC30028
78
+ 1BFFFDA0028FFB6FF800006003FFFC7FFA80070002FFFE500320056FF8A0030
79
+ 03300220021FFFCFFB2FFFA002AFEF6FDEB00670017001A00350015FFE7FFEE
80
+ 036FF71FFEEFFFD004C001B0062FFC800D100A8FF94FFDC00500010FFF5FFD8
81
+ 1A7FFFE0035FFC8FF89001DFF8600320075FFB9FFCDFFD00009001EFFCF0133
82
+ 0050025001CFF5DFFB8FFFB0026FFAD0003000AFFA0FFD900040009000F0046
83
+ 02FFFC50034FFCF0008FFF0001200470007FFD7FFADFFAB005C0069FFF100EC
84
+ 0BFFFE6FFE0FFCC009AFFDB0062001C002200AA0053FFF0FFFEFFF00011FF9F
85
+ 1E30008FFF2FFBAFFBCFFECFF88FFEAFFD40079FFF4FFC1FFC0FFCFFFEAFFA1
86
+ 019001AFFF4002100030007FFEFFF7EFFF70011000000A7FFA2FF81FFA0FF89
87
+ 1FBFFCF0027000D00350025FFF200600007FF9DFF97FFDF0040006F0026FFC9
88
+ 1C1FFD9FFDBFFD3FFDFFFB5FFCF00A9000C003AFF86FFB500AC003A00280088
89
+ 1DB006FFFF00008FF6FFFDFFF63FFC50036FFEAFFF1004700130013FFF0FF79
90
+ 1E4FFEB0029FF9DFFD3000CFFC8FFE1FFDEFFF8FFF4000600400000FFE3000B
91
+ 054FFF9FFE1001B003DFFE3004DFFA8004C002C007BFFEFFFC2FFDD0052FF7E
92
+ 042FFECFFD6FF99FFCBFFC9FF89003E0030004400ABFFFBFFA1FFE00007FF68
93
+ 047FFD70009FFA6FFE5FFE800100017FFB6008B0071FFD9FFC80008FFF6FF86
94
+ 1F6FFF7003AFFB5FF8900120006FFF4FFE000510010FFB7001B003EFF71FFCE
95
+ 018000A0008FFD3FF45FFFFFFE9FF88FFD10040FFBD0030001CFFF2FFFB0063
96
+ 02DFFA1FFE7000B004500150037FFBFFFA1008FFF99FFDD0039FFFB0002FFA7
97
+ 1F2FFD9FFE20045FFE700270005FFEBFF57000900460019FFAFFFD8FFCB0017
98
+ 02A00030095FF5F0069FFCBFFA3FFD1FFF6FFFAFF3FFFB6004000350021FFD1
99
+ 1E30003FFB1003FFF4CFFE0FF76FF58FFD1FF6DFF9DFFF8FFB4FFB3FF9FFFEB
100
+ 0AEFFEEFFCC00170018FFEF006C005BFF54007E00680008FFE0FFEEFFE80056
101
+ 0660033FFF0FFD7FF88FF33FFDB0002FF5C00C7FFE40014FFB9FFE1FFD3FFF5
102
+ 1FA0035FFED00220021003AFFF1FF7EFF94FFD4FFDB0043FF9CFF83FFCF005F
103
+ 1A4FFDE0046FFD3FFECFFA7000F0044000FFF68FFDFFF97FFCF005F0063FF71
104
+ 1E90006000DFFADFFF3FF9D0006FFBDFFB5001CFFCA002BFFDCFFF5002FFFCF
105
+ 1DB0067FFE7000FFF960018FF82FFE8FFAEFFB80006001A001300410011FFE9
106
+ 1F4FFF500050037FFEE0014001CFFDEFFF0FFFCFF8A000BFFF4FFE7FFE50015
107
+ 023002AFFCFFFFEFFF9FFFF002E000A000EFFBE008E0027FF8EFFCD00220056
108
+ 0A10024FFF3FFF0FFDBFFAFFFFCFFD7FEB200630078000BFFBAFFE1FFFA0063
109
+ 1FC00110020FFE20110FFB2FFF0002F02340029FFDBFFD60002FFF9004AFFB7
110
+ 1DC00260026FFA3FED4FFDEFFF3004A006300310024FFC0002A001DFF56FFF7
111
+ 181FF9F006DFFEC014EFF87FF9000100296FFA1FFF5FFB50043003F00C9FFCF
112
+ 02CFFF1FFB5FFD8FFED006C007DFFB0FE63007BFFE50017FFCDFFDEFF7B00DD
113
+ 1DBFFCD0043FFBA0084004AFFE4006100BF000E0086FFE4000200360037003D
114
+ 00800000082FF6E0035FFDDFFBBFFD7FFD80009FF7CFFE90032003F002F004B
115
+ 00EFFE90026FFC1FFBCFFA30008FFB70088FF85FFDF0003002B0047FFEF00C7
116
+ 0A2FFC3FFB8FFFEFFC40007008D0067FFE100940021000EFFECFFDFFFBF0002
117
+ 052000FFFE7FFC1FF7DFF89FFCC004D000200B4FFF4000AFFD8FFE2FFCE006A
118
+ 1FA0033FFE2002900400034FFFEFF5E00410009FFDC0059FFC3FF9EFF95FFD5
119
+ 1E2FFDD003CFFE3000AFFBFFFB7005FFFC1FF7BFFF3FFCB0006008A004DFFFD
120
+ 00DFFFA0028FFB70037FF60FFC60009FFF30036FFD10018002B00120039FFFA
121
+ 1E30078FFD10040FF9E0001FF86FFEE007CFFEDFFD90045003800330023FFE1
122
+ 1E900120009FFE9FFC5001B0030FFC6FF07000FFFF0001CFFF1FFDFFFC3FFE1
123
+ 035FFE20006FFA10005FFC10046FFD6FF76004D0012FFEFFFD60007FFF90032
124
+ 07AFFFBFFCCFFDCFFBCFFCF00200026FF94009C004B001BFFBBFFDEFFE10023
125
+ 1FAFFDDFFFEFFFC0075FFF8FFE30051007F0053FFF0FFE2FFEEFFFEFFDEFFFF
126
+ 1D20000001FFF8FFF06FFEC0039FFFF0019005A001BFFC10027003AFF360055
127
+ 1E6FFC80029001F00ACFFDFFF9AFFDBFFCC00130008FFDA0031001B00180056
128
+ 037FFC6FFB70009000900430086FFDAFF940084FFAD000EFFF0FFE2FF80FFE5
129
+ 13A0022004EFFD60053FFCFFF66FFE901C7FF8DFFEBFFD1FFBEFFDB000101EB
130
+ 00100070088FF47FFF9FFCF0013FFDD00B40000FF77FFB4004E003A003200D7
131
+ 1DFFFCF007CFF66FFFCFF85FFD3FFD50062FF5DFF64FF91004A0087001B01AD
132
+ 077FFF6FFBF0004003DFFFD0069001BFF3C00E3FFFD0003FFE3FFE3FFF6FFE4
133
+ 000000DFFECFFCBFF69FF96FFA8FFEFFF6D00C5FFAAFFFCFFA3FFDEFFD90040
134
+ 011003E0000FFFB003E003EFFEEFF55FF33FFF6FFE7005AFF8CFF61FF89FFA6
135
+ 1B1FFE5002DFFEEFFF00001FFC1005CFFDAFF77FF8BFFDBFFE500460056FFDC
136
+ 1C3FFDCFFFBFFC9FFF9FF7AFFCC007F004A0025FF7DFFD10043001B00450050
137
+ 1FC0042FFF5FFF5FF9B0011FF85FFEBFFBAFFE4FFD5001A0012004500210038
138
+ 1E4FFFFFFE70009FFD800240044FFF7FFCCFFFEFFF90018FFE8FFC1FFD4FF38
139
+ 01CFFF6FFD40016FFFD00320050FFDBFF8D004500540003FF94FFE20029FFB1
140
+ 05CFFFDFFDDFFE3FFDDFFDFFFEFFFE7FF5600C50023FFFEFFADFFF3000D0032
141
+ 1FDFFD5FFD10000FFD8FFFDFFCDFFFC00400096001AFFC9FFB2FFD8FFEFFF64
142
+ 1F70019002EFFA1FF150001FFF8FFDC001D00250000FF9F00230030FF26FFAA
143
+ 1DEFFC30004FFFEFFFAFFBAFF8300170132001BFFC6FFD60031FFF700060108
144
+ 01F0013FFBE0017003800250080FF8EFE650066FFC50019FFB0FFD5FFA6FF75
myproject_prj/solution1/syn/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/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_41_21_5_3_0_config9_mult_s_w9_ROMbtn.dat ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 10AFF960047FFC4FFE2FFBF001FFFA700AD00CD001AFF790002FF56003AFF96
2
+ 7F1FFCDFFB0FFF2FFE7FF8B00380050FFF20021FFD3FFDB0004FFC0FFFC0057
3
+ 7ABFF5B001700240048001E001F00AE009700A2FFC3FFF10067FF9AFFE2FFBA
4
+ 6CDFF8E001BFFC6FFC200020015FFA7FFEDFF7EFFA20074FFFEFFEBFFFC0008
5
+ 552FF980072FFDE00290003FFE3FFBCFFF80012000BFFD900C7002B0009001B
6
+ 01000450001001A005EFFF5004C002BFFB6FEF0FFC1008900160064FFD2FFC7
7
+ 7C7FFD8FF85FFDCFF6200480032FFFC00AC0077FFEEFF7CFF47FFA2FFD3FFBB
8
+ 00F007BFFB2002C007FFF6FFFEC0039009F0029FFFCFFCEFF92FFCA0005FFEA
9
+ 7F20020FFE1FFF0FFF2FF2DFFDE000400B80046FFC80017FFE3FF73FFF0007C
10
+ 0BDFF50004DFFC3FFB8FF97002B001200FF00AD000BFFF8004AFF57001D0003
11
+ 764FF8C004B0011000C000D0036FFB1FFBDFEC0FFCD0073000F003CFFD10033
12
+ 7E4FFD1005600050007FFB4FF6D00080020FFE40002FF7BFFEF0000FFF60008
13
+ 7BEFF6F0028FFD1001EFFF000750010FFAFFF4AFFB30098002AFFB0FFDFFFCD
14
+ 7C3005EFFC1FFBA0089FFBFFFF0FF9400DF007CFFCDFFB7FF96FF7BFFDE002D
15
+ 1CEFF92FFDDFFF3FFCAFFBE0011002BFFAE0059FFF60048FFC7FFD3FFF9FFCB
16
+ 61EFFF4FFE8000E0024FF9F0029FFF0FFDFFFCB000DFF58FFCDFF55FFEF0063
17
+ 0A2FFEA005DFFF5FFD0000F0029FF90FFDD004B004AFFCFFFCEFF630032FFDE
18
+ 009001BFFE9FFE80050FFE7FFF1FFB7002B0058FFBCFFE0FFF5FF9AFFF40000
19
+ 6D2FFAE001B004DFFF2FFF20048FFEBFFC5000BFFECFFB5FFF3FFE1FFD6001E
20
+ 021000FFFC40041FFABFFF30055006A002100020023FFBFFFD8FFEEFFF4FFD9
21
+ 77AFFF90059003B00240015FF95FFA2FFB800B10002001AFFF0FFF400120015
22
+ 070002DFFF5FFEE0012001500650096FF79FFB20002FF9B0017FFFEFFC4000B
23
+ 046FFF9FFFB0020FFD3005FFFE1FF750094003B000E0012FFF1FF8FFFD7FFE3
24
+ 7D8002DFFF4006DFFFAFFAF001B004FFFEDFFDC001F0027FFF2FFCDFFFC0023
25
+ 09700200044FFFF0082FF5CFFE8FFDE000100A1FFD3FFA8FF9EFF85FFDF004F
26
+ 07A003000830016FFADFFB80015FFA6FFA70000001BFF4A0022FF88FFFDFFC6
27
+ 735FF97FFF7FF55FF9A0064001DFF97FF57FF3FFF5FFFDD0006007EFFEA0000
28
+ 77600860000002CFFACFFEBFF72FFF2FFE30002004EFFC7FFC90010FFF5FFD1
29
+ 73DFFB6FFC0FF63FFD1FFC50057FFEF0048FF5AFFF10078006EFFD6FFE7FFEC
30
+ 0160011000500B8FFE1FFD4FF95FF40007500170024FF69FF8EFFA4FFDC001F
31
+ 7DE004B000EFFE3FFD2FFF4FFE2FFC80058FFE30015FFA50009FFBFFFF30019
32
+ 7B7FFFA002F0041004FFF63FFCCFFD9005400910053FF78FFBBFF7800040068
33
+ 7DF005A0023FFE8FFD70047002AFF91FFFDFFF6002DFF58FFFCFFFA00040009
34
+ 7F40068FF7BFFF60064000E000BFFE700440004FFC70026002FFF5AFFDE002A
35
+ 01800B90020FFCAFFC5FFE7006CFFF90017FF9100110015FFA4FF84FFDD0020
36
+ 0F90053FF50001DFFFB000800390096FFC0000800680020003CFFECFFFF0003
37
+ 0B2FFBC008BFFCFFF90FFE6FFEDFFEAFF6E0084FFDCFFEFFFAD0002000C0064
38
+ 744FF57FFCCFFCD0043FFEA0081005F0045FFFF001DFFFB002B001B0004FFD5
39
+ 030004BFFF40073002E0015FFF8FFE9000CFFA90045FFE5008BFF58FFE9FFFB
40
+ 768FF4AFF7F0086FFA0FFB3FFE100CFFF83FFBC0007006D0027FFEA0007FFE1
41
+ 7F1007BFFD500410078FF70FFEEFFF5FFB2FFF20025003D000EFF7BFFF20020
42
+ 73E0065005DFFB2FF5FFFB6FFBDFFCEFFDBFF8E0003FF9EFF90004DFFEAFFF4
43
+ 017FFDEFF79003EFF950069FFBAFFD700A0FFCFFF6CFFD3000D002400000022
44
+ 006FFFD008DFFCBFF6DFFBEFF9B0088FFBFFFEC002AFFFAFF78008B0004FFA3
45
+ 7C3FFE5FF04FFC00016FFF1007FFFEB00C9FF980053000A00AEFF15FFDA0026
46
+ 0D8FFCDFFB50086FF80FFC2FF25FF8FFFAFFFD80041FFA9FF8AFFDAFFE9FFE9
47
+ 719004BFFFA00570019005DFFDDFFC90028FFCB0069FF2D0000000DFFEA0014
48
+ 09800B5FFB400BB000FFF63FFD90017000A005C0070FF5AFFBFFF83FFF9005E
49
+ 7FBFF720004FFE9006AFFD30022004C009100380002FFB2FFB6FF870006FFD3
50
+ 02C001FFFACFFFFFEE4FFC5006F0077FF590050FFDBFF8A0035002B00440019
51
+ 038001C00200012FFCA004C00240081FFEF006BFFCBFF5D0033FFC70037FF7D
52
+ 02EFFACFFBAFFA0002FFFEFFFC4FF3B00D40010000C0013FFAC0041FFF8FF57
53
+ 022FF830005003200080071FFC4FF83005A00120050FFB1005F002BFFD3FFAA
54
+ 793000C00A6000B00DFFFEB0007FF520058FF1AFFE40020FF1B0060FFEE0019
55
+ 7D30090FFCC0043FF77FFEDFFBA0086FF7C006DFFBCFFA4FFBAFF34001E0008
56
+ 7E60011FFC2FFDF00E5FFA4FFDF0003FFF6FFF0FFCAFFD6FFC100770008FFC1
57
+ 7FB005AFFBDFFF6FF05FFC90029003400110019FFC8002C001C003E000C0067
58
+ 7C5FFDAFFEAFFD8FFCCFFB40052009E000600530019FF9A0000FFDEFFFFFFEC
59
+ 7770025FFB7FFE5FFD3FFF1007D0025FF700018FFD8000EFFEDFF79FFF9000F
60
+ 7D8FFFEFFE9FFF0005CFF62FFF1002400270019FFED0018FFE6FFCDFFE4FFE3
61
+ 7CDFFFA002A00250040FFFC00CAFFFEFFF2FFFDFFDEFFE0003D00A00017FF8E
62
+ 7930058FF9AFFFD0048FFFBFFED0069FF91005DFFBEFFAAFF97FF3900080055
63
+ 040007EFFD30026FFE5001D000A002F0013FFE7000AFFF1FFD8FFDEFFF1FFC3
64
+ 7940018FFB2FFEA001EFF86005FFF7000490014FFD6FFCDFFB4FF70FFFF0041
65
+ 015FFC0FFFF00010017FF7200160063001C000C00470008FFC0FFBAFFF6FFF0
66
+ 0660005FFC9FFDBFFEFFF9900030006FF780055FFB0FFF7002000040042FFD9
67
+ 7BF00A80034FFE3FFFBFFF3000EFF7BFFD60040FF91FF820052FFC70016FFE6
68
+ 7CD003C00670034FFC3FFE10005FF4F0024FF790021FFE2FF800024FFAEFF6E
69
+ 004FF8300190004FFF000C4FFF0FF7000760058FFD5FFD30003FFD8FFD7FF9D
70
+ 795002D001F0023FF95FFA80015FFD4FFFAFF7E0011001FFF5FFFFFFF96FFC9
71
+ 75CFFB50000FFB8001DFF70FFDC0093FF3F0019FF83FFC1FFE3FFDC0027002A
72
+ 7ACFFD8FFC00041006EFFC20028FFABFF38FFA1FFEC0034003900670010FFFD
73
+ 018FFD2FFF1000FFFE5FFAA0031004BFF99000BFFBAFFECFFE60004FFFF0039
74
+ 011FFB60035001AFF9EFFA1FFEA0029FF74003E0006FF8EFFC3FFBDFFEDFFE6
75
+ 7FC004EFFA4FF87FFD700080032FFF1FFDD000DFF95FF7DFFE3FF2A0012FFA1
76
+ 6E2000DFFDB00390004FFA1FFC8FFC7FFB9000E005DFFDB000C0004FFDEFFED
77
+ 0260003FFCDFF980009FFAE006FFFE8FFEE000FFFD8FFF800780051001BFFAA
78
+ 751FFEFFFA5FFF0FFEFFFE5FFE9003E000EFFD6FFC5FFBF002FFF58FFE2006A
79
+ 7BB0081FFC80009003BFFACFFCC001AFF8BFFF60043FFCFFFD4FFC3000EFFF9
80
+ 7B1FFEFFFD0000D0052FF50FFE3FFC800940048000DFFF5FF9FFF7AFFFB004C
81
+ 7A40074FFDEFFF2FF9100050028004E0019000A0020FFF1FFDAFFFCFFDB0045
82
+ 01A0026FFECFFE90029FFB3FFF4001BFFEC0002FFA9004B005500050016FFF5
83
+ 7CC006E0056FF95001E003EFFD2FF8EFFEAFFAFFFDFFFE3FFB40008FFEBFFF7
84
+ 7D30017FFF00035004D001E0058FF73FF81FFF10060003EFFF2FFF8FFDFFFD2
85
+ 089FF3C00340026FF70FFFCFFA3FF6F006A002BFFF6FFDCFFFF004CFFE4FFE0
86
+ 77AFFC7002F001AFFC600340039FF770015FFF7000500D2FFEE00360004FFBF
87
+ 737FF85FFE5FFE90007FFB3FFA300E9FF26FFEEFFDFFFD2002FFFDC00110030
88
+ 7BDFF35FFAD00A1001EFFCF000BFFFFFF33FFA7000E00570051000C0009FFD4
89
+ 7D5FFEBFFCC0031006CFF73002B0066FF9DFFA6FFE6006D0078000CFFF50006
90
+ 7EF01160037FFF2FF28FFF9FF8DFFBEFFFCFFF8FFDAFFFEFFBC0027FFF70027
91
+ 073FFF7FF95FF3AFFDD000FFFE1FFBAFFF6001CFFA7FF99FFACFF45FFF3FFC7
92
+ 6EDFF91006B003F0028FF99FFD30048FFA9FFE2008F0018FFF0005FFFFC0007
93
+ 7D1FFF4FF81FF64002E0007008E000000190001000BFFD30022FF91FFF2FFD1
94
+ 75FFF35FFE9005BFFFEFFBFFF900100FF70FF9300430060000F0031FFF4FFE4
95
+ 7B900070015FFC0FFC0FFE4FFBA000EFFD1000E00150008004E001B0000002B
96
+ 7F90031FFB300BCFFCBFF1FFFFAFFF3FFF9FFFF0029FFFCFFE6FFB1FFE30043
97
+ 7B100520005FFEB0118FF69002EFF54FFF8FFA9FFD8FFB0FFDBFFEB0033FF4A
98
+ 003FFBBFFC8002EFDEFFFFD00440011FF78FFE70015FF52FFD1009D006B0065
99
+ 7F0006F00360056FF2C003DFFE7002BFFBFFFF10006FF95FFC900D50020FFFA
100
+ 01CFFA90081FFEC016A0026FFC7FF7300FBFFFFFFEB00EF000AFFFAFFC3FFA8
101
+ 7B7000DFFE1FFE1FFC200380034FFB60073FF4B001700030046FF27FFC3FFBA
102
+ 0410008007F000E0123FFEB0011FF720000001CFFE7FFDDFFAFFFFEFFC9FFDF
103
+ 79CFFEFFFE2FFC9FFA2001C002C0035FFE5FFC9FF9C00AAFFED0069FFE0FFD5
104
+ 7EAFFD9FFCFFFE80061FFEF0009FFE4FFA1FF990000002FFFE00085004A0007
105
+ 7F2FFDFFFC7FFC8FE4500570054FFF0FF61FF95FFEFFFFB0009007500380033
106
+ 7EF00C8FFDAFFBC000F000900AAFFD2FF8EFF63000F0010FFDB004DFFF3FFF4
107
+ 7D7006700020028FFAA001D00950065FFE900AA002A0068FFEDFF1F0006000D
108
+ 027FFB8FFD4FFEE007FFFCF005FFFCFFFA6003CFFEF006AFFE50005FFFF001A
109
+ 7A20020FFDE00490057001D00BFFF7EFFCD00480037FFA7FFE000800017FFEE
110
+ 7F2FFE8FFAFFFC5FFC600460027FFF8FFB3FFE6FF940025FFA400C6000D0032
111
+ 722FFFBFFC3FFF7FFFD00780029FF7DFF84FF94FFDFFF9BFFBB0037FFE4FF9E
112
+ 0110062FF7BFFDFFFD6FFDD0026FF5300540025FFE1FFE00040FF830028FFE5
113
+ 7BF0050FFE9FFE800FEFFAE0003FF68FFFF002F001F0002FFF30016001FFF88
114
+ 7FDFFA0FFFB0004FF50FFDB0005FFCFFF83001BFFEE000C0002008B00830014
115
+ 020005CFFFAFFEEFF940020FFD2FFB3FFDDFFF1FFAAFFE40070005EFFF80025
116
+ 05C00250041FFF8002B0054FFEEFF5E009DFF9200040023FFA4FF84FF92FFAD
117
+ 7E9FF8FFFC5FFC6FFB60050000CFFD90046FFE6FFDCFFA00010FEFFFFB4FF8A
118
+ 7F10013FFCFFFF7005CFFB1FFBAFF92FFA2002D000100B20005003CFFDB0057
119
+ 031FF96FF82FFEA002CFFDE007DFFF1FED3FFD9FF9D0051005200B6FFEEFFEF
120
+ 7C5FF65FFDE00330062FF820048FFB0FEF9FF4E000800610031006F00350038
121
+ 7E6FF9FFFF6FFDDFFB6003A00400024FF5BFF9FFFD5FFE400460054002E0018
122
+ 7D200F2FFFEFFEB0000FFCD003EFFC0FFD0FFC0FFD6FFE4FFEE0039FFEAFFD8
123
+ 7A700B60002001E005A002D003DFFDC000800420025FFE1FFCAFF47FFFFFF97
124
+ 767FF5EFFCAFFF40065FF88FFBFFFAEFF4800460057005A004BFFB2FFDF0027
125
+ 7A600040012000A0018FFC50039FF92FFB80045000FFFD9000B00600023FFF2
126
+ 7D0FFC7FFB5FFD40035001DFFEAFF6EFF99FFF4FF9E009B00BF0027FFFE0007
127
+ 78AFF84FF7EFFDDFFA3002C0022FFCBFF8B00300007007FFF9500450001FFE1
128
+ 7B10030FFA6FFE4007CFF8CFFECFF810038002AFFF90041FFD7FFDB0030FFDB
129
+ 7BB0073FF97FFEB00400002FFF2FF11FFDF0035FFF100030029FFFFFFFFFFB2
130
+ 7A4FFDC0038FFEA0014FF79FFB9FFB8FFC30001FFC900C6007B0066005E0036
131
+ 04AFFEBFFECFF6FFFEEFF93FF53FF290023FF66FFDC0008FFE2006FFFE30021
132
+ 758000EFFACFFF1000400200081FF73FFCCFFB50016FF79FFA7FFA5FFB10018
133
+ 084FFE8FFFFFFDAFF65FFD2FFB9FFB3003DFFDA0010FF66FFE40000FFC0FFBA
134
+ 7C1FFF20019000A0050FFE5FFEAFF30FFE30014FFFC00C3002CFFE2004EFFF0
135
+ 026FF41004800500064FFA60003FF8AFF7FFFAB000A000500AAFFC0FFEB000B
136
+ 77EFF01FFC4004B0047FF8DFFEF003CFF19FFBC0019FFF2FFEA002000150014
137
+ 788FFBAFFE0FFF0005AFFF0FFF8001AFF4AFF6AFFF0007000B2002A0008FFFE
138
+ 7E300BF00030000FF91FFA6FFF7FF610001FF68FFE60077FFF0FFD20000FFE8
139
+ 05A00B5FFC1FFCE002EFFF4FFD9FFCDFFC3FFF3FFE20014FF58FF26FFFDFFDB
140
+ 685FF42002E001600A1FFD2000D0037FF73FFDB0087002A004C001A00040024
141
+ 78F0037FFC0FFA20037FFA40006FF8DFFE6004200070024FFDBFFDC00000001
142
+ 7F2FF500001000F0090FFC8FFB5FF16FF75FFB0FFE900690037FFEBFFEAFFDC
143
+ 78FFFD6001CFFC5FF85003B0004FF5EFFD4005EFFBB01490002FFBC0030FFFD
144
+ 7DE004AFF98FFECFFE9007B0017FF7DFFEEFFD0FFF500780061FFEC0014FFE9
myproject_prj/solution1/syn/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/syn/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/syn/verilog/myproject_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_42_22_5_3_0_config17_mult_s_w17_ReSV.dat ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 390000B005D0000FFA700270068FFE0002DFFB20010FFD2FFEFFF940006FFD5FFCFFFC80037FFD0003DFFCC003AFFF5002BFFEC00B20013001D002E001400050023001300830002005EFF8DFFD7FFEDFFDD00070009FFD2FFF9FEC0FFF80035006FFF9A004B00640004FFEFFFD10017FFF50066FFB4002F0049FF5CFFA50093FFC6FF6BFF95000F000FFFEC001FFFE000520041FFE30020FFD7FFA7002700570029FF9BFFFF0021FF9EFFE70035FF7E0046FFF60026FFFAFFECFFE70049FFB2000800170088FF870058FFB300280087FFAE00560003FFB4FFE2FFF20061FFB3FFDDFFAD003100250076FFC4FF57FFCD002FFFB5002EFF950011FF330006FFBF
2
+ 3F80004FFDD004AFFB1002D0028FFFFFFEFFFF1FFFDFF85FFC300060006FFA3FFF0FFD4FFF6FF84003FFF7EFFEC001B0013FFE6FF7700240017FFEA00080037FFCB0000000CFFFAFF7E0001005BFFC500180042FFDFFF9CFFD20011FFD200020032FFA3FFD2FFF40025FFDE0048FFF1FFF5FFF90031FFFAFFE1FF8DFFB1004A002FFFAB000700050011000A0027FFB9001D0014000BFFCB000D00210000001BFFEFFF42FFAD0003000F0007FFF00051FFDB0052FFF2FF93FFDC0020000BFFEB0011FFE1FFC0FFE3FFA800170023003EFFD900530021FFDEFFFFFFAAFFECFF89003CFFC8001D002D000EFF74FFE9FFFDFFFB0026FFD3002700360003FFC5003F
3
+ 3ECFFD3FFB7FFCCFF82FF6EFFEAFF81FFFB0000FFF5006E004DFFCE005500400014FFDBFF67FFCFFFBFFFE3FF9FFFEEFFE00015FFF3FFBF0014003AFFD4FFD6001F005DFFC6FF9F0031FF4DFFBD00420035FFB2FFA6000E0062FFF1FF95FFC0FFDFFFF7FFDD007600060040FFDC005BFFD5002C003D001CFFFA004F000DFFC70008FFC1FFC7006CFFB2FFF3001CFFF50067004FFFBFFFE50064FFF20014FFCD0025FFE10022FF87FF9DFF97001EFFC6FFBFFFD4003CFFEEFF46FFB60054FFF2FF66FFB900210031FFDDFF74FFA9FFDB0033003D0044FFA2FFCD0059FFFAFFD900360096000FFFDFFFFC0009FFC00031FFE4FF9AFFE800450032FF99FFB4FF66
4
+ 00EFFF6FFFAFF9DFFFB005D001B0018FFE4FF7C00160019FFF70035001F003CFFE30077FFB6FF63007FFFE40016FFFC0017FFDAFF99003FFF36FF8CFFDE00380014FFC4001E0024FF9AFFB200330057FFD2FFCEFFD60071007DFF430035007B0000FF2100250002001DFFFAFFE3FFBC000F006DFFE1FFF1FF7CFFD7FF7CFFCA0033FF560003004DFFE7FFE3000C0027002700990021FFAFFFF000BC0012FF76FFC10037FFDB006D0029FFBA003F00500039FFEBFFF7FFCBFFCB004100320055FF6A00620083FFCDFFDBFF62FFE3FF9E0020FFBFFFCF0019FFF5000BFFF2FFC40019FF93FFE9FFF100050018FFDAFF99FFDAFFF90066FFD1FFE5007AFFECFFF0
5
+ 3C8FFC800300041FF5E001AFFF3FFBBFFE3FFE4FFB60041006BFF4B003A0020FFEE0019002AFF6AFFCE00110008FFFCFFD7005B002D001B004B0023001B0032003EFF67008FFFE5FFBD00040059006BFFB4002CFFC70078FFED0007FFCBFF7BFFBB0016FFCC0082FFBAFFE2FFD8002CFFEE001FFFE0FF78FFD600090078004EFFF4FF680001000F001A0017FFE30025FFA800480023FFBFFFD70051FFA60032FFCEFFE2FFEAFFFB0075FF2A00230078FFA6FF07FFF3FFA2FFECFFDAFFCA001C000B004000830045FFFFFF29FFF7003AFFE8FFADFFEEFFD00037FFFB001D0026006DFFB3001500230003FFC50019FF74FFE1FFD80020FF5AFF8AFF2F0037FF71
6
+ 3DC0088FFCEFFB50007FF9B00080055FFFE000A000DFE8DFFB700120018FF470007FF1CFFC8FFD5FFF7FFE3FFD9002AFFF4FFA2FFD40028000E0027FFE8FFD9FFFAFF6D00420012FF8D0075002DFF6800210018FFF7007300250041FF9A0082000CFF29FFC7FEB30001FED700050037FFD9FF9E006600D90014FFC0FFBF0038FFB9FED0000EFEF9005FFFEF0031FF9A002EFEE0FFC9FEEDFFD40096FFB4FF660011002BFFFF005FFFF30088000FFFF9FFFA0043FFFC00590047008FFFD70010002DFFB4FFECFF9E0001FFEBFFF0FFA7FFDE0009FFBBFFF2FFCDFFE50021FFB8001FFF890016004DFFDBFEF8FFC8003DFF670011003C0007002F006E0024FFCB
7
+ 004008E001600230003FFC1FFD6005A002BFFE2000FFE740024005D003AFFB10055FF9FFFDA000B0002FF8C004CFFFDFFC6FFC6FFAC003A0017FFEF000A005A0059002F000F0022FFCA00A0FFD6005AFFFE006C000E0007FFA1002EFFEA00240015FF8BFF72FF48FFDAFF6DFFF9FF85FFF0FFA200050007FFCFFFD4FFA2FFC80046FF8DFFDDFFEA001C0067FFDFFF7FFFC6FEEFFFFFFF90002A001A002CFFB9FFB5004EFFBDFF77003E0094FFE1FF9900140003004A00470021FFE20041FF83001EFF7F00000023FFE70069002E001900000000000E001DFFD2001DFFF9000DFFC30003000C0049FFB9FF0700080034FFB9003BFFB40075FFF3002CFFB50057
8
+ 018007AFFBF0015FFF4FFA6002200D2FFBC00760053FF2FFFC20069FFEDFFDAFFFAFF94000A00410001FF98FFE9001EFFE60025FFF9FF88FFE5FF94FFEB0026FFBFFFCAFFC00018FFAD0112FFCEFFC30030002BFF8CFFA1FFD300AB00000034FFB9FFE3FFA0FF400023000FFFA5006CFFBFFFF1002B0016000D002B0015FFE8FFEDFFDD000CFF8DFFE700490018FF9F00130028FFED003C000000210010000C000D003DFFC2003CFFC2004DFFAC0042FF600046002800ACFFFB001BFFEBFFF9001B004C002B002BFFADFFEE0005FFB10021005AFFB70055FFD10032FFDD0020FFEE0035FFF000800033FF8A0031FFE0FFD5004DFFD90067FFF10005FFEC0025
9
+ 3F5008300240059FFF5FFAB0005005700230032FFDEFE0CFFB900760009FF7DFFF7FF5D00070028000AFFCAFFDCFFE9FFFEFECAFEFEFFEF00170015FFD7000F000BFFD7003E0025FF6A00D70002FF90FFE00064FFF30033001800C8000A0057FFE7FE7F0035FFF4FFF8FEFAFF70FFF6FF87FFDF004C006AFFC8FF8B0001FFF5FFF9FEF2FFE5FF7AFFE10041000AFFF5FFE6FFACFFF7FEB50015006A0024FFDB0048FFFBFFAFFEF9002D005D006F0069000EFFFDFFE60099FFE200620017FFE9006A00080049FF72003B001CFFDF0032FFF9001C00020014003000390001FEB0FFD9FFFF0029004BFFDEFE80FFF1003300170012FFCE007400AA003DFFE60005
10
+ 3FFFF810027FFDEFF93005CFFC6FF0CFFB7FFA80021006F0025FF9400350017FFE3001FFFF8001AFFD1005BFFB3FFE4FFD4FFFC0016FFCB0024001EFFF3FFF4FFF7000FFFF00002001AFF89FF3F0003000AFFD100030018FF9EFF73FFC900A4FFFA002AFFC5FFA4000C000CFF9AFFE4FFDE00940033000F0049FF83FFA6FFAFFFD7FFF5FFE80050FFE9007100360012FFE40063FFF7FFDEFFB90053FFEDFF7FFFFC00200002FFD8FFCDFF92FF5D002DFF89FEE5001BFFC9FF8C00270033004F002000B1FF78FFE2FFCCFF790018FFDC0002FF9DFFD40022FFCF0049FFCAFF3BFFF9FFBCFFF4000FFFF8006BFFD7000FFFB6FF550037FF72003D0065FFB7FF99
11
+ 037000DFFC2004E00280079FFF5FFDA001400940005FFD90006FFEAFFE3FFD400350006FFF00047FFF9FFE60002004200000007FFD4002FFFF20067FFD3FFDD00220025FFB8FFF8001D004D000FFFEFFFE7FFE30034FFB5FFBDFFAA00040018FFCC000CFFE400A400440014FFD7FFE10005006FFF3EFFD20018FF72FFC9FFB1FF95FF8C000E0011FFD4000FFF80001F00300014001FFFFEFFAAFFEC00330045FFC30012FFAE006100170048FF98002A005FFFDEFFD8FFD40040FFE9FFA500220011FF99007B0065FFD7005AFFD30008FF8FFF83000F000A0017FFBDFFEC001F0069FF38001F003BFFD9000600310006FFE8002CFFE4FFBCFFB3FF8B0017FFAE
12
+ 3E0FF83FFFB00200035005EFFD3FF6BFF94FFD0FF9B00200032FF51FFC7FFF30049000CFFFFFFF1FFE7FFFCFFE600020006002CFFFC0036FFAB000DFFCA004A0007FFB60011FF9CFFC7004EFFE80014007000130076FFC6000BFFFBFF95FF7CFFF5FFE6FFC20028FFD20018FFE0FFB9FFA300360004FFBCFFCBFFE80017001E005C0019FFB30030000BFFFAFFFD0032FFC500B10018FFF8FF9C006A000C003D0016001A0007002CFFA2FEEBFFB3008E0001FFC9FFF6FF4BFFE0FFB7FFE4FFDAFF1D0041FFF7FF98FFC4FEDEFFE20024FFDDFFDBFFE4FFEE0005FFC40034FFB2FFCDFFF1FFF70014FFFE0021FFF3FF4FFF97FFE10030FFA7003D0019FFD5FF85
13
+ 3EAFF53FFD7FFD8FFE700A0FFE3FF80FFD7003A000E00430009FEADFFEB003100030000FFA4002500210097FFF3FFC20018FFE4FFF8000E00100033FFC6003AFFB9FFDE003D000D003800030008000AFFA1FEE5FFA80064FFF9003AFFEC0029FFDB0051001EFF4E002400080018FF85FFDB0090FFE2FFADFFF5FF92FFD2FFA1001D004C00130045FFD60038FFBF0069002F003DFFD3FFBD002B006B002BFF30FF8F00250016FFB9FFD90005000FFFD9FFB5FEEB0034FFEA001CFFF00004002CFFED005E0055FF85002DFFA80012001CFFB4FFE5000F00190024000FFFAA0002FFEBFFFF0007FFD3002600B9FFED0045FFD0FF7C0053FF26FFF70043FF92FF22
14
+ 3F900430003FFF40040FFD50003006AFFF9FFBBFFF90025FFDAFF97004EFFE80007000BFFF2006400030013FFE0FFF0FFE9FFD5FF65001E0046001DFFFAFFBCFFC8002A00130075FFC8FFCEFF9EFFE8FFD3001AFFC5000700490032FFEBFFCB001A0039FFA900210000000EFFCBFFE1FFE5FF6F0021FFE9FFF70018003CFFF6FFD6000BFFC6000EFFF80003FFD2000FFFE8FFA1FFB400060001FF9D0020FFF50003002E001D00320007001600490003FFE40051FFC00005FFEB002DFFDAFFEDFFD5FFE9FFE9FFF8FFE7FFCA00090029000AFFEF001FFFF9FFFB002400240002002100120039000F005B0025FFF8000FFFE00051002D005B0036FFF700090008
15
+ 3DF000BFFE3FFF50050005DFFA6FFE4FF9DFFC7003AFFEEFFFE004BFFE00009FFF90002FFF1FF8F0052FFDFFFBE00100012002DFFFB0025FFC2FFFEFFF3FFF60056FFAB000CFFCA0004FFFB0056FFFB001A0008FF80FFB4FFFAFFEB002E00350013FFE5FFA2FFC20014FFE6006BFFB6003A0062FFA9FFC0FFF70036FF3F0026FFA5FFFF002DFFCAFFEBFFD2FFFEFF9100050023000A0015FFF00054FFD3FFCEFF90FFE3FFB5FFF10012FFEBFF8A000A000E0081FFECFFE6FFFE000E001C0024FFD6FFC8001FFFD4FFEEFF9C00270038000EFF7B002CFFE1001E001F00130056FFE4FFCDFFEE000DFF790056FFFCFFF7FFF1000EFFB3FFF2006BFF21000FFFF5
16
+ 029FFE8FF7CFFD5FFE60011FFE4FF5C0014FEFF001C0039FFCAFF75FFAFFFC20030003BFFF2004EFFCAFFF9FFC6FFCBFFCBFF94FFCD007000390000FF9A005EFF74FFD40009FFF1FFBAFF61000AFFB0FFD4001AFF350000FFDBFF0FFFA70016001BFFDAFFA8FF5D0050FFCC00180000FFA701100002FFD8FFF6FF83FFFD000700000033FFC70013001BFFCEFFE000A4FFE30048FF9C00130004002DFFE70059001B0017FFE1FFF2FFEFFF9DFF7BFFAFFFB4FF3EFFAE0017FFE1005EFFC600400007FFEAFFF7FFBBFFE4002400030006FFAFFFD7FFF8FF59FFE60000FFB4000DFF77FFFCFFBFFF4F005CFFC4001E0013FF9EFF6E000800A5FFD300590020FFEE
17
+ 3F6FFF80042FFBD001CFF9FFFE9FF43FFAFFFEDFFB60045FFC2000E00180064FFAC004000300094FFD2FF60FFCFFFF7000F001C0050FE820075FF9CFFA90031001A00550027FF90FF9EFFF40023002EFFE0FFBAFFF5FFAAFFDCFFE8FEDB0013000100380025FFD10001000FFFE500850005FF78FFA5FFB7FF75FFF80025004600280022FFE2FF83FFEFFFBC0019FFDFFFF4007300010037FFEB0006005000580017FFFAFFA4000FFFD0FEFCFFCBFFFD003800A60077FFC3004A0033FFD7FFC80030FFBDFF8BFFE0FFCAFFEE0026FFCDFF81FFCAFFD0003F001B0048FFDEFFC7FFBD004F000FFFC7FFCDFFD4001CFF470031FFB1003DFFED002A003AFFFBFFDE
18
+ 3E60005FFEEFFB9007D001CFFEAFFDBFFC7002B0015FFC5FFA10035FFE9FFD9001C001DFFF900120002000EFFDA00300008FFDF0091FFABFFEEFF88FFB8FFE6FFED002EFFE40012FFE6FFC0FFEEFFB4FFD4FFCFFFB6FFD1FFF3FFF8FFC1002BFFC8FF9F00250020FFF4FFA2005EFF2EFFED003D001000110052FFD6FFD3FF47FFC70000FFFEFFF40006FFD8FFB1FFF6FFD4FF89FFCDFFEBFFA1004F004EFF6BFFCB001FFFB0FFC10052002FFFFCFFE3FFEB0033003C0025FFB6FFC700200038FF3FFFD0003FFF52001E005BFF2FFFFEFF7EFFE5FFF300410032000F004BFF96FFFD0009002A0047FF70000200220040FFF900010015FF92FF67006900C3FF8C
19
+ 01E0013FFAE0043FF46002900270071FFD0FF08FFC900BBFFCDFFD6FFB7003E00200068FFC1FFC6FFC5005A0028001B001700390026FFFAFFA3FF7BFFEAFFBE00550037003E001BFFDD001CFF7D0028FFCEFFFCFFE70004FFAFFFBF002A001E003900150037FFC2FFC0001F0024FFB8001C000FFFDFFF9BFFF7FFE4FF8D00250028FFEC00880008FFF3001E0025FFDEFFAD000B001CFFDB001A004FFFD4FFF9007C0096FF81002D0010FFAAFFDC001A001600280046FFB4000EFFBAFFDC0064FFBB0036FFA500D30036FF67FF5800110069FF920015FFD3FFDCFFB8FFF0FF76004A002EFFECFF9100BC009F005DFFCC004E0071FFD9004F001F0091FFBF00EE
20
+ 0210000FFCDFFBBFF900023FFCB005DFFE50012000EFF7EFFD8003E001800200018FFA1FFD1FFCE000DFFF9FFFB000A00330021FF70FF4CFFCFFFCD0020002C0008FFF8FFCB005E001700F1FF8D0009FFE4FFD000530049FF8000CC003E0024FF46FF95FFCBFFAF0013FFC80047002CFF6BFF50FFFC0046FFE5001D005D005E005AFFD2FFA000090021000EFFB5FFB5FF4D005F00230002004AFFEA0010001BFF9C00150047FF340011007E0016000EFFF5001D0027002DFFAFFFF9FFEB00220010001A0018007EFF96FFE70014FF4E001DFFD2FFCF0011FFF5FFCBFF7FFFCCFFFD0012FFB700680076FFE2FFA4FF6D001E005A0031FFD2FF9D0003FFF50011
21
+ 023FFE1FFC8FFF4FFAFFFBCFFFDFFF0FFE9FFEA001BFFA500160001FFC9002F00710029FF94FFD7002CFFCE0011FFB3FFE80025FFD60065FF8AFFD00001FF8B00990061FF7F0066FFDFFF80003D0029FF97FFA3000F001F004AFFADFF9FFFC9FFD8FFEAFFED009EFF9A0040007B0000FFF7FEC500670053002AFFC60016FFC3FF6FFFE40016003B002FFFA6FF8BFF7AFFFDFFCBFF8EFFE00067FFE30048FFA70028FFDCFFCEFF90FFE80055003E006A007DFF93007BFF93002EFFAAFFAEFFD7FFD1FFA6FF8D00C1FFDAFFBFFF98FFEC008AFFCBFFB50041FFAD00080052FFA9007EFFFFFFB30042FF5EFFA90012FFED00120013004AFF51FF4E0034FF5E0000
22
+ 00C0005FFFA004FFFE000E80048006C002C00E4FFF7FFE6FFB4003E002AFFCB001DFFF1FFC9FFD3FFFA0050002BFFBEFFF8FFCEFFF9FF84FFEC0092FF670025FFE30021FFB00014007401D40016FF5BFFBCFFB9006800420020007800010049FFB9003C0046FF86000AFFA1FFD900720037FF64FFE80027FFE20012000500B40025FF48FFF2FFAFFFE200780007FFC20010FF0FFFD900200050FFA8FFACFF93000800310076FEB9FFD200AF003D001CFFD2002BFFE1007AFFF00054FFBE0036000A00360006FFFCFFD8FFA0FFB1FF08FFB20097FFE2004AFFAAFFFEFFA7005AFFD1FFD2FFD10074FFDB00D7FFFDFFF00038008E00350013FFF800040035007A
23
+ 0150023FF3FFFEC002FFFFCFFE2005CFF91001A0069FFF7003D00030019FFC10017FFD400660000FFD90010FFFD0043FFEFFFCF002EFFB1FFA6001E0027FFB5FFF8FFF5FFA1FFF3004000790027000EFFDAFFD9002A000BFFC80001FFCB0011FFC8FFF5FF4FFFE0FFCE000CFFFBFF8BFF7EFF90FFB70013FFDD0028FFA60001003DFFD9002AFFE8FFB7000DFFEDFFFDFF4CFF87FFCBFFED0042FFDC0037FFD2FFE7FFF5FFD7FFEE00200055FFA100610067FFEB00250055000EFFC7002CFFF7FFFE0052FF67FFDBFFC2FFEDFFC900550026004BFFEE002E002D00290025006D0041FFB6FF8AFF8DFF9FFFD5000C005F00050034FFBAFFD20040000600360059
24
+ 037001F0007FF4AFFFB007C001DFFEBFFF200110075002AFFB5000E003DFF8200340016003200280002FFFEFFEB00170007FFE1FF8FFFEB0032FFB90024FF4BFFF4FF5CFFF8FFD3FFF9FF84FFE7FFA500060045FF85FF880019FFEB00610041FF57005D004EFF8A000AFFA00015FFB2FFBE0075FFFB0022FF69FF91FF93003E0010FFF5FFDAFFA8FFEBFFE00016FFFAFFCE0036FFDAFFA30057FFF7FFCCFFA7FFE1002AFFBD003E0023FF8EFFFD00850011FF8B0030FFE400320008005F000FFFFBFFC9FFE9FEF3FFDD0013FFC80011FFF3FFF6001C00020027FFC3FF5BFFD200390015FFB0FFEEFFE6004DFF85001CFF9C0048FFECFFBF004D0021FFA1FFAD
25
+ 3FFFF5CFFDEFFFCFFC700220023FFBE0004003700040007FFE6FF7C0005004300290029FFF8FFCFFFD3000D00010008FFE70033FFF5FFEAFFFAFFE9FFB80045FFC00035FFD5FFD200190033FFFD002EFFC3FFCB003BFF1C0012FFEF0082FF75FFCC009A001C0028002B0037FFC0FFFFFFFF0038FFD6003EFFA0002C0009FF74003A004FFFED000EFFEAFFFFFFF60027FFFDFFFFFFB1002A000D0022FFDEFFF50013FF79002E0071FF7CFFD2FFAAFFF3FF910030FFF3FFED003EFF92FFDB0054001BFFBCFFC5FF8BFFF0FF91001600010013FFD30058FFF6FFFDFFFA000BFFD3FFB0FF92003A001DFFF8FFBBFFAD0029FF9FFFBDFFC7FFA0FFF2003400320073
26
+ 00C0047FFC60035FFDE000C00090017002CFFAC0017FFCDFFBBFFEC00430028000C0029004800520051FF8A000B000D0009FFE2004F0052FFFAFFF20002FFF6FFD900320014002A004C006EFF96FFAD0035FFFF0010FFB2001F0027FFE700460013FFD9FFF2FFDBFFF3002A002AFFD60042FFF4002800790035FFD7002B0061FFD3FFFFFFF2FFF1FFF4FFAA0020001EFFFBFFBAFFEEFFF6FFDD002DFFE7FFD900420014003CFFE60016FFE0FEFE0080FFD20028FFD0FFD0001D003EFFF000150007FFB6FF75FFE3FFE7FFCB0035FFD6002EFFCA0035FFAF0006FFDB0001FFFAFFBAFFE9FFEAFF5B0004FFF8FF8500250053FFE200AB008600710062001A001E
27
+ 3E50012FFEA00880010003BFFF0FFE2FFAFFF680003FF8FFFC5FFDCFFED0040FFCCFF35FF8F0054000FFF7DFFE0FFEC0021FFD5FFE4004900300041FFBEFF79FFF4FF2AFFF70035FF92FFCAFFFB0035FFAF0019008DFFB0FF66FFA2FFCEFFFB0018FFE8FFF3FFB70001FFE50021FF21FF9C00110025009CFFA6FFE60001002A0011FF8AFFEE000800300015003DFF80FFB6FFD2001AFFB9002200190019FF9C0028FFC8FFCDFFCAFFDFFFF5FFD3FF65FFEDFF95FFF8001C001D00310020FFB6FFA70039000FFF81FFEAFFF0FFD50021FF3FFFEDFFABFF9F0000FFB700190018001DFFD60021FFDEFFB0FF650019001F001F0026FF86FFCFFFACFF40FFC3FFF7
28
+ 3F0FFBA0014002DFFCB006FFF7E001AFFCB003D000900900057FFA10014FF82FFF7FF4FFFF8FFBD0027000A001AFFC6001B0017FF47000A003100AD0024004F001BFFAE0023FFBFFF6900C70067FF31FFF9FFCA000FFFCFFF87FF97FFC50031FFE700A2FFE9FFAF0000FFE30043FFEDFFA4FF73FFA60018FFBDFF9700030089FFBEFF88FFEEFFD5FFC6000CFFFDFFAAFFE3FF520063FFED0003FFDDFFFAFF93FFF0FFC8FFE4FF7F001F0004FFE7FFE8FF82FFE50023001D00440021FFFF001FFFE3FFB90009FF6BFFD8FFB40061FFFAFFD20052FFF20001FFC8FFCF001C0068FFE4FF0EFFA40056FF8E005B002B00050030004F006AFFFE002AFFAEFF8E00D0
29
+ 3F30005FFAEFFF6FF540042002BFFFE00020002FFFA0021FFC9FFCD00130003FFF1FF870029FFCF001FFF8CFFF5FFBEFFFFFFE30062FFFAFFF40017FFDB0072FFDF0027FFE0FFD20003004EFFDB0017001B0074FFDCFF80FFC40025FFF1001A0022FFFBFFF4FF86FFDA0008001D0019FFE3FF85FFF1FFCF007FFF96FFC800AAFFAC004F003CFFC90003FFF2000AFFD1FF8100AEFFE2002AFFFEFFE7002AFFE5003CFFCA0027FF8DFFEDFFF3FFCF000FFFBA003E0043003A000600490013FFB3FFC8003DFFB000570013FFA3002C000C0056007AFFA2FFC4FFEDFFB50005FFDB000D0064FFD8002F0061FFA3FF92FFD9001A002F0013007B003D0032001200B2
30
+ 38EFFE7000A0001003CFFD4FFCBFFECFFB40015FFB9000B003200270036FFEEFFC9FFF0FFF50008FF49002DFFED0027003E0009FFA3FFF9FFCCFFF5FFE1FFEFFFBBFFFB0029FF7FFFC6FFE5FFDCFFC0FFF20010FFDC0011FF8FFFFD004EFFDA0090001DFFB00030FFD5FFDF004AFFD8FF31FFD6FFC6FF4D001EFF7EFFF20005FF480025003DFFFFFF9A0003004E000400660043FFF3FFBD002F0017FFBC0049002D003800260033003CFFC5FFA0FFC9FFACFFA500400039FFF7FFDF001B0042FF7FFFC80019FF7D0037FFEFFFF9FFFFFFC90026FFE0FFD000510011001CFFF90007003CFFD5002CFFAD0036001F00360045FF80FFDDFF7F0036001800570001
31
+ 05B0045FFC9FFF3FFBEFED0FFDF0098004C0020003FFFB7FFD10027FF3FFFB100AEFFD3FF29FFF9001D004800060027FFCBFFEF003CFFEAFF10FFA6000C0037002CFFDEFFC30064FFE1005B004B0069FF7E0024FFA0FFDFFF7700B7FFD8FF9A00150024FFBCFF51FFBFFFF90060FFEFFFE4FE91001A001F003E0014006BFF9BFFFDFF98FFCBFFED00060002FFB60028FFCDFFE1FFAE00290063FFD30059002CFF7000220018FF3FFFF100410014004FFFCF001B00380008FFB9FFFFFF9AFFA8FFD9FFF600650031FFA40060FED30043000BFFBCFF2CFFD6FFC3FFF300200023000000ACFFF40053001DFF8F005CFFF0FF9E0049FFE300C2FFE0FFF00017007A
32
+ 3E0FFF3FF2D0030FFFB00280034FFD1FF80FFD1FF28007A0024FFC1004CFFD7FFCCFF890047FFD3FFB4FFE4FFCFFFD3FFDA0031FFBBFFF4FFC6FFF500420042FF7EFFA4000E002B00190083FFA7FFB90012001C0012002A0078FFA7FFCA002F0033FF8E002EFF81FFE8FFCB004C000FFF2200320017FFAA0018FF8B0091002EFFCCFFC5001CFFED00330048FFFA002900970050000CFFB2FFD40009FFF90062005FFFA7FFC8FF8B0047FFBCFFB0FF38FFC9FFC1001F0061001100220056001100350018001DFF13FED30001004D002E0046FFFEFFCEFFA40013FF820032FFDAFFF0FFE5FFB9FFABFFC5FF9B003B00230015000F00970011004A006FFF9600B8
33
+ 37D000A001DFFCAFF6CFFDB002CFFEE002FFFCDFFF7FFEDFFDEFFFEFFCDFFDDFFD40049FFACFFDAFFA9FFCD0055FFD9FFF40017FFECFF9900B8FFD0FFFD0038FFDCFFE8001EFFA000360046003F0026000A0035FFB8FFC7FFADFF690043003E002DFFE20036002A000EFFFC001EFFBAFF81FFB8FFB4FF71FFB9FFCCFFBCFFD5FFCB002EFFCFFFD50016FFF2FFA8FFE2FFD9FFB1FFC20014FFA9FF91FF950014FF93FFAC0031FFDEFF78FFEA0006FFD6FFBFFFAAFF9EFFC8FFE2000FFF98FFDAFFC5FFD20041FF8A0006FFD400640041FF4A000B0021FFF7FFEBFFC0FF43FF39FF90FFF2000CFFEF004CFFF4FF440015000AFF8CFFB1FFCAFFE8FFC5003AFFDD
34
+ 014003AFFFBFFF1FFF6FFC2FFD80003FFEE000A002BFFDAFFC8000EFFD70019001BFFE2000AFFA9002BFFC6000EFFFDFF7FFFF1FFDEFFE1003A0057003B001FFFFE0033FFF7FFEE004CFFF9FFA20043002C0034FF5EFF3A004DFFDC002A0026FFCAFF83FFAAFFFD0010FFF9000D0001FFD1001C0087FFD80026002FFF7DFFA8FFEAFF9CFFF60029001E00350003FF7D0017FFB6004CFFD1FFE1FFF1FFFE00050034FF94000A003CFF1AFFCE0008FFEC003EFFC6000FFF8400360015FFF5FFE1FFCA0007FFC70032FF700025FFF10028FFD4FF71FFAB0001FFD2000DFFD8FFBB004CFFC200240009FFDAFFE4FFD4FFEC00210047FFCC003EFFEEFFC0FFD5FFCD
35
+ 3D5004800700063009CFFBBFF9AFF96FFC9FFD8001C001A0005FFAB0079002BFFEEFFE10074FF05FF8CFFDAFFB10068FFAEFFF9FFB7FF7EFFFBFFD9FFF1FFCEFF9F001EFFF2003EFF9AFFA3FFCEFFDC0069FFC20038003A0000FFE7FFB4FF6EFFCCFF7AFFFC001DFFE100190000002AFFB5FFF5FFFD000FFFA20049FF98FFF3FFB6FFD90033FF9DFF61FFB7FFF4FFA6FFAC000B008EFFD10009FFCCFFC50038FFD1FF7B005E0010000FFFC400570030FFC4FFE10040FFF500540002FFF5FFF7FF4B002CFF9E0003FF3BFF78003B002FFF6AFFAF0038FF63005300030011FFA80069000AFF5F000EFF6EFFE9FFE6FFA20051FF8D006B00460028FFB6FF630046
36
+ 004FFF3006C0010FF92FFA2FFF70023FFFF00260066FFB2002A000D004F0083000300360020FFBA0045FFBDFFF700440003FFEDFFE0FFFB0047FFAF00200010FFE000550042FFBDFFE9FFD10047FFDE00950004004900470026FF65FF550094FFFEFF6BFFC5FFAD0014000E005CFFB2005A007BFFBAFFC4FF7FFF72004E0002FFADFFDE001C00400005001700100056005E007C0010FFEF001C0041FFD5FFD90030FFD7000300210029FFC40037FFB8FFBEFFD70065FF92004A0041FFE7001CFF650016FF66FFEAFED80000003CFF84FFAA0005004CFFECFFC70011FF66FF73FFFF0030FF5EFFB0FF80FFE40077FF7C000C003000DB000F002E001AFF6F003A
37
+ 3D3FFEB000E001DFEDD002DFFD900100003FFDEFFE600010066FFCB0027003CFFD4FFE9FF70FF9C00270001FF9D0010FFFD0011FFB1002B0079000B003FFFFC001600450045FFF0FFFEFF7000270073FFC30000001600640002005BFFE50043FFCB003CFFA4FFC2FFBBFFF5FFB3FF5600360056FF900009FFC80011004BFFE5FFBBFFA3FF8F000E0012000CFFEAFFD7FF80006C00450025FFD2006C0010FFD6FF83FF80008DFFE0004BFFFA0033000DFFC7FFE00072FFB70041006B005C00010032FFCEFEAB00030049FF7CFFCBFFE2FFD8FFC7FF76001AFFE9002EFFD1FFF3FFF5FFC5FFE8003C00D0FFEF001AFFB1008DFFF90049FFE1FFA2FF42003A0006
38
+ 03B0032FFD3002AFFEF000EFFDF005DFFCF003AFFA3FFC4001AFFE9FFAFFF2A002FFFC4FFA9005AFFF8FFD200080030001AFFAFFFF5006C0000FF75FFFA00040057FF2C00160051FFFDFF54FFF6FF9300180043FFD80012FFE4FFFE000E0023FFE2FFB40025FF9E0020FF9D003E004F0027003BFFE4FFFBFFC6FFE4FFA0FFBA0011FFEE0002FF74007D000800080066FFD6006AFFD9FF960006FFFAFFEC0061FFC700460000FFF6002B0016FFE9FFCAFFC8FFD6FFBE002FFFF90013FFE4002E00070036FFA8FFB3007CFF3CFFE4FFCE000D004AFFF5FFC9FFB3FEF1FFF6007FFFAAFFFF005F0024000FFFD3FFD40029FF7E004F0027FFF6FFCC000E005DFFC1
39
+ 013FFDFFF93FF9CFFF90049FFE0003EFFC80035FF7BFFB20096FFEA0013FFB0FFBAFFC0003A0030FF5AFFE90002004BFFC9FFD2FFB600210080FFE10056FFA1FFF50025005A005A000400250027005EFFDB0069FFEDFF36FFB20031FFD2FFDE000C0003FFECFF57FFFFFFB9FFA0FFF70009001EFFBDFFB6FF9FFFF1006B004C0042FFD40036FFD7FFD1FFF20057FFBBFFC6FF280043FFC7FFD700280031FFAF0012FFFAFFD1FF9EFFE30021FFBE0001001D00140010FFE50031FFFC004000030019FFC5FF8F0078002E001C0011FFE1FFEC0021FFF0002EFFFA0017FFF1004B0057FFF3000E000E0062FFD500490058FFF500900050FF7BFFFD0025FFC70033
40
+ 021000FFF2EFFD1FFB2002A000FFFD9FFFE00A0FF8C0016005D004CFFEEFFF3FFD2000A0014002FFFA1FFD6FFE5001FFFE2FF9AFFE20000FFDFFFC50006FFEA000600140006FFC70043FF170038FFA6FFB40015FFDDFF22FFBAFFF2FFFAFF9D006A00620089FFAC00310058FFD9005DFFCCFFE7002F0040006E0010FFE4FFCDFFFA0005003E001A002F000900340022FF0B0007005B002BFFB6001A002CFF860059FFF9FFE8001E00310030FFF300570009FFA000200011FFF9FFB8002E002D003700310034001D00160043004BFFDF00070062FFF3002EFFEEFFE800120030000A002C001A004DFFFC0026000E0023FFDF0017005000420031001FFFD20055
41
+ 04A002B00340044FFB400150053001EFFD80016FFEBFF94FFD5FFF3FFDDFFB70076FFB9FFFA00700008FFD90008FFFFFFFDFFD5FFB80032FFBAFF88FFE0FFE50007FF9FFF8900440054FF93FF66FFD5FFE0006BFFD6001C00160015FFDA001DFFB1FF6B0033FFA9FF8DFFED0012007EFF97FFFE008BFFEAFFE1FF70FF9300290016FFCFFFB0FFC9FF8DFFD6000D00280008FFEAFFBBFF5E003FFFF30054002EFFC1002EFFB5FFC6FFA7FFE500AAFFDB0038FF8B001F0025FFB9002BFFA60058FFEB0035FFA2008FFFED000EFFF1001BFF90FFFD0053001AFFF3FFE80010FFD7003EFFF7004E0017001AFFC0FF9700030007004E0022FFB5002C000AFFDDFFF5
42
+ 3F20010FF9A00000024FFE9FFF5FFC2FF99002800230027FFDD0005003AFFECFFF3000E0039FFBFFFBCFFED00470053FFD60020005BFFFBFF4D000D000CFFD3FF4B0006FF83FF7400BDFF9CFF82FFE80073FF9B00A3005000A10032FFD70009003900340088FFFDFFDE00000015001DFF94FFD4FFED0009001A0005000DFF74FFAAFFD1004E002A005BFFFF0044002D002EFFB4000D001CFFE60004FFEFFFFD0048FFE7003DFFF7004EFFC5000F002CFFE5FF7A0031FF9A00470022003C000F00590011FF70FFC70008000F0036FFCE0092FFC4FF8CFFB2002E00090019FFE8FFCD000D0010003BFFE70034001DFF840037FF86006C00390046FFE7FF3DFFDA
43
+ 3F900050027FFEE00240015FF9C0006FFD50019FFBAFFBFFFE7000AFFE7FFD6FFAFFFACFFCB00B2FFB2FFEBFFC30001FFE000180057004CFFE5FFE1FFA6FFCD004BFFD7FFB60011001E0013FFF9FFEAFFBBFFEA0055FFBAFFBB002DFF78FFD8002BFFFDFFF7002200220036FFD1FFFD00240025FFCD0061FFF8FFFFFFDCFFEEFF9AFFE4FFF4FFCBFF90FFCE000FFFFBFF830020FF73FFF6FFE9FF99003AFFE9FF19FF9B0010FFF2FF99FFE1FFCE0017FFB1FFD8FFF10014FFF4FFD7000D0002FFC3FF9AFF94FF99FFE0FFAE0009FFCA0024FFD20003FFC6FFE6FFFBFFEA00600066FF93FFE5FFDC002A000AFFC80055FFEF004DFFF3002F00670048FFEBFFC7
44
+ 3EFFFF4FFF1FFBAFFF2000BFF93FF580010FFBF0008000BFFFCFFCB00570031FFF20054FFC4FFEF0067FFC5FFEF002BFFD30003FFED0007002F0013FFFEFFF80017004E005B0021FFF300360072FFF80011FFDBFFE8007D0017FF71FF89005D0042FFD30051FFDE001CFFF50048FFBCFFF500FAFFF20033FFB00029FFD8000FFF6E0015FFE3000B00040039FFFA0041001A009F0013000F0029003F0082FF9A00390004FF8E0026FFE6FF5B007500140010FFD10036FFB7FFEF005CFFD30008FF45FFFEFF5EFFA3FF90FFBD002BFFEDFF9BFFA80020FFFC0023FFED0049FFB800200011FF69FFDB005300650023FF4FFF8BFF770022002CFFCD0035FFC4FF8B
45
+ 3FCFFD2001DFFA40070FFF5000AFF9AFFD100430046FFC8FFC800050006FFFCFFBB0015FFA10019FF980027FFE9001FFFE4FFECFFF2FFED006A000B0014001FFFCEFFF9000AFF9BFFE5FF5FFFE8FFE90031FF83FFB70080003200BA002D00000038004CFFF4FFC40026FFE90066FFC8000AFFDCFF1FFFF0FFF7FFF40001FFCA0037FFE6001000200015FFD4FFBB0043FFCD00500036FFECFFBF001CFFD9FF89FFCE000FFFD300140011FFD3FFC1FFEAFF9CFF860032FFF4FFFF003EFFFE0004FFD50015FFFB000A00340035001CFFC5FF56FFCE0052FFB5004CFFC5FF75FFF4FFD8FFDEFFE2FF78007C0058FFFE0003FFF9FF990010FFCAFF62001E0024FFBB
46
+ 003FFD4001CFFE60067FF960004005BFF6B003DFFF0FFA6FFA20014FFEEFFF7FFF4FFFEFFF200F0FFC4FFB4FF9BFFEB001BFFD7FFD0004F001AFFE9FFA9FFF40004FFD8FFF0008000110079FF93FFD7FFD8FFF9FFC0005B000BFFD9FFE2FFE40018FFC0002AFFF8FFAFFFEDFFDA001D001DFF4E00020023000FFFF9FFD10022FF80002EFFDBFF840000FFECFFF50010FFEDFFA40013FFFBFFEBFFD10021001DFFED0034FFF5000FFF78FFE8000A0020001E000E003FFFD3FFFA001EFFA30042FF8B003DFFB2001D0000FFE6002E001F00320009000DFFBB003FFF94FFE30046001BFFD7FFBCFF860004FFF20002FFE6FFBDFFD10039FFF8009FFFF0FFC40077
47
+ 3A4FFFAFFB0FFA3FFD4FFD90003FFF3FF910055FFA8001DFFFCFFF30008002DFFC3FFD3000CFFCEFFE1001CFFC90032FFD6FFCFFFF2FFF000840001006500000000FFE2002BFFEEFFB4FFD5001600530006001AFF6FFF96FF960037FFB4007AFFC00001FF87FFE4001300080015FF9E00260016FFF7FFC3FFB9FFEC0073FFB0FF9FFFCF00410011FFE200010045FFA4005A004FFFED0020FFA6001FFFD2001CFFB9FFA200450029FFC80004FFEFFFF5FFB30053FFCBFFF10015FFD3001DFFE0FFD8FFAFFFDAFFB6FF4D00900074FFC9FFB9FF8A0011FFFC002500100008003DFFF50020FFAAFFEBFF7EFFC50026FFB500120046000600470032FF6800010039
48
+ 3F50029FFA1002D001EFF79001D002BFFE8FFA3FFBF0019FFA9000F0022FFEEFFF20005001AFFE8FFE3FFC10023FFF90002FF6BFFEC004500280005FFD2FFF4FFAD0043000C00330046FF610039001A0025FFC3FFA5FFBB010CFEE8000200710074006D0008FFC7FFF2FFEB0016FFC6FFFDFFCBFF9EFFB100270005001CFFF7005C000E00000035FFB2FFDB0023FFFDFFB60035FFFE001AFFBEFF5DFFF50051006E003CFFFCFF7BFFF1001BFF75FF6EFF90FFB0000100230004FFEE003900400020FFD8FFDF0026001FFFDAFFEBFFCFFFCD001E0068003E004DFFD0FFE0FFF8001BFFB30011FFB50004001B00090002FFCBFFA4FF93FF14FF67FFFD006F0000
49
+ 3F30015FF4A00ECFE3C0092FFD4FFA10028001C004D004E000CFFE2FFF0002E0035005CFF3300680010FFDA0086FFCEFFB3001CFFDEFF55002E003C0002002CFF3F0069FFF00000FFCDFFE0FF13FF85FEE7FFBA004A001BFF8E004CFFF0FFCF00530001FFD5003500190076FFD4FFF8FFD3004EFFD90056FE83000A0060FFB7FFBCFFF50018FF93FED5FF930043FFEC0040000400150001FF5AFFD0FFCDFFDBFEB0000BFFCAFF9EFFC4FF33002E00EA00370075FFF70006FF2E00400058005FFEBB000000060030FFA100220001FFE8FFD9FFD00020FFC3FFFDFFFA00170040FFD8002CFF8DFFF0FFF2000F004BFF59002D000FFF020003FF95006EFF6AFFF3
50
+ 3E7002BFF0E0003FF9FFFFDFFF1FFE80078FFD4004C000D0035000AFF8A0042006C0036FF50FF7C0035001B00AE0012005B003AFFE9FFFD000FFFADFFA3004AFF08FFFB00190023FFCB00240008FF5DFF96000A00340020FFDEFFF7005D005B0045FFFF0053FFFEFFEBFFD7FFC7006FFFF1FFF90021FFE9FF800007FFCC009700090012003A0020FF0DFFCE0058000EFFD7FFF1003C001AFF5400290033FFFCFECFFFFDFFC0003500340041006A003C004800380015004FFFECFF9800320037FEB1FFE3FFA2FEE1005200480006FFF3000BFF64001DFFFF0030FFE8FFC9FFF2FF870036FF68001CFFC000320053FFF0002A000DFF63FF54FEDAFFB4FF490050
51
+ 3CFFFDF0046FFD60106FF81FFE10064FFDE005FFFCFFFD7FFE4FFFFFFF0001800390061FFFE0070FFC50014FFCBFFB5FFED0030FFDDFFEDFFE7FF8D0009FFD1003F0017003DFFE70001006D0001003AFFE1FFD6002DFFF20081FFADFF3C0096FF9EFFF5FFCA0044FFDAFFD3FF9BFFFEFFDF001AFFF400030019FFE40019006DFFB4003BFFFDFFC40047001CFFA40046FFD5FFDC0008FFC9FF8E0016FFE50046FFF9FFF300200069FFFFFFEBFF6A0052FFBC003AFF9D0002FFF4FFE5FFF3004D003FFFA5001EFFF3004A00560058FFFA00350065FF69003D000500060046FFE5FFD0FFD50035FFF7FFCE0092FFC90008FF99FFDAFFDF00240056FFE9FFF60086
52
+ 012FFF7FFFFFFE200060007FFED001BFFAB0086FFD4FFE1FFE8FF5CFFFB0015FFF1007C0007FF83003B0035FFF0FFF6FF90004BFFFEFF58FFEFFF5F00000001FFFA008CFFD10009FFA9FFE00026FF960030FFCDFFA3005D0023007BFFA5009A00150047FFD200000028FFEE0027FFB00002FFFA00100003FFFE007B0026FFBCFFF30037FFC0FFF300540005002DFFE2000B0018FFF8003CFFE00062000E0017FFFFFFE1FFE5FFD4FFBE00A3FF83005D001EFFEC0002FFD0FF74FFBF0004FFD20016FF81FFAF000DFFFD004BFFDBFFBFFFD8FFB9FFDBFFF70008FFF8FFEFFF7AFFC6FFA0003E006AFFFAFFDE0000FFCEFFCC0048001E004DFFE5000FFF93FFB0
53
+ 03FFFC7002CFFC70009FFB0004E008A000F000AFFAEFFB1FFC20031FFFE00290043FF6FFF5300220017FFDC0035FFB8FFE5FFD7001300F7FFA8FFE90078FFD8003CFFF3002D009F001EFFAC0056005F001BFFE3000A0065FFDCFFE5FFD4FF980049FFD4FFAAFFE3FFE6FFD6FF25FFEC001DFFB1FFAD009B00260034007B0029FFF6FFB8000B00050075001A0021FFAE002AFF0B002CFFD3FFF9FF77000CFFD2FF3DFFD7000CFF9B00380065FFAD00830097FF31001E000FFFF300050038FFE30056FFCC002E0083FFD8FF63FF39FF82FF1400290004FFF4001FFFB7FF890039FFBDFFEBFF4BFFD0009700360010002000100011FFC90005FF5B00A1003BFFB6
54
+ 02F0019FFE1FF6DFFB50003004B002C002E0075007D002500010052FFC100000001000B00650057FFF60019FFB80018FFF4FF89001E0008FFFA0003FF7DFFC40054FF9DFFF9003DFFB20008FFBC0014000C00060003FFFAFFF6005DFF66FF14FF9C0050004DFFDFFFBA0011FFCE0004003AFFA9FF7A0048FF56007800110052FFCC0024FFE10025000FFFE6FFD2002800070047FF97FFD0000DFFE3FFDBFFE0FFF0FFE4FFB2FF8E00190032FF9A0039FF7DFFC00013FFBAFFB8FFCF000F0016007E00330022FFFCFFA0FFDB0019FF290058007DFFFE004D0053FFFEFF2A0041FFE200330066005DFFA5FFEF00150013FF4C0026008B006AFFF10028FF9AFFE0
55
+ 039FFCCFFDDFF990010006E0011FFE9006E002DFFFFFFF50024FFEEFF7CFFCC0019FFD9FFA50059FFA20002003600280066FF610003FFAC004FFFE90048002EFFBB001BFFF8000DFF79005D0035001300040007FFCCFF96FFA8FFE9FFEFFEA6FFF8FFE6006AFFC2FFE2FFBAFFED0004FFF8006D00110036FFE90009FF4DFFF2003A0074FFFBFFECFFC6FFCBFFD400090056FFFFFFA2000CFF95FFD7001F0002FFF70004001BFFB7003B00330041FFC4FFDDFFEF001CFFCC0075FFF3FFC5FFFE001A005FFF8AFFA40016FF8800030034FF95002F0028002C0008FFEEFFCF002FFFB300530060FFB0FFA9002600100032FFD3FFD2FFC6FF27FFC1000D00190064
56
+ 3B6003D0080FF7E00640031FFF3FFEBFF47FF9F006C005DFF05FFC3FF8BFF92FFC90013FFC700480017001EFFD5FFF7FFA7FF7CFF2B0064FFBFFFAA0042FFBA002EFF92FFF5FFF7FFF0FF530006FFAEFF740043FF3FFF900096FF370066FFA7FFB6FFEAFFFDFFBB002A0002001DFFA2001000530007004AFF84FF69FF8A001D003B0072001BFFE9001FFFCCFFEE00570021005F0057FFCA0030FF75FFF10037FFCA005E0078FFDEFF75FFDCFFC4FFD1003EFF44002DFFEEFF18FFDC008B000400C0FFD100FE0003FFB9FFC60016FFEAFFCC003D0001FFC90028FF910010000000A700020018FFAF00180000FFAC0034003BFFCEFFDCFF870091001C001CFFDA
57
+ 006000A0088FFDAFFEE000FFFFAFFA3FFFA003B0032005BFFE3FFECFF91005D0015FFC2FFE8FF8AFFD0FFF2FF91FFE10017001CFFF1FF7D003C0019FFFDFFF90081007C0027FFB4FFDC001F0024002F0033FFCEFFB6FF3C000FFF83FF7D0004FF8800080056000100230010FF2AFFE7005CFFB5FEC80048FF830025000AFF9F0048FFDF000CFFFBFFE4FFF20032001A0009001CFFDF0017FFF00031002C0005005A00550031FFBCFFFE003CFFB400450044FFA9FFE5000FFFD3FFB10008003C003AFFDC005CFFF8FFD9FFF2FFD3005FFFBBFF82FFFF00240017002BFF73FFFFFF21FFFA006AFFD1FFBDFFD8FFE2FF97FF79FFCFFFD8FFEB000BFFDC002EFFB3
58
+ 3DEFFF30070001B0035FFD60005FFDEFF6DFFC4FEB5FF94FF230005002D001F0091FF4F0013001BFEFEFFB1FF5A0014007BFF5A000BFFFF00650021FFFB0001FFF0FFEFFFF1001CFFF1001FFF4D0062001CFFDDFF32FF93FF7B0016FDFDFFB3FFF4000EFE520016FFD500210019FFB100540014FF5E001EFFC4004C001C0024FFED0060FFC3FFD5FFFB0014FFE5FFF0FFCDFFF9FFDB000D0009FFAE002200130050003BFFA3FFDE00030045FF10FF66020D0040FFB70032FFA1000500200008FFD8FFE4FFCA001D005EFFC4FFF4FF96001F002C004900700023FF7D002D000AFF74001DFF9E006EFF5F00280023FFFDFF5AFF94FF73FFA0FFE4FFD000480035
59
+ 03A0009FF3EFFF700170001006E000F009CFF430054FFEB005A0006001B00490041FFFAFF5900C1FFFE000E0049001CFFFA0026002A00080076FF7DFFF6FFA3FF64FFA30018FFFD002C0020FFB30058FEA400310009FFD1FEA9FF8D003000120028FFC300130082FFB10021FF95FFCCFFED003DFF41FFD9FEA2FF79FF60FFF5FF4D004F0048FFF0FF83FFB5005FFF05FF6EFF93FF57FFDEFEEDFFEDFF99FFB1FE98001DFF990003003C004F0069FFD8004B000B0024FFE3FF59002E002F000AFF92FFEBFFA0FF70FFC200210049FFD300BB0044FFF8002A0013FFFDFFE20011FE4D001DFEF1FF90FFF4FFF000520061FFD7FFEA0007FFC7FEF10002FEFAFFEE
60
+ 00C0028FF99FF910025003F003B0038FFD0004A00070029002D0069FFEDFF720005005EFFCC00630042FF970026FFD6FFE3FF7AFFD300B2001CFFB00014FFC1002DFFCDFFDE0065FFDC0081FFD2000F003B002FFFF7FFD4FFC0006A001D00120005001EFFB5FFED0000FFE1FFE1FFA4FFFC0028FFE4003B00500002FFEF0026001500350041FFAC0008002E002D005F0015009F0035FFCFFFC60004002C001AFF8600170027000CFFCCFFEB0013FFE7FFC0000FFFEBFFFAFFBBFFBBFFF30007003FFFF9FFC8FFD8003AFF51FFF9FFF1FF750041FFF4FFC6000DFFCFFFF9004AFF9CFFA0FF78FFF3FFE0001500270028001F0083FFD300A0FF450087FFE5003E
61
+ 3E1003101050004002CFFDCFFE7FFA4001AFFE0FFC70029FF430037FFF100070075007B0023FFE5FFC2FFF1FF43000DFFF6000EFFFFFF8200260023FFAF0003001200A9FF8AFFC0FF8F0022FF2C0031001D0012FFBF002B0040FF31FF960079FFE7FFCFFF250016FFE50035FFAA0006FFB0002DFFFAFF64FFBA003CFFD8FFA9FFF90014FFDF003B0071FFEDFFD5FFDAFFD2FFEE002BFFDF00130032FF55FFF50057FFF1FFFE000AFFFFFF67FF26FFE90038FFE5FFC3FFA5FF88001E002EFFE6FFC7004EFFF200B60031FFE0FFAEFFEE0020FF76FFD9FFD0FFFF002D001CFF0DFEEAFFD4FFCBFFD7FF46FFA5002EFFBAFFE3001D002100B2FF65008800730023
62
+ 3CA000AFFEFFFC7004BFFB5FF8B0002FFFEFFF4003BFFE50032FFE9FFCFFFC2005FFFF9FFC30002FFC600060003FFEC002AFFF8FFF70000FFA50019FFE80006FFEAFFDEFFF0FFE60013FFC4FF88002D004C0005003CFFFDFFD00064FFE7FFED0007000C0017FFB100200002FFF0FFA0FFC8FFD9001CFF950040FFFD00360028FFF0FFF3001400180046FFEBFFF2FFFEFFB2005B0002FFB4FFE800140068FFDA00120017FFB0FFB10020FFBCFFE9FF84FFDBFFDFFFEF001C00580003003DFFF3FF5B0003000D0024008DFFF3000DFFFAFFE90007FFEDFF99FFF8FFE90026FFEEFFC9FFE90015002FFF3F00310035003CFFB7000AFF36FFEA0017FFE6FF0C001C
63
+ 3D1FFE50003FFE9FFFA000BFFFF003AFF9B0046FFAA004EFFDBFFED0027FFD6003C0017FFF00069002C0002FFBDFFE9FFFC0014001C0015FFCDFFBC0059001F0071FFFB00230054FFC70015FFFF005D005400160020FF9D001B008AFF39001200080035FFC1FFC0FFBB002CFEFC003CFFB1FFD1FFE40039003D0063003FFFD40057FFDCFFB4FFD60002FFD100350012FFADFF5900080026FFAC001C002BFFCD0026FFB20084FF9AFFE8003BFF68001700AA0025FFB0FFAEFF6DFFDFFFE0002AFFB1000D00470057000E0017FFA9FFA0FEE2FFBFFFD7003F00250016FFF4006BFF810039001900620023FFD8FFDC0012FFE0000FFFEFFFE20040FFFEFFF90011
64
+ 022FFE1FFDF001DFFBFFFCF0007FFEFFF69FF6D00240043FFF4FFFB0007FFB6FFE30028FFF3002CFF8EFFA3FFC60003FFF0FFC80048004100190009FFAFFFC5FFE20008FFDF004DFFE0001EFF9CFFB8005BFFCB0044004D0030FF210027FFFFFFB8FFAC0022FFEC002BFFCA003F0064FFDAFFFEFFD6FFB2FFF90014FFEF0020FFFBFFE1FF970019FFB9FFB2FFEC00230006009F0034FFB70002FFCC0032007C001900090067FF8AFFF2FFA2FF97FF5BFFEBFF8C00170038007C001900110047000A0035012B011100510019FFEF00280010001DFF97FFFFFFE60000001BFF52FFE9FF7AFFB3FF690026003EFFE5FFDA000DFFF7FF2DFF17FFC60004004AFF9C
65
+ 009FFE0FF7FFFF80015FF87FFD3004E001A001C0007FF72002100340013FFFEFFD9FFAA005B001BFFA3FF97FFDAFFCE00400023FF92FFD9FFEA0049FFB1FFECFF9CFFF9FFD9FF9F0021FFFDFFFF00080001001B0009000BFFECFFDC008F0025FFFA0058FFF5002D000B0042004EFFE40001FFBA006EFF0FFFEEFFAA0054FF9DFFE60009FF86FFCBFF8BFF81FF8CFFF0FFD5FFD3000A0046FFFDFFBCFFF200130003FFE6000BFFACFE93FF580020FFBEFFBBFF48FFBEFFF5001FFFE3FF7FFF91007BFFD8FFF70020FFBAFFA10002FFFB000E0003002B0001FFF2FFC90059FFC6000DFF2AFFDD003D0011FFE5FFBAFFECFFFA0014006D000A00D9FFF2001FFFF5
66
+ 3A3FFF80067FFC10050FF9DFFCB0024FFAF0037FFD40035FEFAFFA0FFA1FFA7FFEBFFDA000000490036FFC9FF2B003BFFED000EFF8EFFF8FFFB000F0028FFFB0015FFF60007FFE40020FFECFF2CFFC7007AFFF6005BFFBC0052FFEBFFDAFFFCFF7F004BFF01FFC2FFC30001FE5D0037FFE4FFB7FF9FFFFD00F90053FFC1FFD50009FFB90041001900DAFFFB0033FF72007DFFD8009FFF9BFFEAFFE5FFEFFFF200AFFF690063000BFFFAFFF7FF96FFBB0022FFF4FF9DFFEAFFA6FFDCFFF9FFC00003FF86FEEFFFB9FF06002FFFEEFFB8FEE0FEFEFFC5FFCFFF8700190049001000BEFFDCFFB40016003B002EFF5FFFFDFF930002000E001A0037FFE90021FFE4
67
+ 072FFD6FFCA00650070FF84005CFFA0FFF700110016FF96FFC8FFDBFF6E004F00520025FFF2FF500034FFD10032FFE70067005800100016003FFF42FFDB0037FFEB001C002D001AFFC3FF84FFC5FFB9FFF80058001200290051FF37FFFF0046FF90FF730025FFFA000C000AFFFA001AFF2EFFD3004CFFAB0095FFE70018FFF700B7FFAF0066FF7F002800320001FFD2FFC1FF9D0014FFEC0003006B002700290058FF18FFF00041004A001F006200BE0035FF830003002200FAFFD6FF97FFE50043FF8EFF0DFF75FFFCFFE4002CFF8BFF9DFFA6FFE8FF810039FFAF000AFFB20061004C00050025FFAFFFD1002FFF67FFEF002BFF940036FFEAFFC6FF33FF50
68
+ 3FC0029FFF4FF90FFE4FFDEFFD80019FFBD005DFFF9001DFFBE0027FFB1002800000003FFF9FF53004FFFBA0038FFDCFFC4001AFF52FFC4FF67FFECFFE0FFF9FFFC0028000FFF19FF59FFB3FFC4FF95FFD3FFFDFFB4007D0006FF8EFFEF005CFFD8FEB20017002500120014006BFFB7FFEE0071FFA5FF85FFDEFF740095FF72000B005DFF8C000CFFD1007CFFD80004003EFE9900050042FFD2FFF1000D0047FFF4FD57002F0065FF8DFF8D003FFFAF008D0090FFCAFF41FF78FF57001C002DFFFD0011FF63001CFF31FFE80002007A0016018DFFC9FFEBFFF7FFE8FFCEFFF3FFAE01C0FFFFFF1C006DFFAAFF81FF9800590021FF7CFFC3004DFDB1FFFEFFD6
69
+ 3A20034FF960000FFBCFF7EFFCCFFFA00180001FFE60023FFEEFFD700510005FFE90023001CFFBEFFEE004BFEE8002CFFE20028FFF9000C0014FF8DFFCBFFF4FFFF00ACFFDEFFE70052FFB2006F00B30004FFE2006C00630001FF5D00A00070FFBAFFD60048FFCBFFC0FFE0FFB40039FFC9FFCA0024FF50FFE90005FF8BFFCC0052FF43000D0037001D001AFFD4FF77FFDCFFFCFFA2FFFC003500BA0056FFF700730009FFC1FFCC0040005300340064FF97FFD5FFBA0006FFCF0037FFD60011001DFF47FFD800A4FF6A0022002DFF5F00240018001700010012FFC1FFA7FFAF00200061FFFC00130024FF73FFAEFFD70013FFC500960021FFE9FFB20033FFF1
70
+ 05DFFCE001E005A0049FFF4FFE70048FF91003CFF9F0056FFCAFFE1000EFF67FFC7004C004AFFEA006EFFD60026FFF0FFFBFFD1008400050021FF5D0031FF410076FFE30034FFF4FF0FFF83FFAE001BFFFE00380016FF29FFFC0035FFC3006400630000FFE4FFBE0000FF60FFFAFFFC0078006DFFCEFF5CFFC3FF90FFE8FFD60044FFE30018FF600009001700210026FF4D0095001EFFB0FFBAFFDCFFDC003E0046000000750068FFD6FFA0FFF4000C0035004F002CFFC0FEF5FFB8FFB2000700650001FF75FFEB0027FFF0FFE5000EFF370014FFA1FFAF0025FF46FFECFFDA0047FFEF0073FF58FFEF004200580015FFC4005C001AFFE50080FFFDFF78FFFB
71
+ 010FFEBFFE2FF9C00140073FFA20013FF91FF9BFF81006DFF8E002BFFE7FFAFFFB7FFC10007004D000B0003FFF100490003FFD00002000C000EFFA40021FFDAFFFC001DFFA2001AFFA80057FFCA0015004F00280025FF68FF3B0061FF63FFE60016006CFF95FF300024FFD60042FFB5000F0000FF8600610068FFEEFFA5001D003F00470008FFFD0024FFF700110010000AFFBA000FFFF8FFA4FFF90039FF95FFABFFF000000027FF99004FFF0F003B007B004CFFC20007FFE10029FFF90029FFC70002FEF8FFC500140094003BFFEFFFD0001C00040046FFC6004200000035FFB500040020FF52FFB2FFE7FFB50053FF64FFE8FFE9FF73FFCCFFDDFFB60043
72
+ 3CDFFDE00350019FFE90012FFBAFFC5002DFFD20045FFDDFFEF0000000AFFFF0009001100630066000FFFE2FF4C0004FF93FFDBFF69004CFFDC0033FFDE0020FFBC0023FF81FFB9FFB8FF11FFFE00200002000DFFDCFF63001AFFEDFFB50030FFECFF9DFF46FFE3FFEC004100460013FF27FFBAFFBE002B001DFFFD002D002A000D002FFFF2FFE0002EFFD2FFF3007B002A0087FFE0FFF2FFE60048FFE4FFF700380042FFEBFFCF0001FF83FF6A0040FF66FF34FFC0000D0014FFD2FFBC006FFFAB0045FFE30056FF510003002D0040FF910041FFE5FFA8FFCFFFF1FFF2FFD7FF860019FFBEFFDBFFF300A7FFD00008FF7BFFFFFF7C0076000C0025005BFF9E
73
+ 02AFFB3FFE20087008E0030FFA9FFFB003DFFF6FFD2FFF700070023FEF8FFA70031FFFFFFB20004FFD6FFF8FFB4FFF60035FFB1FFCC001EFFC9FFCCFFB3FF83FF8A0009FF890043FFF6FED3FFBA0019FFB800010035FF9F00AB003BFFAC005B0021FFE60048FF5CFFC9003BFF970062FFA30010FFF10012FFB7FF48FFDE003E0034FFEBFFC8FFDC006600140023003CFF780027FFF3FFB1FFF4FF95000F003EFFD90015001B00180011FFF3FF75FF600002FFA80001001AFFD3002EFFFF004E006D002500940092FFC20005FFAA0041FED60013FFF20009000D0023004DFFEC00ACFFB4FFBBFFED0096FFFA004AFFEDFF9E000EFFC5FFABFF57FFD40045FFE5
74
+ 085FFD0FF58FFFAFF9DFF920040FFF8FFD30071001FFFD4000A0042001DFFFB00320014001EFFD4006000030018000E005C0009000B00130020FFC0FFD1FFE9FFE1FFF5003AFFB3FFB10015002D000AFFDEFFE9005C0019FF6CFFFC0007000FFFEEFFC400B1FFE70024FFEB003EFFE500120023FFDDFFB4FFA9FFEA004B001EFFC6FFBA00020008FFC80004FFC80010FFF0FF47FFF8000DFFD7000C004B001BFFE9FF7FFF8C005000A5FF710076003CFFC7FFEB0034FF8D0058FFB4FFEA001DFFF1FFDE0035FFBD007FFFEFFFDA003FFFB4005BFFDEFFED0029FFD1FFF10000FFF8007A006C0007FFE2FFE9008FFEDEFFA0002BFFF500470029FFA5FF5FFFE4
75
+ 3B0FFD8FF860024FF78002AFFD80029FFF2FFE8002CFFF500010027FF56FFFD0031FFDCFF7F0023FF3D00130072FFD0FFE3FFED00230003006B0031002DFFAA000B000AFFF2FFEA001FFF9AFF7A000300610056FFF7003500270007FF8EFF7800110028FFBEFFB0FF890032002D004400370014FFF2FFE0FFA2FFF1FFD4FF8C001CFFEBFFFFFFD7FFA4000B0041001CFF84FFAEFFC6FFEC0010FF9AFFB8FFF6FFE8008D001DFFCFFF89FFE2FFF2000300EE00130056FF7B0005FFD6FFA6002BFFFCFF4FFF48FFAB0004FF8C0000FFAFFFAA0030FFE4FFA40046FFED00600064FF96FFFA00340027FFFFFFE7FFD60001FFE50028FF360027FFEE0013FF9F0020
76
+ 3BA0018FFAAFF83FFF2FF170043FFA20043FFE2FFF3FF9DFF830037001B000FFF8300010016FF9BFFF0FFECFFEE0046FFCE00280012FFD6FFFD0051001B0040FFF0002E0019FFE1FFDA007A000A0084008AFFBDFFEC00820019FEBD000200900005FFBA002F00290034FFE20013003500730083001200170038FFDE000EFFF9FF4BFFC3003D0036000D0008002100140027FFDB000E0036FF970034FF8A00080052FFC60018FFD0FFC800090016FFE6FF400006FF7DFFC0FFE8FFF4FFA5002DFFED0049FF9E0020FF7C00250049001AFF75FFFF00110014FFE8FFA1001B0001FF4E0075004A0006FF5A0035FF980013FFBBFFCFFFE6FFCD0062FFD10004000F
77
+ 3B70001FF940010FF89FEE9FF96001C0018FFC60014FFF7000C0004FFA6001A004700200001FFA50031FFCB010AFFFDFFFC001CFFB5FFE5FF830014FFD5001EFF0DFFFC0040FFE3FFCAFF4EFFC2FFA8FF8E0012FFFF006F0054FF8C002F0049FFF5000F00930073FFBE0019008DFFF0005AFF5600A90011FF45001B0059001CFFDD000D002A0014FF9800470070FFFA0013FF40FFCBFFAAFF83003BFFF0FFE1FFA1FFAA006C004EFFC4FFB20113004C000FFFFB0024002000920000FFE70040FFB70021FFBEFF7B002600590027FFB3000EFFE8FFF6FF8FFFDCFFC0007D0012FFCA002FFFA7FF98FFC4FFA90037FF860063005FFFB5FFC2FFC7FFD7FFA9FF8D
78
+ 3FBFFA700D4FF7EFEE9004AFFF4FFA4FFFAFF8D00A0FFFD0064FFF5FFE900450081FFA20008006BFFB0FEC2FF850031FFFF0039FF2A0049FF9BFFE500490010FFEEFF330080FFF0009B0000FFBD0032000C0037FFABFFF800370099FF0CFFC1FFB2FFD8FF9EFFEB0054001EFF73005AFFF7FEF500440046FF99FFAA00C000730022FF92FFD700020021FFCAFFECFFD400E50086FFC9FFED00050039003A0007001F0062004A005A00520038FF10FFC7012700A300400031FF4EFFF8FF93000A000100750046FFF8FE9AFF7BFFA50020FEC0FFA4004AFFDD0012FFE8FFE5005CFF53FFD7FF9C001CFFFA0010FFDF004CFF4B0016FFECFFD3FFD4002E00120030
79
+ 3FC0023FFCEFFD7FF9B0049FFAC001D0053003E001400790002FFE3FFC5FFD5001B00960093FF59FFFE0015013EFFF4FFFE000FFFEDFFDAFFF3FF60FFD5FFEEFF7B00120034FF6D0007FFFD0033006DFFBC0048004DFFDDFFF6FF9D00A40036FF76FF8E00B50063000AFFD70023005E003D0067002DFF3C0067006EFF95FFC30042008B003FFFF1FFFE00100021FF86002200310020FF8EFFE8003D0025FFD10006FE46FFC70051001100210084FFDD0017FF970016FFE10034FF5BFFFAFF7DFF9BFFE7FF96FFEE0090FFD3004AFF6100AA00C2FFE0FFCFFFF40043FFDB000E00B800F4FFECFFF7FFCE0034FF9DFFF6001BFFE2FFE1FFACFF8CFEE6FF9F0023
80
+ 3DEFFF30013FF79FFF2FFF90078004EFF3AFECBFFFEFF40FFB1FFF2FFBEFF9200510050FFF80020FFC2FF21000E00430005FEC9002D004DFFFFFF030011001D001CFFAB001C0047FF47FFC3FFA000850027FEDFFFBC0074002DFF950026FED9FFFC004AFFBF0032FFF9FF34001400180027FEF800240022FF69FF80FF260047FFBA00A000000096001500490021FFF3FFC200230039FFF1FFA2FEEA0043000E008400CE0037FE99FFF80019FFD1FEE9003A00A300030030FFEBFFDD00250033002A003FFFAB000D008DFE700000FFEDFFDEFF9D002300240001FF65001C0038FF71FF96FFD6FF90FFFEFF6A00220027004AFF5EFFDBFF31FFC500450025FE73
81
+ 05C0023001A0042FF9C0082FFD4FFAA003A00370014FFB60030FFFDFFBF0008003A0006FFF2FF60FFDEFF8F001AFFDC000EFFECFFEBFF1B002D00D2FFD6FFE9FF38FF9F000F00480028005AFFECFFE9000FFF730001FFF30081FFF0004FFFFC002AFFCA001C0051004BFFE9FFA6FFB9FFCD006FFFF30051FEECFFAC000F0000FFDFFFB2FFFFFFE3FFF20057FFF0FF98002D000DFFF9FF69000FFF920012FFD00068FF300019FFFF003CFF6EFFC6008CFFB4001FFFF10017FFC50022FFD2FFF4FFDB00380047FFC7001000090020001E0024FFDB0043FFE9FFF6004F0003FF37006D0018FF88FFF700470015FFE7FF58001DFFDDFFA00045003EFFEC00330016
82
+ 018FFE2FFFDFFDB0057000900050003FFF4FFF00019FFC60049FFD8FFE9FFFA00520016FFD80036FFEA00290012001A0044FFF9004F00140030001EFFC0FFCAFFDDFFC90006FF9FFFA3003F006FFF6FFFB40023001BFFD4FF46FFC20075FFE5003700070042FFF0000EFFC6002A0014FFF90012FFF20027FECAFFF0FFAAFFE3FFEAFFA10009FFFCFF60000BFFD8FFE1FFFF00290017FFD2FFA8FFE3FFF70011FF54FFAE000A001A0035FF8E0062FF890011FFB9003A00370015FFA9000DFFE7FF92FFD90020FF47FFF100720010FFF4FFD8FFFC001FFFDAFFFCFF95005CFFADFFC4FFE1FF22FFA8FFECFFDD005BFF7C000D0079000BFFDBFF98FFBCFFC90034
83
+ 338FFE40010FFADFFC80068FFE2FFAC0040FFBB001400950021FFE60000FF810048FF6AFF2F009CFFF5FFDF0059005E0003001800AAFFF9FFBE0055002DFFDF006FFFD2FFAAFF57FFECFFAAFFD5FFDF001EFFBF004B0063004FFF61FFEA007EFFC6FFADFFFB0083007CFFF7FFB8FF6EFFD3FFC3FFFF0007005AFF940012FF74FFDFFF8AFFFD0000001BFF82FF36008700540024FFFC003500050022FFDC00ACFFE5FFFDFFA1FFF8FFF1FFCB006C0034FFC600A10019FFFCFFC2FFD20044FFF5000700210020FF09002CFFFC007D0061005C0072FFE60037FF9AFFF9005000BF006F00FA0024FF9EFF54FFD600540046FFADFFC7FF4C0034FF7D0077FFB10057
84
+ 000FFFE00000032FFBCFFBB001E007BFFC300260008FFBDFF93FFD5000FFFD9FFFA00370029FF9DFFD6003C0016FF97FFD40071FFFFFFC000080077FFBCFFE3000B0039FFEAFFEDFF5D0022FFB6FFECFFE4FFCEFFA3007800360025000B008F0005FFEF0035003F0028FFD80004FFC7FFB7004D003FFF6D004CFFA9001CFFB6FFC0FFFFFFF9FFC70021FFEB0031FFF6FFE5000CFFF4002E0027FFE0000B000D002C003FFFCBFFB1FFA2FFE9FFB0FFEEFFA6FFB30004FFB6FFAAFF230014FFC6001BFFC1FFC5005FFFC4FF82001C004BFFCF007FFFE10053FFDDFFB40017FF27FFE4000B0022FFEEFFF70022FF77FF8A002E00220000FF650003FFCEFFDBFF4E
85
+ 040FFE20008FFFE000300040046FFB0FFD6FF61FFC3FFEBFF7CFFE0001DFFBEFFFBFF78FFE0FF40001FFFFA0018FFDBFFFAFFDC001C0045FFCCFF23FFE1FFD6001D001EFFD4FF910019FFB2FFEF0032004C00140067FF78002BFF92FF50FFC4FFEEFFB600350004FFE9FFD1FFB2FF7DFFC50044001AFFC00033FFFC004800070051FFF5FFF1FFA4001DFFFF0023FFDD0052FFE30009FFDA001D000100460031FFD8FF86FF81FFA5FFCAFFB1FF77006B0010FFF4FFE2FF95FF750016FF6AFF0FFFFCFF66FF8FFFC3FFF1FFF2FF83003C0013FFDBFFFCFFAC000FFF9B0039FFD3FFF8FF5BFFDCFFAB0004FFE3FFD3003D0030FFE0FFE4003AFFD70052FF83FF8D
86
+ 02CFFD3005B00140046FFDA00240025005D001EFFE8FFA7FFB9FFFCFFF1FF730010000E001C00280015FFE5000DFFE50001FF6FFFF30021FFCC0008FF86FFCE0024006EFF800066FFFF0060FFBAFFFEFFB400290011001D000F0061FFA6FF84FFFFFFC9FFEFFFCA00090019FFC80068FFDEFFE1FFF1FFF6FFC7FF7F002E000B0014FFE700280007FFB7FFB3FFE1001B001C0029FFDDFFDD0001FFCEFFA6000E0047FFF00025FFB7FFBD0022FFE6002D001A000FFFD3FF69006C0019FFAD00070084FFAA00310038FF8B00170006FFAF0028FFFEFFA400310005FFFEFFE600440014FFC300070044001F00000014FF96FF8C0005002CFFFE0027001900400043
87
+ 044FFB4FFE0FF4900510030FFFF00040053FFD40007FF12FFCE003DFFC2FFCF002AFF41000200490010FF360029003C0022FF7C001DFFC7002500110017001F0002FFDFFFF1FFF1FFD1007D00040054FF97FFF5003BFED7FFF50051002FFE5E003D0009001CFFDD0015FFB50055001FFFEDFFB50007001EFFB9FFCAFFB10097002E0061FFDD0040FFDCFF82FFDE00B10018000AFFCA002AFFD4FF70FFF8004AFFF10060FFE3FFCC0011FFDFFFEDFFD7FFDD008800160011002B00510018FFF7FFEF007A0076FFE0FFF40053000F0038FFEDFFD5FFD00021FFFAFFACFFF8004CFF75FEC60010FF92FFE1003A0023003DFFFEFF72FFD6FF61FFE80068FFCE0029
88
+ 3C50049FFEEFEBAFFAF000EFFDF0039FFFCFF630026FFCFFF8EFFF10028FFFBFF96FF76FF58FFE40040FFDAFFEB0032FFDDFF6FFF640038FFEDFF80FFE90030FFC8FF86FFDF00360012FFF5FFF10096FF7DFFCFFF80FFBB0146FFAB000EFE98FFDD0080FFFF002CFFE70018000CFF75FFCFFFC4FFEF0053FF89FFBDFF8B0050003000C4FFDC00790069002B000D001CFFD4FFB3FFDA0049005EFEA6FFE1000CFFF30104000DFF3C00170048FF8EFF590011009800450027FFDEFFD6FFFF0035004B000B002F000C004CFF69FFE9FFB6006D0018FFF3002B002BFFBB0000003200ACFFF1FFD0FFAE0041FFC2FF8A00430026FF800053FED1001F004E001BFFCB
89
+ 00600370020FFF7FFB8FFE500020011FFFA000C0021FFC7FFFAFFCE0034FFBD001D0008001C0046002DFFCAFFF8FFF4FFE10026FFBFFF420000000FFFDEFFAA004A003FFFC3FF5E00B900110016FF7B0023FFBEFFF5FFA80045FFC3FF87004DFFEFFFF6005500220000FF94FFF900500002FFA00015001EFFAD000F0050FFD8FFFC004CFFFAFFB70023FFF2FFCA00ADFFBA0049FFCDFFFE003DFFD7FFF70030001D001500570011FF9AFF94FFF4008DFF81FF86FFAFFFB20072FFC70002FFD60027FF6D0096FFEAFFB90072FFE7001BFFF6FF93FFEDFFBF0043004FFFDD0009004E0070FFA4004C00570029FFEEFF3F0005000A0011FFDDFFD1FFCF0060FF9E
90
+ 3FE00310048FEFAFFF1003B004D0039FFDEFFB6FFEBFFCA000300160000FFB30033FF7A0021FF90FFD9FF89FFC30011FFE7FF7C005E003C0006FEE5003CFFCAFFE8FFB3FFF5004B0001FFDB00290010FFDBFF33FF9C0013FFA7003AFF95FE5D001D000B00280019001EFFC4FFD2FF94FFD7FFA6003300560029FF7D0027FFEDFFDD006CFFFB002FFFFD0022FFEDFFE8FFA3FFA700170012FFE4FFD0FFDEFFFA00000081FF7FFFED0008004CFFA2FECEFFA10065FFC00047FFDD004C0034004BFF8B005F002FFFF5006AFFD00015FF8DFFD2FFEBFFCE0016FFF9FF98FFCA0010FFF9FF730048FF97FF9E000EFFFE0024FFD2FF2AFF63FFDB003BFFEEFFCEFF9E
91
+ 01DFFC40048FFB9FFF30064FFF3FFD6005BFFDF001D0029005A0072005CFFE80069000EFF180062001DFFF90068FFF50025000400B80016FF55FFC60089FFD6FFDF0014FFD0FFFA0028008A00110032FFA20009FFF50016FEB70006FFF70000003B002FFFF20054002A005BFFD8003AFFC90075FF55004BFFE2FFFFFF63001AFF7EFFDD0045FF880016003EFFFDFFEF0014FFE1FFB4FFDBFF4AFFF00000FF95FF5B000CFF800028000E00140013FFB8FFF0FFC70039FFDAFFF5FF9B005DFFB1FF89FFD2003DFF770034003C0047008C009D00C7FFE5004BFFFFFFFAFFFD0014FEDBFFAFFF8BFFD9FFBB0005003F005000160018FFA5FF81FF1C0047FFD80098
92
+ 3BB000800320099FFBA0074FFB60049FFC8FFE8000F0005FFD7FFFEFFFBFFE6FFB2FFD8FFC80016000C00790020FFF30009FF1DFFBA0091FFB50068FFF1FFC0FFF1FF2700050034FF980072FFC5002A0017002EFFF4FFD2FFFF00880018FE66003E0071FFDA0047FFF5FFD30005FFDAFF5F00A3FFC300240011FFBF0037FF99FFD3FFB1FFBA0026FFDDFF7B001A003CFFDE0086FFF5002B0036001CFFF9005F000800C7FFDAFF7DFFEAFFD1FFA5007DFFDC00290016FFF1FFC5FF5B000EFF9A0011FF65FFFEFFD70028001F0004004FFFEE005DFFDB0091FFE7001400120050FFF9FFF5FFC60013FFD7008B0010005F001D0015FFC20010FF8A0056FF8D0044
93
+ 3E80023001E000FFFC40046FFD00024FFFE003A0012001AFFD3FF7C0013FFB70003FFD1005FFFF6FFF1FFDFFFA80049FFF700300044FFC4001B00C0FFF30004FFD0FFAEFFB9FFF3FFABFFDEFFE4FFCB001EFFA4FF990096001DFFAFFFED00A1FFF9FFD80043005B0008FFE7FF560024FF50007A0040FF32FFFC0035004DFFD7FF88FFB6FFDEFFFA0067FFE8001C000C007EFFAEFFF9FF7A0010000CFFD9FFEA00070008FF80FFDE001E0002FF1EFFA1FFC7FFFF0047FFEE002A00160016FF9CFF620064000A0041000FFFA1FFAF0031FF44FFECFFE6004EFFFF006D001BFF2DFFC9FFDF0044FF7DFFE500720014FFAB00140033FF7800360004FFFBFF6FFFE2
94
+ 38A002E0031FFE30020FFBAFFBD0034FFF7FFB80043002600440007FFC6000700320022FFE50005FF5D0027001AFFF3001100200057003D000A002DFFFDFFEF003C0015001AFFD8000C00070015FFB7002CFFE7FFF50036FFD5FFF60008003C002D00060003001A006E001EFFC7FFA7FF64FFE9FFB90010004C003EFFA1FFA9FF86FFF100060019FF1900170027FFF90022FF85FFF5FFB1FFFCFFF0FFD9FFC5003FFFF8FFD5FFA30015FFDD006BFFE1FFCE006200550030FFACFFB1006CFFF5FF8DFFF6005E0024003F0025003DFFF9FFFA001400180011FFC60028001A001AFFE70003FFD50018FF5400230030000300040002002DFFFEFFC2FFF4FFCBFFC0
95
+ 3E5FF81FFE2FF82002D0092002B0039FFBDFFD9FFB7FFB4FFD6FF91FFEDFF9AFFF2000700570080FFFC000B000B0049FFEAFFCF00230040FFBA0019FF8D0028FFF4FFC1FFD4FFF3FFBB003BFFAC00170048FFD40003FFC0FFFF0054FFE1FFDC002FFFDF0025FFE0FFD1FFBDFFED000B00090037000400A40036FFFFFF8900960016FFEDFFEBFFEAFFC70001002B00760000007CFFB0FF9BFFD5FFE0002AFFEAFFC2000C0015FFF80006FFCBFFE60007FFD60041FFB3FFCE0026FFF9FFB80021FFFE008DFFA4FFF5FFBBFFEBFFCE00150055FFE0001C001B0013000100100048FFAEFFDD00150065FFDE0005FF6D000CFFDCFFF20021001100A20007FFFAFFC6
96
+ 017FFAAFFB70047FFA9FFE7000EFFE3FFE3FED6FFD9FF4CFFF9FF57FFE9FFECFFFCFFDCFFC90065FF78FECFFF8C0007000BFFC20025003CFFC3000BFF930060FFB0001500240062FFED0001FFC90003003DFF95FFED0017FFDCFFB9FFB7FFDCFFEB0033FFDF0028FFFDFF8BFFFC008CFFADFF7D00240089FFF2000D0007001CFFB6001BFFD600BD0025FFACFFDA0056FFC50000FFDCFFDBFFE40001FFED006AFFAE008FFFE7FFB7FFFF0014FF5AFF700018009C0001FFFC000E0018FFE4009900590068FFC80008000C001C0016FFF00015FFB2FFDE0045FFF50050FFFFFFA60020FF53FFC40000FFC60054FFF80013001CFF01FFE3FF2E002300650075FEA4
97
+ 3E6FFE9FF91002B006BFF350008005E00590025004EFF88FFE4FFF6001BFFB3FFE1FFE20067FFAB0003FF5BFF87009D002AFF7C005C00170042003B000F0022FFDA002500810069FFD4FF980019FFC5FF8EFFF90012FFCCFFF1FFD6FFFEFFD2FFFEFFC0001A0013FFD6FFDFFFFF002DFFE2FFF9FFF7FFCE0002FF4D00500083001E0034FFD20001FF6D00120039002D0020FFE9FFC10026FF98FF68FFF100170061FF930012007FFF3400610007FFDDFFC4001BFFAF00820058FFC80006FFEC006AFFF2000DFEEBFFD70013FFED0085FFFC008E000CFFF7FFFAFFE9FFC0FFF0001EFFC1000C000D0046FF8F00080017FFE1003700F000A90085FF480068FFFA
98
+ 011FFCD001E002B002FFFB60000001C00540047FFC9FFCE0033FFE2FFA0FF8CFFF0000F003FFFA20028FF79005B005EFFC3FFEBFF6FFFF60002FFEE0045FFF10075FFF800190028002CFFB3FFD60057FFE8FFDD0042FFA2000FFFD2FFE6002E0026FFF2003500230028000BFF4D0048003EFFD80062001D003EFF9FFFFF0053FFE6005E0024001E00B2FFBFFFB00054FFF600240045FFD3003EFF93FFA3FFE5003CFF42FF760002007B00400085001EFFFA0033FF800023FFF4000DFFEAFFA4003DFF5200A1FFE6FF470060FFC9004DFF730028004800330005FFD8000EFF95003AFF1FFFD2FF90000EFFCE0013FFD2005C003AFFE400210027FF6700320005
99
+ 035FFA30021FFE5004F00450023FF860016003EFFEF001FFFE80037FFE10007FFAEFFC5FFD2FFC6FF96FFEFFFE6FFD3FFF30018FFC80007FFCB0043000AFFAD0052003500870009FF56FFF300100064FFFEFFBCFFF8000D0044FFDBFFFDFFA0002C001B004BFFF5005BFFD60000FFB8FFDAFFF8FFC0001CFFE4FFC5FFCB00510022FFD00029FFEAFF8100130015FFC8FFFCFFA0FF720018FFB7FFC1FFE6FFD4003000080035FFB9FF81FFBB002CFFA8FFEDFFE0FFF7FFF6FFFC004A002BFFF2002400570086FFD6FF45FFB5FFC5FFECFFD4FFBF0041FFCAFFECFFF20006FFE1FFF2002BFFC80039FFEB0051FFB00038FFD6FFC4FFD40012FFC6FFFCFF87FFDC
100
+ 0090023FFF7FFC90053FFE50024FFE700220004FFC2FFD3FFDB001B00390015FFD2000B004EFFED00840036FFFE0000FFF5001EFF640012FFB1000FFFD7001BFFCF0007002CFFDBFFDF004AFFF50001FFC6FFF1FFBFFFF9FFDF0007FFD8FFFDFFFBFFC2FFF8FFD6FFBB002B000C0008FFDF003EFF990005FFCF003DFF07FF90FFEAFFCEFFB8FFEBFFDC0015FFCEFFEFFFFC0016FFB0FFD8000A001200040004008DFFFCFFB900270005FFAAFFD80032001BFFB0FFAB0027FF7BFFA30000FFFB0037FFD4FFE0FF66FF93FFE0000F000D0065FF9A00310015FFD7FFD3FFA9FF9FFFBC0056FFBCFFEF0031000CFF52000B0051FFCDFF98FFF40081FFEDFFECFFCB
101
+ 3BBFFF1FFC40025FFAE007DFFF30018FF9D001AFFE1FFC9002CFFD300130020FFD7001EFF80FFACFFFBFFE4FFBA002DFFDA00270010004B005C0038000B004F0077FFE50035FFF0005CFFFE0023004EFFE2001E000BFFE90040003AFF81FF7D0016FFE5FFB7004E0007FFF2003AFFE5FFFA00550000FF94004AFFE3005E005F002DFFB500690004FFE700290031001D003BFFF3FFC3FFA7FFA40016003D0034FFFFFFF7FFB600590034FFFB006A002EFFAAFF77000CFFE5FFC0FFE7FFA3003A0010FFE00019FFB3FFE7FFCBFFEF0028FFB8FF11FFF9FFF40050FFE9FFF2FFCBFFF2FFB6FFDFFFF500640057FFF1FFF5FFEEFFE300220045FFBCFFA90018002F
102
+ 3A70050FFCFFFF4007AFFA3FFEF0019FFE7FFF50018FF990089003C0026FF93FFAAFFA4FFD3003E004AFFDA0028002BFFEC00200055FFE6FFE3FFB20050FFDA006FFFD10039FFE20000FF56FFF6000E006AFFDEFF6FFFCDFFFCFF8C0010000C009C0004FF760068001200090068000100630020FF90003B002FFF75FFC000380030FFD9003EFFD5FFF1FFC000020002FFD8FF88FFA0FFF1FF89000FFFE9FFB1FFC3004E0033FF740019002C0052FFD60048FF96000A0031001100280061FFF100010014003DFFD2FF8C0004FFCD0030003AFFE4FFE7005200180064004CFFD9FF42FFC100000058FFE6FFC50050003DFF77FFFAFFBF001BFF7D00770011FFC8
103
+ 01C002300120026001B0014FFFE00260005002DFFB4FF52FFF900270028FFA3FFECFFCBFFF4FFBD0012FF9E0021FFF5FFDCFFFDFFBFFFF50019004C001B00480011FFF80009FFF8FFD8FF35FF82001B003100690049003A000CFFC60002FFED0001FF5E0023FF6F007DFFF3002FFFF7FFAF001AFFDDFFD800280037FFE0FF5A000EFF70FFD8001300170037FFC5FFE0FFFEFFED002BFFA2FFEBFFD50021FFEE00720036FFF8FF7F003C0062FF68FFB5FFBDFF7AFFD80005FFA40015004AFF97FFB20070FFA20064004A006B0037004700240038FFF9002CFFB7000D002EFFFAFFD3FFECFFE4006BFFA2FFA5FF65FFDBFFF6FFFAFFE9008DFFFEFFB4FF8F0067
104
+ 3F3FFB90021FFC8FFB30078FFE2006A0037FFA10021FFBFFFD2FF9900500043FFEEFFF800140014FFFA0000FFC6FFFEFFF0FFF7FFA5FF59001E0003FFFD000EFFC6001FFFBEFFFAFF690016FF3E001BFFFCFF73FFC6FF280039FF2CFFE3FFDDFFA0FFE4FF670014FFCF0024FFF00052FF9600310014FFD30018FFAFFFDFFFD6FFACFFB0FFACFF9FFFF8FFBDFFDA0004000B0069FFB40041FFFA0014FFFA0053001FFF97002EFF8FFFFEFFD7FF88FFB7FF7500310007FFB3FFF00044FFF40004FFD80055FFB5FFB5FFE0FFD4000200360077FFADFFB4001AFFB8001B00430014FFF70029FFFA0029001700C6FFE9FF57FFD60048FFD7007D002C0098006EFFF6
105
+ 02A00330031007000A1FF740065003000270008FFF6FFBDFFAF0022FF46FF970010FFDF0027FFE5FFA5FFF0FFFEFFD40036FFDAFFABFFA2FFF50008FFFFFFE4FF3CFFE4FF9F001AFFF4FFC7001D002EFFC30050001BFFED007FFF7AFFEEFFDCFFDDFF7CFFFB007F000F0031FF81FFC4FFAF0007FFC6FFCBFFBB005BFFFFFFDC006FFF6CFFCC0026FFF80004FFDCFFE800390035FFD5FFC2FFFD000A00270014FFFE0023FFA7FF6B00260044000F006D001DFFF1FFC6FFE8FFC90022FF79FFC10083003AFFD00044FF8B0035FFEE0065FEAB007FFFBB0014FFBC002F004FFFEA000CFFE100380075005BFFAA000B000BFFC5FFE40045009E00770037001DFFE1
106
+ 3DEFFB200670077002D0048FFDEFFD4FFD0000AFFF400180006FFCEFFF4FFF50027004DFFC60030005D004A0059FFB3007100060015FFD1FFD00058FF76FF710010000B0057FFCB0021FFC7FFDEFFBDFFF1FFF80070FFE6FF05000B000A0036001D0013FFCBFF670012FFDDFFCEFFC2FFB90001002BFFE4FFD5FFDAFFFE0009FFDE0049001E0013001C0016FFD200230033FFBD001F0015FFCCFFE8FFEBFFCBFFDF0045FFF4FF05FFCAFF7C005DFFE000590006001BFF9EFFEBFFC6000D001EFFB4001DFFC4FFC4FFE3FFA0002DFFCDFFB6FF50004E000A0058FFD40033FFBE0012004FFFE7000A000CFFD000090081000CFF87002CFF44003DFF9300330073
107
+ 05100240033005700310006FF94007E0025000DFFF8002200520002FFC100420045000FFFCAFFE30003FFDB0028001AFF8CFFEEFFA00012002D0032003A002FFFBB003900080013001AFF91003FFFD3FFDCFFC30069FFB6000D0085000B0067008100280054FFE30084002E0009FFC5FFB2006E0020FFEAFF3A00290060FFACFF82005FFFDA0051002AFFF7FF910060FFDA0021FF990046FF83FFD4001CFFDE006CFFA0FFF80050005C00160012002B0072FFB9FFBA00170026FF40FFC40044FFD6FFBD007900730017007A0021FFF6FF890000000A0032FFE30027FFBA0055FF6CFF4A004C0004002F0003FFF1FFF8FFF00015FF7AFFF7FFEAFF8300840033
108
+ 00BFFA200670002FFB5005EFFB0FFA40074003F001A0018FFD4FF6CFFB0FFF1FFA4FFE6FFA90010002FFFF6003A0015FFF30020002A0035FFC5007E001D000CFFECFFDF0009FFB7007400210040FFA400360016004CFF850056000BFFD6FF9DFFC3002E002800520041000B004500010066008BFFBF00100018001F0027FFE7FFDC00160031002CFFD3FF8900080012FFEF0004003EFFD6FFF3FFE4FFC900270053FFCA000200B5FFBBFFC0001900590011FFD9FFC6FFB9003CFFD2000EFFF100120033FF89FF04FF83FFED0022FFEDFFFCFF8D003FFFB9001CFFBDFFCDFFD9FF36FFF5FFF4FF8900500023FFC2FFC0003DFFD5002DFF7AFF48FFBE0005FF6F
109
+ 3C9FF9A002B00A7FFA6011EFFF6FF73FFE30020003E000D002DFFB20072FFF4FFCE0056FFFD0039FFFB00A5002AFFB100010001005F0003FFB100660050FFED001DFFE2004CFFF8FFB7FFD50021FFB8FF95FF2AFFCBFFF8FF960050003CFF90FFEB00260020FF58FFC5FFD90018FFEFFFC2002800000000FF76FF79FF99FFC6FFAE005C0035002EFFB30046FFC9FFBBFFAFFFFCFFA6000FFFCE004EFFC1FF8BFFDFFFFB00650005002200280044FF5A0051FFAF0053FFD200DDFF7A004900050035FFF0FFBAFF910022FFF3003F000A008FFF83FFED0025FFE40022005CFFA4FFEBFF87FFB30018FF750047002E00A5FFF9FFC30086FF6F003BFF790099001E
110
+ 016FFD4FFF8FFEDFF5A0049FFE9FFCA005900120080001F00390000FFBA0018004900130015FFB5FF8BFFFCFFC500140054000CFF520040FFC30030FFE8FFA1FF7A0010FFD8FFED00AA0030FFFCFF80002EFFDAFFA9FF7F0090FF8D006AFFA7FFC0FFE4009EFFF00067000DFF5C001FFFC5FF9C00ABFFD5FF5E003800230029FF71FFCFFFD8FFE800D4FFF7FFE3FFDB0095FF9F00020031FFDCFFE6000D000CFFE20003FFEFFFCEFFF8FFD8FFF0FFACFF47000F005EFFD2FF71FFE7FF4FFFFC000FFFF20077FF99FF64FFB10016FFA0FF1BFFE00052001800130003006200100063FFDF00130001001C000DFF6EFFB6FFC80032FFF9FFDC0018FFF60018000C
111
+ 01DFFF6FFBD0000005FFFF6FFC5FFFB000F003AFF86FFBFFFC10028000D0020FFE7001D0048002A0055000EFFFE002EFFF3FFDC0003003CFFEA00180031FFCA0021FFF5FFEB003EFF66FF95000C002AFF800005FFF9002BFF3FFFD80052FF7DFFA30013000DFFD60014FFF2001EFFCB005F0000FF95FFE4004AFFBCFF6F0068000BFFF2FFF50024FFE7FFD6FF93002D0028FFF7FFBDFFF9FFFBFFD6FFE2001FFFDE00070010000C008FFFA3FFB4FFF30083FFB2FFF9FFEF0018FF9900060011FFF7FFEE0075FFD1FFB40027001F0077005F0001001FFFC7FFDEFFEEFFF500180046FF5E0013002AFFFEFFE6FFC5FFF4001E001DFF79FFF5FFFA0004FFCBFFC6
112
+ 3FD00220005FFC000B2FFB10007FFEEFFAF00020018000BFFC6FFCEFFB2000EFFC90008FFADFFF6FF6CFFD6FF93FFA60026FFD4FFF6FFFD000B0023FFD1FFE70000001C003A0011FF49FFB8004FFFAAFFF9FFEDFF9900310010005E0018FFC10012FFE8FFD7FF78FFF000370022000AFFD1FFDE0052001BFF9C001EFFE4FFC1FFA6002100550005000EFFB70014000EFFEAFFD4FFFEFFFB0040FFFEFFD6FFCF006800370006FFC3000AFFB5FFCFFF86FF730020FFFC00690030003E0051FFFDFFF2001DFF92FFF9002D0000FFAAFFBA00260047FFAEFFC9000BFFCD00380009FFE6001A0036FFA7002BFFE50028FFDFFFA4FFFCFFED009EFF66FFE400110034
113
+ 3EFFFF70030FF8AFFBBFF6F0024FFBF001AFFE2FFF7FFD5FFFF00040040005D0011FFB4009BFFE8FFF1FF5E00340022003000100048FF68FFF9FFADFFC6002DFF98FFE9002200440076009A00190008005CFFD4FFA6001F00550001001D000EFFF70042004E00010011FF99FFBF00760044FFCF006C0030FFE9FFDF003C0007FFFAFF97FFF0FFB300120028FFB6FFC7FFED0016FFEE0010FFE60019002300A2FFC7FFB500050015FFFAFF6B002BFFCF00700073004C0013FFE6FFF7002F002BFF74003AFFBCFFE5001CFFE00042FFCE005DFFFE003E000900380032FFDD0015FFF4FFADFFA0FFE500210004FFF0FF3B0050001100430066005E0035FFE80042
114
+ 3B7FFD2002CFFF0FF8BFFDCFFE90052FFDFFFE90023FFC40011FFDB00400038FFC80000001E00220025002A000BFF87FFF10014003BFF57FFF40020FFFCFF9BFFFAFFA50002003BFF9AFFB90033FFC0FFDC009BFFE9FFDFFF2400020077002B0048FFBBFFF6FF90FFD2FFC60086FF66FFCDFFE800080036FFB6FFAEFF83FEEAFFB4FFA70027FFDDFF8900AAFFE7FFC7FFAF003B0034FF71FF43FFDC0000FFCAFF90FFF6FFADFFC700280085007EFFBE0022FFCB0081000EFFA5FE7B00170042FFDA00150059FFCB0011003A001BFFE1FFD9008E003D002E00310038FFF20019FF8AFFED00220030FF86FFEA00580010001C002500AA0092FF530041FFE7FFA8
115
+ 2DEFFCBFFD5FFCEFFC90047FFB4FFDC0049FFBF0055FFE0000BFFC70006FFCBFE9CFFF4002EFF76FFC7005C0075FF9E001E0007FFD20006FEF80069002AFFCAFFC500030012FFD9FFDBFFAA0083FF510067FFC5FFDAFFEC00B10000FFFDFFE5FFF7FFF1FFD5FF9B0009000EFFB60041FF6CFF91FFFA00020037004CFFCE0017FF62004FFFB6FFF7FFE6FFC2FF1800220019FFC90046FFC7000B0036002E001000290032FF61FF9A00A7FFD00065FFD200AAFFB4FFD1FFB5FF87FFC20068FFBCFEB2FFDB009DFFFFFF89FFB9FFA0FFED0092FFF40056FFAE005AFFB1FF8EFFA1FFD30021FF920005FFB8002D0034FF9A003DFF8FFF420020FFC20024FEC8FFDE
116
+ 009000CFFFC000C000BFFF50032004600170000FFE9FFF9FFBCFFE8000BFFF4002BFFA2FFD1FFC8FFD40002000DFFEA000E001D0051FFB8FFE2FF77FFD7FF55FFF1FFF000070018FFB4FF77FFD70048001D0001FF96FFD3000AFF4A0039FFE90021FFE0FFDC0001FFF3FFDB00100061FF99FFB5004D001800360057FFFE0024FFBEFFE2FFF5FFF8000DFFD5FFE1000CFF9FFFE6FFCD0015007B0008FFDEFFE50025FF9E001EFF710003FF660041007C0003FFB10044FFD1FFE1002B0010001DFFAC0027FFE100F6FFDCFF97FFB700140002FFEAFFF4FF9BFFB7001B001FFFB0FFC2007BFFCBFFFCFFE2003DFFDAFFA4FFF80006FFD7003A0035FFAC001CFFFD
117
+ 3F5FFC90005FFF00023FFD40059FF30FFB9001CFF82FFFCFF9EFFDCFF6A006EFFE40017FFFBFFCB0045FFAF00190001FF8EFFF8FFD80003FFC1001DFFDBFFEFFFFF0062FF4D0002FF840009FFBD005CFFD5FFBDFFCFFFD8002B0057FF67003CFF47FFA400300050FFAC00460015FFEBFEE8FFA5003A001E0052FFDF002CFFB60031FF9CFFE600070039FFFB000DFFF00050FF44FFCDFFAB00680017002AFFFB0038FFD5FFEBFFABFFEA005A0015002B008DFFD60005FF8CFF2D002CFF4AFFCE0040FFECFFB6005BFF95FFFDFF5D000600340022FFF70039FF77002B006BFFFF006AFF98FFDFFFDBFFB3FFA2FF9AFFDE0021FFCDFFF200230094FFA6FF250066
118
+ 037FFD4FFE100360022000B001C004CFFF90024FFB1FFB8FFB6FF94FF8B004DFFFC00030005FFF9FFFDFFF50004FFB8FFBF0004FFD40070FFBF0058FF53000400310014FF58001CFFFEFF83FFF9FFE7FFA5FFA40039FF96FFE3FF9400000002FF73FFC90016001EFFD0FFF7FFFF000CFFD8FFE60000FF80FFC1FFCAFFCB0059FFDEFF670020001EFFDFFF9A001EFFF6FFEEFF8BFFEEFFE3FFE60019FFE4FF85FFE9FFBCFFEBFFCBFF230022FFEE0031FFBCFFE6FFD6FFC30041FFEAFF6D00820031003600180099FFD3FF1E000C0062FF80FFECFF7FFF93FFBE001E00050079FFDBFFB90011003600040004001FFFBFFFC90019002F00280048001E005AFF61
119
+ 014003CFF8EFF9F0014FFFA000AFFD1FFACFFC600330014FFADFFFE000600240026000D003AFFE80032FFC5FFFF000CFFD1FF85FFFD001F0039FFEBFFF10002FFFD0031FFE1FFC4FFDAFF4FFFCAFFE7FFCAFFF2003C003AFF91FF99FFBF00410030FFE9FF82FF2EFFE0FFD900750017FF5F000EFFFC001800790009FF8EFFB3002D00300000FFE5FFD3FFD9FFA40027FF8FFFB6FF71FFFE002E0010001BFFE30010FF83FFFAFFDA0007FFD2FF7DFFA7009D0001FFDB006200120037FFD7FFD9FFF8003DFFD7000E000CFFEF00170024002D002CFFA5FFEA000000390012000FFFE2FF43FFE3000BFFB7FF56FFE50008001BFFBEFFFEFFA4FFF5FFC4FF9BFFDC
120
+ 001FFE1FFCDFFDDFFA70060006E0003FFEBFFD7007A0041FFE1FFF5006A002E0072FFEEFFDB00100010002D0021FFA30018FFA5FF68FFC2000900290029FF88FF59FF9CFFD0FFB6004AFF7D0007FFEE00690011FF6400080076005CFFD2FF8CFF9B003E0038FFC5FFDAFFF5FFDCFFE4000F0046008B001CFFACFFDAFFBD00000008FFDF0012001000540009001E000BFF92006DFFF8FFFD005EFFDEFFC1FFDAFFA9002D0022FFDA0060FFF6FF82FFFDFFEEFF820012FFF90027001BFFD5000100190043FFDAFFBD002EFF74FF980047FFA700270022FFBC000600080005FFD30056FFE9FFE7FFFB00570096FFB3000CFFF900080037FFC30017001F0107FFA8
121
+ 01FFFD10046001DFF85003D0039FFD50006001BFFDC000DFFC1FFB1001BFFD9FFF4FFF30061FFE5FFCE000EFFF4FFE6FF8AFFD7FFDAFF66006FFFAEFF84FFEEFFCBFFE7FFF7FFE9FFEEFF3EFFA20020FFF8FFCC0048FFC4FFFEFFC8FFBF001BFF9600390033FFCE0018FFFFFFB0FFE100330029002DFFE4FFDB0031FFD6001C00010005FFC40009FFFB0010FFD200390030000E0008FF8BFFF60029FFFDFFE0FFE7FF5B0014FFEBFF97FFEF00240036FFDFFF8AFFE5FFBB000BFF36FFD200280008FF5CFFF9007C0072001EFFE7FF0DFFF0FF7300070064FFDE001C0028FFE1FFC30008FFC5001000250067FFC3000E002F0012FFEEFFF80029002C002D0075
122
+ 3D90070FFE6FFBCFFF3FF0500390077FFFFFFB4001BFF9BFFE4FFA9FFE300450020FFD7FFE70029FFBBFF69000EFFDEFFF3FFD6FFFEFFCB000800670021FFEEFFB2FFEBFFD0FFFC0039FF93FFB9FFF70030FFD50023FFF30030FFB0002AFFB70019FFB6FFB5FFF900210034FFEDFFB1FFD400090050002600340054001400280008FFC400020013001CFF82FFE60008FFE7FFC9FFE9FFCC0007FFF6001FFFCF001EFFDBFFA6FFA50005FFE9FFB5FF4FFFDAFF45FF80000B004000740031FFC4FF840054FFB5003E003DFFD6001AFFBFFFF6FFCF0030FF82FFD8FFFAFFDBFFC600000013FFC9FFFDFFBEFFE9FFD4FFD4FFAE002FFF4D000DFFEAFFE0FFFE0022
123
+ 3AEFFF50024FFCD0036FF25FFE800700004008700200031002EFFF9001A0028FFFBFFB1FFA1FF6A0006FFB1001B00080007FF9F0056FFBDFFF7009A004E000300450047FFA2001DFFE0FFE3000BFF9F0019FFFBFFFD0007FF57FFFA00040039FFD1FFA2004FFFB90027FFF3FF9EFFC70007FFF6FFA2FFE900550090FFA6005EFFB7FF86FFE40017FFF1FFD400050035FF71FFE1FFDDFFDFFFE8FFF0003BFFDA0014FFCDFF99FFAEFFF1001F0078FFA4FFDEFFEA001200B3FFE3FFA30044FF62FF4EFFC6FF300012005100450086004C008B000CFFBFFF96FFE30009FFD900C5FF920026004A0020FFCFFFA20020FFAFFFEB002500570018FFA2FF5DFF0EFFCC
124
+ 3AAFFC5001D0004FF5FFFE2FFD0FFB5FFC0FF7F003EFFFE005FFFEB00480002FFA1FFEE00100008FFD8FFE00002FFDA002F0049FF560041FFCC00450034004A00020024001FFFACFF33FFBBFFF3FFB900230015FFADFFE5FFC200130012FF6F0041004CFFE7FF5C001CFFCDFFF8001AFEF7FFEDFF3FFFDE0007FFC300150040FFDC0005FFF6001AFF88FFB7000FFFBAFF55FFA3003C0005002FFF68FFD1FF72FFFB00040002001F006C001B0027FFC6FFACFFC8FFBB00670062FFD30045001BFFB6FF9500A0FFCAFFF6FF9BFF63FFCB002E004DFFEDFFFD0024FFFEFF86008D0016FF37FFD10035FFAB0013003EFF86004EFF990010FF2A0046FFA8FFF60009
125
+ 3F4FFAEFFD20035FFD2FFD0FFEEFFFEFFE2002D0052FFEDFFDAFFBEFFA3FF960011FFD2FFFFFFAA0010FF5FFFCF00680035FFE200190018FFDC00340002FFE1000BFF8CFFCB001CFFF000000007FFCEFFEE0003FFC9FF52FFE00036FFDE00220003FFE9FFEA007AFFCA0011FFE70055FF9AFFB700390024000DFF3DFFDD00B9FF710001FFF8FFF40078FFAC0007FFF4FFFC003200230023004FFF97000000420061FF7EFFC800500055FFEFFF6B003900AC0034003A0067FFD800010007FFE2FF2000060049FFB100450018001A004BFFED004E0023FFD0FFC6FFB30020FFEA0054FFEFFFCDFFA60019FFBF0003FFF6FFFF0051FF97FFD40011FFF5FFB70009
126
+ 2FEFFDEFFF10031FEF5FFD1FF7AFFF50026FFEC006A00120037FFF70021003DFF19001000270010FEE10012002E00330063FFB1FF53FF6BFF54FFFBFFEAFFF7FFC9FFCD0005FFE60025FFDF0072FF88008EFFF0FEAF000E00E7004FFFAAFFAD0091FFEBFE89FFB6FFDDFFCA00530035FE96FFEBFEFEFFED0004FFA000490013FEA200300005002CFEFD003800100008FFD9FFCBFFCCFFAC00150010FF76001C00370047FFDF0030000A0032FFB5005EFFE9FF38FFD70001FFB8FFEB00560016FF65FFC7FF7BFF3CFFABFFCFFF2A0012FFDFFFF8001500220082FFE3FF58FFF1FFC6FFEDFF77FFF6FEE200280037FF990017FF900050005AFFAEFFD5FF11FFF7
127
+ 02CFFD20070002AFFEAFF6C0009FFF6FFB1FFB1003CFFF1FFCA000DFEF0FFE6004EFF9BFF6BFFD3FFFCFF9A002A000CFF71FFFE0038FFF5FF8FFFA1FFFAFFF900860024FF8F002D006A0018006D0048FFD4FFC6FF47FFEF0022FFD6FFE6003E0006FFB1FFE9FFE5FF55003C00890049FFC6FEE700AE005A0010000EFF5EFF76FF27FFEEFFB8003A0002FFCAFFA2FFFDFF53000700290024007EFFED0019002FFF75FFE4FFE8FF47FFD600520031FF9C0010005D00400014FFEA003EFF27FFEBFFBDFFBC00D00065FF63004EFF5A0052FFD100700013FFFCFFB1005E0056FF72FF56002EFF71FFEF0049FF1D0031FFD2FFA9FFD10000007800390018FFD200A6
128
+ 3D50002FFE6FFE1FFE7FFD8FFB7FFFAFFDC0084FF7FFFF4FF93FF93FFF8FFAE0023FFE0FFE3FFF1FF52000FFFAE00410016FFEA0041FFFEFFB2005BFFE6FFBBFFE5FF80FFD0FFFA0048FF6DFFD2FF550060FFAFFF80FFE1002EFF43FFA2FF490000FFD3004DFFE5001700330077FFC3FEEFFFF70046FFF30059FF590066FF82FF74FFE40008FFD1003B0031FFDDFFB700B5FFA3FFAEFFE4000DFF9AFFD8000FFFCBFFF8FFE700830003FFDEFF0EFFEAFFB8FFB90006002C0027FFB5FFAB00060019001F0025FF4CFF7C0070001CFFF90000001CFFD0FFE90015FFEE000A00190003FF8EFFB5FFC4FFB0FFDE0041002B0002005F003C006B0051FFDCFF98FFE1
129
+ 3F10007FF65002D00D8FFA30014FFF900580015FFF8FFBDFFA0FFF4FFF1FFE0004E0006FFAEFFC6FF9AFFA8FFB80019FFE8FFF3FFD3FFE8FFD0FFDFFFFEFFECFFEFFFDB001E00000074FFC80072FFF9FF8BFFED002F0023FFEC001C00120003FFCDFFFDFFFA0023FFF6FFFC0022FFD5FFA6FFB2000CFFDFFF76FFDD0043002E0004000EFFCEFFF1FFC00054FFCAFFB4FFD8FFD0FFA3000EFFC5FFE1FFBD0027FFDE0000000D0023FEE70052FFACFFF5FFCDFFE7FF9A00360010003C0011FFEA0042FFF2FF9E0013FFF30023FFF3003AFFCE000FFFE6FFFD002EFFB3FF49FFBC0038FFB8FFE2FFCCFFEFFFE0FF9F0037FF9EFFE300660060001DFFA2005C0055
130
+ 0100016FFE80017FF7B007CFFD60017FFF6000BFFF1FFD40082FFB1001CFFF6FFEE001E0047FF9A000CFFF6001BFFC5FF81000BFFD7001E000600340061FFD1FF89FFF400610024FF980001FF8D00200031FFD2FF53FF99FFF7FFCA0064FFFCFF88FF8F0014004CFFFA0022FEB200420083003C001200520010FFE7003EFFEAFFF4FF8EFF2CFFF50043002BFFC1FFD1008500370073FFE40075002E0014FFF1000500020006FFE5005C002B00AAFFF10049FFC1001AFFDE004A00190069FFFCFF3AFFE2018A0052FEF50015FFB9FFAF008CFFBB0050000E008B000000490022003DFF9A003BFF6EFFAE0004FFECFFE6FFF20029FF79FFFE0042FF78FFF20055
131
+ 3E00019003C0003FF2FFFA60030000B0015FFC00036FFEF0066007E00B5FFDEFF730026FFECFFD9FEE30057FFF70044FFFB000EFF3FFFEEFFA2FFC20038008000B2FFF1002F0014FF8FFFCE0000002A0034FFB0000E0014FFFAFFA3000DFFE70071FFB7FFBAFFF9000A00010056FFF40083FFF6001C0034FFEEFFC0FFD10033FFE30022002DFFC0FF2FFFC1FF61FFD1FEF5FFD20059FFF6001BFFD8FF95000FFFC9FFA6009DFFB70025FFDB00A8FFA3001A00320018002F006C000200280037FFD7006B00C30012FF15FFBBFF7EFFD6FFC5001FFFE7FFFF0052FFD600460034FFE8FFE40001003BFFA4005AFFAD002F00500013FFF4FFBAFF7DFFF900DB000E
132
+ 3D700050004FFB7FFA5FFB6003BFFD20022FFAB0016FFD8000CFFE2004200420000FFED000C00050044004B0047FFFFFFD10016FFB1FFEDFF8F000F00390031FFF40030001FFFE1FFD4005AFFD6FF980003FFDCFF2E0008FFF100360005005B002BFF95FF950007FFDA000CFFA4002A006EFFE4003300160047001EFF88FFF4FF60FFDD000F000FFFEAFFF4FF87FFFA003300130055FFF8002E0004FF470020FFDCFFD8FFC1FFE4001DFFFA0076FF94000DFFFAFFF0001AFFF0FFD0005D0027FF4AFFFD00AEFFBCFF850010FF3500140056FFEDFFDFFFFC000FFFD8FF70FF78FFC50016FF88FFA5FF63003DFF98FFBF0053000DFFD60005FFDFFF99000A000B
133
+ 3FC0005FF900017FF3F00460023002F000AFFDF0024FFD1FFD0002CFFC30068FFF7001CFF930010FFD2000C002CFFFCFFDCFFF2FF8200360004FFF80029FFF3FFD500080011FF920079003F0041FFDAFFF10041FFF1003000290069FF62FFC500230009FFDB00130020001BFFEBFF730036004F00300055FF9A002CFF7CFFD2FFD2FFB3FF9EFFED004EFFF9001EFFB6FFB000190005001AFF81FFD2002A0039FFB1FFDA0032FFD2FFA9FFF5002A00020015FFB7FFE6FFDAFFBD0024FFBC0027FF93FFF9001BFF6500D0FF8AFFB9FFE6FF3B0082FFDBFFEEFFD8003D00260027FF7CFFEAFF94FFEB00A2FFE3FF13FFE90087001D0010FFE3FFF6FF5AFFB00024
134
+ 031FFF500200020001EFFF6001A000C001EFFEAFFF700000031002BFFC9FFB5FF99FFF00036000D000F000CFFC1FFFEFFFA001E00300016FFE6FFD80058000A0027FFB9FFF5FFF10035FFE4FFFB00140013FFF3FFCFFFFA0020001FFFF9FF8B0003001DFFD40034003F003E0039FFD30062FFE0FFA5FF60FFDB000BFFE1FFF800210058002A000100350003FFD3002B0037FFF4000EFFDE003EFFF1FFF8FFA900010044FFEF00AD0010FFDB0014002EFF460044FFC60001FFF8FFE60018FFEDFFB8000CFF01FFD1FEDBFFAAFF77FFE6FFF6001BFFF6FFDFFFB9FFE5003FFFC0FF5E008F008600070080FFFD002B002700160024FFEFFFF3FF7B002A0008FFEC
135
+ 019000EFFC4FF89FFD4002E001DFFF2FF9BFFC7003FFFFC0088FFC30077FFDFFFE3FFF10047FFF7FF74FFDBFFFAFFE8001E0011FFA3001D00470025009DFFF5FF7D00350009FFB8FFD6FFB1FFC6002C006A0011FFB7FFF60000002A0072FFEEFFAFFFB4007FFF900079FFD6FFB5000E00100044FFBDFF780045FFE0008EFFCD003BFFCDFFF60024FFD9FFD8FFFAFFE8FF91FFAB0064FF9E0041FFDC0038FFD60061FFEEFFD1FF7100550028FFCAFF99003AFFCCFF7A0004FFE6FFCA002A000BFF790038003300B3003FFF81000C0004FFEC0047FFEF000F005A001BFFE6000600B0FFC3000FFFEBFFAD000FFFE20023000C0039FFE8FFADFFF1FFC1FF750081
136
+ 3FAFFD3FF36003DFFEF0064FFD90035002AFFE5FFBBFFF5003AFF82FFF8FFC0FFCD0008FFFAFFADFF74000DFFBE00180017FFE50021FF37FFF7001CFFED0021FFDA001AFFBFFFCA003EFFFE0007003CFFD7FFCCFFBDFF85FF61000AFFD50011002DFFF5007A0005FFC50045000D005CFFC1FFA90021FF7F0052FF58FFC5FF81FF8C0013FFF2FFDC000DFFF60021000AFF640045FFFBFFF4FFE3002D0025FFDAFFFCFFD3FFF3FFF1FFE20000FF76FFF40019FFF600030001FFAB0041FFD60018FFEDFFBCFFE00001FFC90045001FFFAD00470032FFE30039FFF700060010000900570020FFE800050005003C000AFFA90004FFBE007E006E008F0089FFF20045
137
+ 3AA000100460000004EFFD100480034FFD1FFF600680023FF83FFDBFF74002AFFEF001D004DFFF7000400040008001AFF9C0021FFB3FFCDFFD1FFDC00540004002FFFA5FF75FFF2004E00170008003DFFB1005A0057FFD2006D002E0063FFBCFF7DFFDC0012000BFF790035FFF2005DFFCDFFE10053FF2F0061FFE4FF93FFF60045001700070002FFD9FFFE0009FFE0FFECFFCA0099FFDCFFD0FFDDFFDEFFDBFFF7002DFF77000D0004FFDE00910008008FFFD7FFDCFFB60009FFECFFC600120051FFF9019DFFE4FE9BFFD50038001AFF0E0005000F0038FFA8002E0023FFD300500044002B0005FFA30066FFA80018005300010020003B002D0033009A0022
138
+ 3E7FFED004D00350067FFD200070001FF920045FFECFFF5FF960015FFE1FFFAFF68FFF6FFD90027FFC10051FFF2FFEEFF74FFF000020047FFE4FFE3FFD4FFF6FFD6FFEFFF88FFC9005F0003FF7D0040001AFFCBFFC0003EFEEEFFBAFF76FFFB00100014FFDE004FFF910012FFFAFFD3FEE5001B0026003A00A3FFADFFB1FFD6FFB9FFD100230003FFD7FFD2FFD5002000BAFFD80063003EFFB4FFE00004FFEC003E000DFFA400020017000B005AFFEC0022FFF00038FFB60045FFFDFF56FFFE000000070099006FFF5BFFDF006FFFE4FF86FF94FFE2FFC3001C0029FF9EFFBDFFF6001D0019006700AA0012000F0023008600260048FFF000060005FF7CFFEF
139
+ 050FFCF00A8FFF10031000BFFE8FFE1FF8CFFCCFFF3000EFFE8FFAC000AFFFB000CFFC5FFF800060094FFD1FFF200220015001E002000210039FFB0FFBCFF9AFFFFFFC3FFEAFFEDFFFFFFCA004A001BFFC30001FFD3001B008B0056008B0017FFBC00000005FFFA005AFFE8FFC2001A0017FFB7006A0008FFC40033FFEF0077FF630024FFF8002500090017FFA9FFF4FF820038000C0019000C002FFFFFFFE7FF09FF77FFDE0009FEFEFFD1FFF8FFC4FFDE0022FFD300360023FFFE00450013FF90FF86FF57FFC7FFF9002EFF97FF8EFFB6FF47FFB5FFF5FFBB00290068004CFF8BFFADFFE00029008AFFEEFF6C000E001A0040FFF2FFFFFFD50024FFE60003
140
+ 03DFFC4007D0027FFDBFFF2FFD4FFC5FFCFFFEE0024FFE7002EFFE90044001EFFAD001DFF6A002C002A0017FFFF0015FFA3001BFFBDFFDD0003FFE1FFDB00010062000FFFFF0013001500140032FF9EFFC6FFFFFF98FFD7004CFFE7002400470001001B0033FFE3004600200001FFF400340053FFE100450015FFE4FFE3FFEDFF560002FFEAFFC3FF9F000AFFD9FFFCFFD3FFE000C90007006E0024FFEFFFE8FFA4001A0036FFEA001BFFC10131FFF2FFF8FFBCFFF900580016FFE300470007FFBAFF98002AFF6AFF410004FFAE00020073FFFEFFD5FFDB0049FFBDFFA500540016FFF4FFD4FFF4004BFFE9FFAAFFC10017FF8F0019FFEBFFA00045FF51FFF4
141
+ 3E8FFFB0013FFDBFFCB0010FFD8FFCEFFA2001200560013003CFFE9006E0025FFBF0011FFA20032FFF90026FFDA0012FFE2FFDEFFF60052FFD3001F0011FFFD009CFFEF0049FFAE0046FFB6004A001CFFD0FFC4FFB4FFE5FFE200160020FFF0003C0008FFAEFFBEFFE50007FFFDFFBCFFEEFFD4FFD0002A004FFFC7FFDF000EFFF200050014000E001DFFE50005FFF5FFAC001E00520024FFE30017FF94002100610017002EFFDDFFEA0045FFACFF78FF940045007D00490051003600AC0000003DFFC8FFBA0034005EFFDF001FFFD20068FFDDFFC1FFCCFFDC0020FFCB001D0034FFC70011003AFF900073002EFFF7FFEFFFE7FFFBFFD6FF9AFFEE005DFFD3
142
+ 3D7FFBCFFF0FFABFF780044FFCF00010020FFEC0033FFE0FE710004FF28000AFFDE00220075FFC9FFE2FF7FFF98FFF4006C000F0008FFF1FFEEFFEDFF61FFF5FF480005FFDA0016004A0011005AFFB9FFB1FFF50076000EFFDEFF3E0033FFCBFFB8000700E7FFD4FFCA0008FF7AFFDAFF66FF22FFFBFFF4FF8B0018FFB1FFF8FFAC000AFFBEFFD90078FFF2FFF9FFF80018FFF20065FFD900250015FFC6FFF9FFDE0005FFBDFFC4FFFFFFD2FFDFFFCD0072FF8C00B8FFDFFFD9FFB1FF210034FFD4FFB000A7FFBAFFB5001E0073FFFCFEEF0021005F00050004FFAE005100440088FFEC0003FFE5FFA1FFB3FF78FFC200780023FF7DFFDC0048003DFF70002B
143
+ 3C30008FF8400010043FFEF0069FFFDFFE6000EFF65FFC4FFE5FFB4007DFFE5000500320023001FFFDC0011FFF10036FFDFFFB000050045FFF2FF9600A4FF96000A002E00070003FEDCFFAD0010FFE9000A0029FF2A003BFF52FFE2FFDAFFE4FFD0001DFFA5FFF600570008FFC2FFD70065FFFDFF5D004B006AFFE700A3FFEBFFE3FFCCFFFB001CFFD10013FFE70023008E0016FFDFFFFC0041FFE9FFB10018FFF6FFF400150006002DFFD8FFE90009FF91002EFF710023FFFE004F001CFFE2FFCCFFCE0096005EFF6B0035002DFFE800320056FFD9FFC00038FFCCFFD5FFFDFFF0FFF6FFB3FFD8FFA9FFCEFFF1FF72FFFA0042FFC100480014FFB9FFD8FFE8
144
+ 00E00140021FFE4FFE0FF8D0004FFE4FFB2002F0018FFDE000F002B0078FFDEFFB4FFE7FFCDFFE8FF7AFFD8FF73FFE90036FFF2FFD0FFC70031000A0036FFBF001D003700290018FFFBFF81006CFFEA000DFFF7FFE4FFF6007DFF7A005B0008001E0025FFF9FFA200000012FFFBFFBF005DFF80FF51FFECFFFC001E0011FFEE001F0016002FFFCAFFCBFFECFFF5FFFDFF92FFD40049FFFCFF67FFA4FFB300100032FFFC0009FFE7FFBF000CFF65FFE2FEFAFF79FFFB00120056FFD10035FFFA006C0001FFC0FFBF00140009FFBC0038FFE3FFF8FFC4FFFB001AFFCCFFBAFFCB0071FFB5002DFFDCFFEEFFAE0030FFF2FFBBFFCF00240071FF9F00100044FFE3
myproject_prj/solution1/syn/verilog/myproject_fifo_w1024_d64_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_w1024_d64_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 1024,
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
+ 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_w1024_d64_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_w1024_d64_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_w1024_d64_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 1024,
206
+ ADDR_WIDTH = 6,
207
+ DEPTH = 64)
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/syn/verilog/myproject_fifo_w1312_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_w1312_d256_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 1312,
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_w1312_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_w1312_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_w1312_d256_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 1312,
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/syn/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/syn/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/syn/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/syn/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/syn/verilog/myproject_fifo_w256_d1156_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_w256_d1156_A
12
+ #(parameter
13
+ MEM_STYLE = "auto",
14
+ DATA_WIDTH = 256,
15
+ ADDR_WIDTH = 11,
16
+ DEPTH = 1156)
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_w256_d1156_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_w256_d1156_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_w256_d1156_A_ram
203
+ #(parameter
204
+ MEM_STYLE = "auto",
205
+ DATA_WIDTH = 256,
206
+ ADDR_WIDTH = 11,
207
+ DEPTH = 1156)
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/syn/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/syn/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/syn/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/syn/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/syn/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/syn/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/syn/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/syn/verilog/myproject_flow_control_loop_pipe_sequential_init.v ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_sequential_init(
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
+ wire ap_loop_init;
43
+ reg ap_loop_init_int;
44
+ reg ap_done;
45
+ reg ap_done_cache;
46
+
47
+ //Exit signal from loop body
48
+ input ap_loop_exit_ready;
49
+ input ap_loop_exit_done;
50
+
51
+ // power-on initialization
52
+ initial begin
53
+ #0 ap_loop_init_int = 1'b1;
54
+ #0 ap_done_cache = 1'b0;
55
+ end
56
+
57
+ assign ap_start_int = ap_start;
58
+
59
+ assign ap_continue_int = 1'b1;
60
+
61
+ assign ap_ready = ap_loop_exit_ready;
62
+
63
+ //ap_loop_init is valid for the first II
64
+ //of the first loop run so as to enable
65
+ //the init block ops which are pushed into
66
+ //the first state of the pipeline region
67
+ always @ (posedge ap_clk)
68
+ begin
69
+ if (ap_rst == 1'b1) begin
70
+ ap_loop_init_int <= 1'b1;
71
+ end else if(ap_loop_exit_done == 1'b1) begin
72
+ ap_loop_init_int <= 1'b1;
73
+ end else if(ap_ready_int == 1'b1) begin
74
+ ap_loop_init_int <= 1'b0;
75
+ end
76
+ end
77
+
78
+ assign ap_loop_init = ap_loop_init_int & ap_start;
79
+
80
+ // if no ap_continue port and current module is not top module,
81
+ // ap_done handshakes with ap_start. Internally, flow control sends out
82
+ // ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle.
83
+ // ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int
84
+ // is asserted, so DUT can start the next run
85
+ always @(posedge ap_clk)
86
+ begin
87
+ if (ap_rst == 1'b1) begin
88
+ ap_done_cache <= 1'b0;
89
+ end else if (ap_done_int == 1'b1) begin
90
+ ap_done_cache <= 1'b1;
91
+ end else if (ap_start_int == 1'b1) begin
92
+ ap_done_cache <= 1'b0;
93
+ end
94
+ end
95
+
96
+ // if no ap_continue port and current module is not top module, ap_done handshakes with ap_start
97
+ always @(*)
98
+ begin
99
+ if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin
100
+ ap_done = 1'b1;
101
+ end else begin
102
+ ap_done = 1'b0;
103
+ end
104
+ end
105
+
106
+ endmodule
107
+
myproject_prj/solution1/syn/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/syn/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/syn/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/syn/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/syn/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/syn/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/syn/verilog/myproject_mac_muladd_16s_9s_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_9s_41s_42_1_1_DSP48_0(
13
+ input [16 - 1:0] in0,
14
+ input [9 - 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_9s_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_9s_41s_42_1_1_DSP48_0 myproject_mac_muladd_16s_9s_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/syn/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/syn/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