eFEX firmware  1.7.3
ATLAS l1-calo - electron and tau feature extraction firmware for eFEX boards

Back to eFEX documentation
AdderTree.vhd
1 
177 library IEEE;
178 use IEEE.STD_LOGIC_1164.all;
179 library work;
180 use work.DataTypes.all;
181 
182 entity AdderTree is
183  port (
184  CLK : in std_logic;
185  IN_Words : in DataWords(98 downto 0);
186  OUT_Words : out DataWords(21 downto 0);
187  OUT_Overflows : out std_logic_vector(21 downto 0)
188  );
189 end AdderTree;
190 architecture Behavioral of AdderTree is
191  signal sc83 : DataWordWithCarry := (others => '0');
192  signal sc11 : DataWordWithCarry := (others => '0');
193  signal CORE_out : DataWordWithCarry := (others => '0');
194  signal l2_d0125_OUT_Word_TO_DelayWC_l2_d0125_l2_d0125_d_IN_Word : DataWordWithCarry := (others => '0');
195  signal EM_ET_out : DataWordWithCarry := (others => '0');
196  signal sc23 : DataWordWithCarry := (others => '0');
197  signal sc53 : DataWordWithCarry := (others => '0');
198  signal sc65 : DataWordWithCarry := (others => '0');
199  signal sc48 : DataWordWithCarry := (others => '0');
200  signal sc29 : DataWordWithCarry := (others => '0');
201  signal sc68 : DataWordWithCarry := (others => '0');
202  signal sc54 : DataWordWithCarry := (others => '0');
203  signal sc56 : DataWordWithCarry := (others => '0');
204  signal sc43 : DataWordWithCarry := (others => '0');
205  signal sc17 : DataWordWithCarry := (others => '0');
206  signal T8_out : DataWordWithCarry := (others => '0');
207  signal sc19 : DataWordWithCarry := (others => '0');
208  signal sc6 : DataWordWithCarry := (others => '0');
209  signal sc70 : DataWordWithCarry := (others => '0');
210  signal sc93 : DataWordWithCarry := (others => '0');
211  signal l1_d1493_OUT_Word_TO_DelayWC_l1_d1493_l1_d1493_d_IN_Word : DataWordWithCarry := (others => '0');
212  signal l2_d0990_out : DataWordWithCarry := (others => '0');
213  signal sc95 : DataWordWithCarry := (others => '0');
214  signal ET_out : DataWordWithCarry := (others => '0');
215  signal sc90 : DataWordWithCarry := (others => '0');
216  signal sc45 : DataWordWithCarry := (others => '0');
217  signal sc61 : DataWordWithCarry := (others => '0');
218  signal l1_d1164_OUT_Word_TO_DelayWC_l1_d1164_l1_d1164_d_IN_Word : DataWordWithCarry := (others => '0');
219  signal sc85 : DataWordWithCarry := (others => '0');
220  signal sc86 : DataWordWithCarry := (others => '0');
221  signal l2_d0375_out : DataWordWithCarry := (others => '0');
222  signal sc42 : DataWordWithCarry := (others => '0');
223  signal l2_d0375_OUT_Word_TO_DelayWC_l2_d0375_l2_d0375_d_IN_Word : DataWordWithCarry := (others => '0');
224  signal sc98 : DataWordWithCarry := (others => '0');
225  signal sc49 : DataWordWithCarry := (others => '0');
226  signal sc38 : DataWordWithCarry := (others => '0');
227  signal sc31 : DataWordWithCarry := (others => '0');
228  signal sc47 : DataWordWithCarry := (others => '0');
229  signal sc37 : DataWordWithCarry := (others => '0');
230  signal l0_d0000_out : DataWordWithCarry := (others => '0');
231  signal sc63 : DataWordWithCarry := (others => '0');
232  signal sc5 : DataWordWithCarry := (others => '0');
233  signal sc96 : DataWordWithCarry := (others => '0');
234  signal l1_d1690_out : DataWordWithCarry := (others => '0');
235  signal T5_out : DataWordWithCarry := (others => '0');
236  signal sc84 : DataWordWithCarry := (others => '0');
237  signal sc88 : DataWordWithCarry := (others => '0');
238  signal T1_out : DataWordWithCarry := (others => '0');
239  signal sc3 : DataWordWithCarry := (others => '0');
240  signal sc57 : DataWordWithCarry := (others => '0');
241  signal l1_d1315_OUT_Word_TO_DelayWC_l1_d1315_l1_d1315_d_IN_Word : DataWordWithCarry := (others => '0');
242  signal sc1 : DataWordWithCarry := (others => '0');
243  signal sc34 : DataWordWithCarry := (others => '0');
244  signal l2_d1051_out : DataWordWithCarry := (others => '0');
245  signal l1_d1493_out : DataWordWithCarry := (others => '0');
246  signal sc92 : DataWordWithCarry := (others => '0');
247  signal sc21 : DataWordWithCarry := (others => '0');
248  signal sc73 : DataWordWithCarry := (others => '0');
249  signal sc30 : DataWordWithCarry := (others => '0');
250  signal l2_d0990_OUT_Word_TO_DelayWC_l2_d0990_l2_d0990_d_IN_Word : DataWordWithCarry := (others => '0');
251  signal sc75 : DataWordWithCarry := (others => '0');
252  signal sc80 : DataWordWithCarry := (others => '0');
253  signal sc28 : DataWordWithCarry := (others => '0');
254  signal sc89 : DataWordWithCarry := (others => '0');
255  signal sc40 : DataWordWithCarry := (others => '0');
256  signal sc15 : DataWordWithCarry := (others => '0');
257  signal sc59 : DataWordWithCarry := (others => '0');
258  signal sc7 : DataWordWithCarry := (others => '0');
259  signal sc62 : DataWordWithCarry := (others => '0');
260  signal sc14 : DataWordWithCarry := (others => '0');
261  signal sc26 : DataWordWithCarry := (others => '0');
262  signal sc12 : DataWordWithCarry := (others => '0');
263  signal sc50 : DataWordWithCarry := (others => '0');
264  signal sc52 : DataWordWithCarry := (others => '0');
265  signal sc58 : DataWordWithCarry := (others => '0');
266  signal sc94 : DataWordWithCarry := (others => '0');
267  signal sc44 : DataWordWithCarry := (others => '0');
268  signal sc74 : DataWordWithCarry := (others => '0');
269  signal T6_out : DataWordWithCarry := (others => '0');
270  signal sc4 : DataWordWithCarry := (others => '0');
271  signal l1_d1690_OUT_Word_TO_DelayWC_l1_d1690_l1_d1690_d_IN_Word : DataWordWithCarry := (others => '0');
272  signal sc36 : DataWordWithCarry := (others => '0');
273  signal sc16 : DataWordWithCarry := (others => '0');
274  signal sc60 : DataWordWithCarry := (others => '0');
275  signal sc76 : DataWordWithCarry := (others => '0');
276  signal T7_out : DataWordWithCarry := (others => '0');
277  signal sc79 : DataWordWithCarry := (others => '0');
278  signal l2_d1051_OUT_Word_TO_DelayWC_l2_d1051_l2_d1051_d_IN_Word : DataWordWithCarry := (others => '0');
279  signal l2_d0625_out : DataWordWithCarry := (others => '0');
280  signal sc69 : DataWordWithCarry := (others => '0');
281  signal sc27 : DataWordWithCarry := (others => '0');
282  signal sc0 : DataWordWithCarry := (others => '0');
283  signal sc41 : DataWordWithCarry := (others => '0');
284  signal sc9 : DataWordWithCarry := (others => '0');
285  signal sc24 : DataWordWithCarry := (others => '0');
286  signal T2_out : DataWordWithCarry := (others => '0');
287  signal sc20 : DataWordWithCarry := (others => '0');
288  signal T0_out : DataWordWithCarry := (others => '0');
289  signal sc13 : DataWordWithCarry := (others => '0');
290  signal sc22 : DataWordWithCarry := (others => '0');
291  signal sc78 : DataWordWithCarry := (others => '0');
292  signal l1_d1164_out : DataWordWithCarry := (others => '0');
293  signal sc25 : DataWordWithCarry := (others => '0');
294  signal sc67 : DataWordWithCarry := (others => '0');
295  signal sc39 : DataWordWithCarry := (others => '0');
296  signal sc91 : DataWordWithCarry := (others => '0');
297  signal sc97 : DataWordWithCarry := (others => '0');
298  signal HAD_ET_out : DataWordWithCarry := (others => '0');
299  signal l2_d0625_OUT_Word_TO_DelayWC_l2_d0625_l2_d0625_d_IN_Word : DataWordWithCarry := (others => '0');
300  signal l1_d1315_out : DataWordWithCarry := (others => '0');
301  signal sc81 : DataWordWithCarry := (others => '0');
302  signal sc46 : DataWordWithCarry := (others => '0');
303  signal sc66 : DataWordWithCarry := (others => '0');
304  signal l2_d0125_out : DataWordWithCarry := (others => '0');
305  signal sc71 : DataWordWithCarry := (others => '0');
306  signal sc82 : DataWordWithCarry := (others => '0');
307  signal sc2 : DataWordWithCarry := (others => '0');
308  signal sc18 : DataWordWithCarry := (others => '0');
309  signal T3_out : DataWordWithCarry := (others => '0');
310  signal sc55 : DataWordWithCarry := (others => '0');
311  signal sc32 : DataWordWithCarry := (others => '0');
312  signal l0_d0000_OUT_Word_TO_DelayWC_l0_d0000_l0_d0000_d_IN_Word : DataWordWithCarry := (others => '0');
313  signal sc87 : DataWordWithCarry := (others => '0');
314  signal sc64 : DataWordWithCarry := (others => '0');
315  signal sc77 : DataWordWithCarry := (others => '0');
316  signal sc33 : DataWordWithCarry := (others => '0');
317  signal sc8 : DataWordWithCarry := (others => '0');
318  signal sc51 : DataWordWithCarry := (others => '0');
319  signal sc35 : DataWordWithCarry := (others => '0');
320  signal sc72 : DataWordWithCarry := (others => '0');
321  signal sc10 : DataWordWithCarry := (others => '0');
322 begin
323  sc0(sc0'high - 1 downto 0) <= IN_Words(0);
324  sc1(sc1'high - 1 downto 0) <= IN_Words(1);
325  sc2(sc2'high - 1 downto 0) <= IN_Words(2);
326  sc3(sc3'high - 1 downto 0) <= IN_Words(3);
327  sc4(sc4'high - 1 downto 0) <= IN_Words(4);
328  sc5(sc5'high - 1 downto 0) <= IN_Words(5);
329  sc6(sc6'high - 1 downto 0) <= IN_Words(6);
330  sc7(sc7'high - 1 downto 0) <= IN_Words(7);
331  sc8(sc8'high - 1 downto 0) <= IN_Words(8);
332  sc9(sc9'high - 1 downto 0) <= IN_Words(9);
333  sc10(sc10'high - 1 downto 0) <= IN_Words(10);
334  sc11(sc11'high - 1 downto 0) <= IN_Words(11);
335  sc12(sc12'high - 1 downto 0) <= IN_Words(12);
336  sc13(sc13'high - 1 downto 0) <= IN_Words(13);
337  sc14(sc14'high - 1 downto 0) <= IN_Words(14);
338  sc15(sc15'high - 1 downto 0) <= IN_Words(15);
339  sc16(sc16'high - 1 downto 0) <= IN_Words(16);
340  sc17(sc17'high - 1 downto 0) <= IN_Words(17);
341  sc18(sc18'high - 1 downto 0) <= IN_Words(18);
342  sc19(sc19'high - 1 downto 0) <= IN_Words(19);
343  sc20(sc20'high - 1 downto 0) <= IN_Words(20);
344  sc21(sc21'high - 1 downto 0) <= IN_Words(21);
345  sc22(sc22'high - 1 downto 0) <= IN_Words(22);
346  sc23(sc23'high - 1 downto 0) <= IN_Words(23);
347  sc24(sc24'high - 1 downto 0) <= IN_Words(24);
348  sc25(sc25'high - 1 downto 0) <= IN_Words(25);
349  sc26(sc26'high - 1 downto 0) <= IN_Words(26);
350  sc27(sc27'high - 1 downto 0) <= IN_Words(27);
351  sc28(sc28'high - 1 downto 0) <= IN_Words(28);
352  sc29(sc29'high - 1 downto 0) <= IN_Words(29);
353  sc30(sc30'high - 1 downto 0) <= IN_Words(30);
354  sc31(sc31'high - 1 downto 0) <= IN_Words(31);
355  sc32(sc32'high - 1 downto 0) <= IN_Words(32);
356  sc33(sc33'high - 1 downto 0) <= IN_Words(33);
357  sc34(sc34'high - 1 downto 0) <= IN_Words(34);
358  sc35(sc35'high - 1 downto 0) <= IN_Words(35);
359  sc36(sc36'high - 1 downto 0) <= IN_Words(36);
360  sc37(sc37'high - 1 downto 0) <= IN_Words(37);
361  sc38(sc38'high - 1 downto 0) <= IN_Words(38);
362  sc39(sc39'high - 1 downto 0) <= IN_Words(39);
363  sc40(sc40'high - 1 downto 0) <= IN_Words(40);
364  sc41(sc41'high - 1 downto 0) <= IN_Words(41);
365  sc42(sc42'high - 1 downto 0) <= IN_Words(42);
366  sc43(sc43'high - 1 downto 0) <= IN_Words(43);
367  sc44(sc44'high - 1 downto 0) <= IN_Words(44);
368  sc45(sc45'high - 1 downto 0) <= IN_Words(45);
369  sc46(sc46'high - 1 downto 0) <= IN_Words(46);
370  sc47(sc47'high - 1 downto 0) <= IN_Words(47);
371  sc48(sc48'high - 1 downto 0) <= IN_Words(48);
372  sc49(sc49'high - 1 downto 0) <= IN_Words(49);
373  sc50(sc50'high - 1 downto 0) <= IN_Words(50);
374  sc51(sc51'high - 1 downto 0) <= IN_Words(51);
375  sc52(sc52'high - 1 downto 0) <= IN_Words(52);
376  sc53(sc53'high - 1 downto 0) <= IN_Words(53);
377  sc54(sc54'high - 1 downto 0) <= IN_Words(54);
378  sc55(sc55'high - 1 downto 0) <= IN_Words(55);
379  sc56(sc56'high - 1 downto 0) <= IN_Words(56);
380  sc57(sc57'high - 1 downto 0) <= IN_Words(57);
381  sc58(sc58'high - 1 downto 0) <= IN_Words(58);
382  sc59(sc59'high - 1 downto 0) <= IN_Words(59);
383  sc60(sc60'high - 1 downto 0) <= IN_Words(60);
384  sc61(sc61'high - 1 downto 0) <= IN_Words(61);
385  sc62(sc62'high - 1 downto 0) <= IN_Words(62);
386  sc63(sc63'high - 1 downto 0) <= IN_Words(63);
387  sc64(sc64'high - 1 downto 0) <= IN_Words(64);
388  sc65(sc65'high - 1 downto 0) <= IN_Words(65);
389  sc66(sc66'high - 1 downto 0) <= IN_Words(66);
390  sc67(sc67'high - 1 downto 0) <= IN_Words(67);
391  sc68(sc68'high - 1 downto 0) <= IN_Words(68);
392  sc69(sc69'high - 1 downto 0) <= IN_Words(69);
393  sc70(sc70'high - 1 downto 0) <= IN_Words(70);
394  sc71(sc71'high - 1 downto 0) <= IN_Words(71);
395  sc72(sc72'high - 1 downto 0) <= IN_Words(72);
396  sc73(sc73'high - 1 downto 0) <= IN_Words(73);
397  sc74(sc74'high - 1 downto 0) <= IN_Words(74);
398  sc75(sc75'high - 1 downto 0) <= IN_Words(75);
399  sc76(sc76'high - 1 downto 0) <= IN_Words(76);
400  sc77(sc77'high - 1 downto 0) <= IN_Words(77);
401  sc78(sc78'high - 1 downto 0) <= IN_Words(78);
402  sc79(sc79'high - 1 downto 0) <= IN_Words(79);
403  sc80(sc80'high - 1 downto 0) <= IN_Words(80);
404  sc81(sc81'high - 1 downto 0) <= IN_Words(81);
405  sc82(sc82'high - 1 downto 0) <= IN_Words(82);
406  sc83(sc83'high - 1 downto 0) <= IN_Words(83);
407  sc84(sc84'high - 1 downto 0) <= IN_Words(84);
408  sc85(sc85'high - 1 downto 0) <= IN_Words(85);
409  sc86(sc86'high - 1 downto 0) <= IN_Words(86);
410  sc87(sc87'high - 1 downto 0) <= IN_Words(87);
411  sc88(sc88'high - 1 downto 0) <= IN_Words(88);
412  sc89(sc89'high - 1 downto 0) <= IN_Words(89);
413  sc90(sc90'high - 1 downto 0) <= IN_Words(90);
414  sc91(sc91'high - 1 downto 0) <= IN_Words(91);
415  sc92(sc92'high - 1 downto 0) <= IN_Words(92);
416  sc93(sc93'high - 1 downto 0) <= IN_Words(93);
417  sc94(sc94'high - 1 downto 0) <= IN_Words(94);
418  sc95(sc95'high - 1 downto 0) <= IN_Words(95);
419  sc96(sc96'high - 1 downto 0) <= IN_Words(96);
420  sc97(sc97'high - 1 downto 0) <= IN_Words(97);
421  sc98(sc98'high - 1 downto 0) <= IN_Words(98);
422  l2_d1051: entity work.MultiAdderWithCarry
423  generic map (
424  stage => 2,
425  delay => 0
426  )
427  port map (
428  CLK => CLK,
429  IN_Words(0) => sc49,
430  IN_Words(1) => sc52,
431  IN_Words(2) => sc73,
432  IN_Words(3) => sc76,
433  OUT_Word => l2_d1051_OUT_Word_TO_DelayWC_l2_d1051_l2_d1051_d_IN_Word
434  );
435  l2_d0375: entity work.MultiAdderWithCarry
436  generic map (
437  stage => 1,
438  delay => 0
439  )
440  port map (
441  CLK => CLK,
442  IN_Words(0) => sc61,
443  IN_Words(1) => sc64,
444  OUT_Word => l2_d0375_OUT_Word_TO_DelayWC_l2_d0375_l2_d0375_d_IN_Word
445  );
446  l2_d0625: entity work.MultiAdderWithCarry
447  generic map (
448  stage => 1,
449  delay => 0
450  )
451  port map (
452  CLK => CLK,
453  IN_Words(0) => sc60,
454  IN_Words(1) => sc65,
455  OUT_Word => l2_d0625_OUT_Word_TO_DelayWC_l2_d0625_l2_d0625_d_IN_Word
456  );
457  l0_d0000_OUT_Word_TO_DelayWC_l0_d0000_l0_d0000_d_IN_Word <= sc4;
458  l2_d0125: entity work.MultiAdderWithCarry
459  generic map (
460  stage => 1,
461  delay => 0
462  )
463  port map (
464  CLK => CLK,
465  IN_Words(0) => sc62,
466  IN_Words(1) => sc63,
467  OUT_Word => l2_d0125_OUT_Word_TO_DelayWC_l2_d0125_l2_d0125_d_IN_Word
468  );
469  l2_d0990: entity work.MultiAdderWithCarry
470  generic map (
471  stage => 2,
472  delay => 0
473  )
474  port map (
475  CLK => CLK,
476  IN_Words(0) => sc50,
477  IN_Words(1) => sc51,
478  IN_Words(2) => sc74,
479  IN_Words(3) => sc75,
480  OUT_Word => l2_d0990_OUT_Word_TO_DelayWC_l2_d0990_l2_d0990_d_IN_Word
481  );
482  l1_d1493: entity work.MultiAdderWithCarry
483  generic map (
484  stage => 2,
485  delay => 0
486  )
487  port map (
488  CLK => CLK,
489  IN_Words(0) => sc10,
490  IN_Words(1) => sc19,
491  IN_Words(2) => sc34,
492  IN_Words(3) => sc43,
493  OUT_Word => l1_d1493_OUT_Word_TO_DelayWC_l1_d1493_l1_d1493_d_IN_Word
494  );
495  l1_d1315: entity work.MultiAdderWithCarry
496  generic map (
497  stage => 2,
498  delay => 0
499  )
500  port map (
501  CLK => CLK,
502  IN_Words(0) => sc11,
503  IN_Words(1) => sc18,
504  IN_Words(2) => sc35,
505  IN_Words(3) => sc42,
506  OUT_Word => l1_d1315_OUT_Word_TO_DelayWC_l1_d1315_l1_d1315_d_IN_Word
507  );
508  l1_d1164: entity work.MultiAdderWithCarry
509  generic map (
510  stage => 2,
511  delay => 0
512  )
513  port map (
514  CLK => CLK,
515  IN_Words(0) => sc12,
516  IN_Words(1) => sc17,
517  IN_Words(2) => sc36,
518  IN_Words(3) => sc41,
519  OUT_Word => l1_d1164_OUT_Word_TO_DelayWC_l1_d1164_l1_d1164_d_IN_Word
520  );
521  l1_d1690: entity work.MultiAdderWithCarry
522  generic map (
523  stage => 2,
524  delay => 0
525  )
526  port map (
527  CLK => CLK,
528  IN_Words(0) => sc9,
529  IN_Words(1) => sc20,
530  IN_Words(2) => sc33,
531  IN_Words(3) => sc44,
532  OUT_Word => l1_d1690_OUT_Word_TO_DelayWC_l1_d1690_l1_d1690_d_IN_Word
533  );
534  T0: entity work.MultiAdderWithCarry
535  generic map (
536  stage => 4,
537  delay => 0
538  )
539  port map (
540  CLK => CLK,
541  IN_Words(0) => sc10,
542  IN_Words(1) => sc11,
543  IN_Words(2) => sc12,
544  IN_Words(3) => sc9,
545  IN_Words(4) => sc0,
546  IN_Words(5) => sc45,
547  IN_Words(6) => sc46,
548  IN_Words(7) => sc47,
549  IN_Words(8) => sc48,
550  IN_Words(9) => sc81,
551  IN_Words(10) => sc90,
552  IN_Words(11) => ZERO_DATA_WORD_WITH_CARRY,
553  IN_Words(12) => ZERO_DATA_WORD_WITH_CARRY,
554  IN_Words(13) => ZERO_DATA_WORD_WITH_CARRY,
555  IN_Words(14) => ZERO_DATA_WORD_WITH_CARRY,
556  IN_Words(15) => ZERO_DATA_WORD_WITH_CARRY,
557  OUT_Word => T0_out
558  );
559  T1: entity work.MultiAdderWithCarry
560  generic map (
561  stage => 4,
562  delay => 0
563  )
564  port map (
565  CLK => CLK,
566  IN_Words(0) => sc49,
567  IN_Words(1) => sc52,
568  IN_Words(2) => sc50,
569  IN_Words(3) => sc51,
570  IN_Words(4) => sc1,
571  IN_Words(5) => sc13,
572  IN_Words(6) => sc14,
573  IN_Words(7) => sc15,
574  IN_Words(8) => sc16,
575  IN_Words(9) => sc82,
576  IN_Words(10) => sc91,
577  IN_Words(11) => ZERO_DATA_WORD_WITH_CARRY,
578  IN_Words(12) => ZERO_DATA_WORD_WITH_CARRY,
579  IN_Words(13) => ZERO_DATA_WORD_WITH_CARRY,
580  IN_Words(14) => ZERO_DATA_WORD_WITH_CARRY,
581  IN_Words(15) => ZERO_DATA_WORD_WITH_CARRY,
582  OUT_Word => T1_out
583  );
584  T2: entity work.MultiAdderWithCarry
585  generic map (
586  stage => 4,
587  delay => 0
588  )
589  port map (
590  CLK => CLK,
591  IN_Words(0) => sc19,
592  IN_Words(1) => sc18,
593  IN_Words(2) => sc17,
594  IN_Words(3) => sc20,
595  IN_Words(4) => sc2,
596  IN_Words(5) => sc53,
597  IN_Words(6) => sc54,
598  IN_Words(7) => sc55,
599  IN_Words(8) => sc56,
600  IN_Words(9) => sc83,
601  IN_Words(10) => sc92,
602  IN_Words(11) => ZERO_DATA_WORD_WITH_CARRY,
603  IN_Words(12) => ZERO_DATA_WORD_WITH_CARRY,
604  IN_Words(13) => ZERO_DATA_WORD_WITH_CARRY,
605  IN_Words(14) => ZERO_DATA_WORD_WITH_CARRY,
606  IN_Words(15) => ZERO_DATA_WORD_WITH_CARRY,
607  OUT_Word => T2_out
608  );
609  T3: entity work.MultiAdderWithCarry
610  generic map (
611  stage => 4,
612  delay => 0
613  )
614  port map (
615  CLK => CLK,
616  IN_Words(0) => sc60,
617  IN_Words(1) => sc3,
618  IN_Words(2) => sc21,
619  IN_Words(3) => sc22,
620  IN_Words(4) => sc23,
621  IN_Words(5) => sc24,
622  IN_Words(6) => sc57,
623  IN_Words(7) => sc58,
624  IN_Words(8) => sc59,
625  IN_Words(9) => sc84,
626  IN_Words(10) => sc93,
627  IN_Words(11) => ZERO_DATA_WORD_WITH_CARRY,
628  IN_Words(12) => ZERO_DATA_WORD_WITH_CARRY,
629  IN_Words(13) => ZERO_DATA_WORD_WITH_CARRY,
630  IN_Words(14) => ZERO_DATA_WORD_WITH_CARRY,
631  IN_Words(15) => ZERO_DATA_WORD_WITH_CARRY,
632  OUT_Word => T3_out
633  );
634  CORE: entity work.MultiAdderWithCarry
635  generic map (
636  stage => 4,
637  delay => 0
638  )
639  port map (
640  CLK => CLK,
641  IN_Words(0) => sc61,
642  IN_Words(1) => sc64,
643  IN_Words(2) => sc4,
644  IN_Words(3) => sc62,
645  IN_Words(4) => sc63,
646  IN_Words(5) => sc25,
647  IN_Words(6) => sc26,
648  IN_Words(7) => sc27,
649  IN_Words(8) => sc28,
650  IN_Words(9) => sc85,
651  IN_Words(10) => sc94,
652  IN_Words(11) => ZERO_DATA_WORD_WITH_CARRY,
653  IN_Words(12) => ZERO_DATA_WORD_WITH_CARRY,
654  IN_Words(13) => ZERO_DATA_WORD_WITH_CARRY,
655  IN_Words(14) => ZERO_DATA_WORD_WITH_CARRY,
656  IN_Words(15) => ZERO_DATA_WORD_WITH_CARRY,
657  OUT_Word => CORE_out
658  );
659  T5: entity work.MultiAdderWithCarry
660  generic map (
661  stage => 4,
662  delay => 0
663  )
664  port map (
665  CLK => CLK,
666  IN_Words(0) => sc65,
667  IN_Words(1) => sc5,
668  IN_Words(2) => sc29,
669  IN_Words(3) => sc30,
670  IN_Words(4) => sc31,
671  IN_Words(5) => sc32,
672  IN_Words(6) => sc66,
673  IN_Words(7) => sc67,
674  IN_Words(8) => sc68,
675  IN_Words(9) => sc86,
676  IN_Words(10) => sc95,
677  IN_Words(11) => ZERO_DATA_WORD_WITH_CARRY,
678  IN_Words(12) => ZERO_DATA_WORD_WITH_CARRY,
679  IN_Words(13) => ZERO_DATA_WORD_WITH_CARRY,
680  IN_Words(14) => ZERO_DATA_WORD_WITH_CARRY,
681  IN_Words(15) => ZERO_DATA_WORD_WITH_CARRY,
682  OUT_Word => T5_out
683  );
684  T6: entity work.MultiAdderWithCarry
685  generic map (
686  stage => 4,
687  delay => 0
688  )
689  port map (
690  CLK => CLK,
691  IN_Words(0) => sc34,
692  IN_Words(1) => sc35,
693  IN_Words(2) => sc36,
694  IN_Words(3) => sc33,
695  IN_Words(4) => sc6,
696  IN_Words(5) => sc69,
697  IN_Words(6) => sc70,
698  IN_Words(7) => sc71,
699  IN_Words(8) => sc72,
700  IN_Words(9) => sc87,
701  IN_Words(10) => sc96,
702  IN_Words(11) => ZERO_DATA_WORD_WITH_CARRY,
703  IN_Words(12) => ZERO_DATA_WORD_WITH_CARRY,
704  IN_Words(13) => ZERO_DATA_WORD_WITH_CARRY,
705  IN_Words(14) => ZERO_DATA_WORD_WITH_CARRY,
706  IN_Words(15) => ZERO_DATA_WORD_WITH_CARRY,
707  OUT_Word => T6_out
708  );
709  T7: entity work.MultiAdderWithCarry
710  generic map (
711  stage => 4,
712  delay => 0
713  )
714  port map (
715  CLK => CLK,
716  IN_Words(0) => sc73,
717  IN_Words(1) => sc76,
718  IN_Words(2) => sc74,
719  IN_Words(3) => sc75,
720  IN_Words(4) => sc7,
721  IN_Words(5) => sc37,
722  IN_Words(6) => sc38,
723  IN_Words(7) => sc39,
724  IN_Words(8) => sc40,
725  IN_Words(9) => sc88,
726  IN_Words(10) => sc97,
727  IN_Words(11) => ZERO_DATA_WORD_WITH_CARRY,
728  IN_Words(12) => ZERO_DATA_WORD_WITH_CARRY,
729  IN_Words(13) => ZERO_DATA_WORD_WITH_CARRY,
730  IN_Words(14) => ZERO_DATA_WORD_WITH_CARRY,
731  IN_Words(15) => ZERO_DATA_WORD_WITH_CARRY,
732  OUT_Word => T7_out
733  );
734  T8: entity work.MultiAdderWithCarry
735  generic map (
736  stage => 4,
737  delay => 0
738  )
739  port map (
740  CLK => CLK,
741  IN_Words(0) => sc43,
742  IN_Words(1) => sc42,
743  IN_Words(2) => sc41,
744  IN_Words(3) => sc44,
745  IN_Words(4) => sc8,
746  IN_Words(5) => sc77,
747  IN_Words(6) => sc78,
748  IN_Words(7) => sc79,
749  IN_Words(8) => sc80,
750  IN_Words(9) => sc89,
751  IN_Words(10) => sc98,
752  IN_Words(11) => ZERO_DATA_WORD_WITH_CARRY,
753  IN_Words(12) => ZERO_DATA_WORD_WITH_CARRY,
754  IN_Words(13) => ZERO_DATA_WORD_WITH_CARRY,
755  IN_Words(14) => ZERO_DATA_WORD_WITH_CARRY,
756  IN_Words(15) => ZERO_DATA_WORD_WITH_CARRY,
757  OUT_Word => T8_out
758  );
759  ET: entity work.MultiAdderWithCarry
760  generic map (
761  stage => 5,
762  delay => 0
763  )
764  port map (
765  CLK => CLK,
766  IN_Words(0) => sc49,
767  IN_Words(1) => sc52,
768  IN_Words(2) => sc73,
769  IN_Words(3) => sc76,
770  IN_Words(4) => sc61,
771  IN_Words(5) => sc64,
772  IN_Words(6) => sc60,
773  IN_Words(7) => sc65,
774  IN_Words(8) => sc4,
775  IN_Words(9) => sc62,
776  IN_Words(10) => sc63,
777  IN_Words(11) => sc50,
778  IN_Words(12) => sc51,
779  IN_Words(13) => sc74,
780  IN_Words(14) => sc75,
781  IN_Words(15) => sc91,
782  IN_Words(16) => sc58,
783  IN_Words(17) => sc59,
784  IN_Words(18) => sc93,
785  IN_Words(19) => sc25,
786  IN_Words(20) => sc26,
787  IN_Words(21) => sc27,
788  IN_Words(22) => sc28,
789  IN_Words(23) => sc85,
790  IN_Words(24) => sc94,
791  IN_Words(25) => sc66,
792  IN_Words(26) => sc67,
793  IN_Words(27) => sc95,
794  IN_Words(28) => sc97,
795  IN_Words(29) => ZERO_DATA_WORD_WITH_CARRY,
796  IN_Words(30) => ZERO_DATA_WORD_WITH_CARRY,
797  IN_Words(31) => ZERO_DATA_WORD_WITH_CARRY,
798  OUT_Word => ET_out
799  );
800  EM_ET: entity work.MultiAdderWithCarry
801  generic map (
802  stage => 5,
803  delay => 0
804  )
805  port map (
806  CLK => CLK,
807  IN_Words(0) => sc49,
808  IN_Words(1) => sc52,
809  IN_Words(2) => sc73,
810  IN_Words(3) => sc76,
811  IN_Words(4) => sc61,
812  IN_Words(5) => sc64,
813  IN_Words(6) => sc60,
814  IN_Words(7) => sc65,
815  IN_Words(8) => sc62,
816  IN_Words(9) => sc63,
817  IN_Words(10) => sc50,
818  IN_Words(11) => sc51,
819  IN_Words(12) => sc74,
820  IN_Words(13) => sc75,
821  IN_Words(14) => sc25,
822  IN_Words(15) => sc26,
823  IN_Words(16) => sc27,
824  IN_Words(17) => sc28,
825  IN_Words(18) => ZERO_DATA_WORD_WITH_CARRY,
826  IN_Words(19) => ZERO_DATA_WORD_WITH_CARRY,
827  IN_Words(20) => ZERO_DATA_WORD_WITH_CARRY,
828  IN_Words(21) => ZERO_DATA_WORD_WITH_CARRY,
829  IN_Words(22) => ZERO_DATA_WORD_WITH_CARRY,
830  IN_Words(23) => ZERO_DATA_WORD_WITH_CARRY,
831  IN_Words(24) => ZERO_DATA_WORD_WITH_CARRY,
832  IN_Words(25) => ZERO_DATA_WORD_WITH_CARRY,
833  IN_Words(26) => ZERO_DATA_WORD_WITH_CARRY,
834  IN_Words(27) => ZERO_DATA_WORD_WITH_CARRY,
835  IN_Words(28) => ZERO_DATA_WORD_WITH_CARRY,
836  IN_Words(29) => ZERO_DATA_WORD_WITH_CARRY,
837  IN_Words(30) => ZERO_DATA_WORD_WITH_CARRY,
838  IN_Words(31) => ZERO_DATA_WORD_WITH_CARRY,
839  OUT_Word => EM_ET_out
840  );
841  HAD_ET: entity work.MultiAdderWithCarry
842  generic map (
843  stage => 3,
844  delay => 0
845  )
846  port map (
847  CLK => CLK,
848  IN_Words(0) => sc91,
849  IN_Words(1) => sc93,
850  IN_Words(2) => sc94,
851  IN_Words(3) => sc95,
852  IN_Words(4) => sc97,
853  IN_Words(5) => ZERO_DATA_WORD_WITH_CARRY,
854  IN_Words(6) => ZERO_DATA_WORD_WITH_CARRY,
855  IN_Words(7) => ZERO_DATA_WORD_WITH_CARRY,
856  OUT_Word => HAD_ET_out
857  );
858  DelayWC_l2_d1051_l2_d1051_d: entity work.DelayWithCarry
859  generic map (
860  delay => 2
861  )
862  port map (
863  CLK => CLK,
864  IN_Word => l2_d1051_OUT_Word_TO_DelayWC_l2_d1051_l2_d1051_d_IN_Word,
865  OUT_Word => l2_d1051_out
866  );
867  DelayWC_l2_d0375_l2_d0375_d: entity work.DelayWithCarry
868  generic map (
869  delay => 3
870  )
871  port map (
872  CLK => CLK,
873  IN_Word => l2_d0375_OUT_Word_TO_DelayWC_l2_d0375_l2_d0375_d_IN_Word,
874  OUT_Word => l2_d0375_out
875  );
876  DelayWC_l2_d0625_l2_d0625_d: entity work.DelayWithCarry
877  generic map (
878  delay => 3
879  )
880  port map (
881  CLK => CLK,
882  IN_Word => l2_d0625_OUT_Word_TO_DelayWC_l2_d0625_l2_d0625_d_IN_Word,
883  OUT_Word => l2_d0625_out
884  );
885  DelayWC_l0_d0000_l0_d0000_d: entity work.DelayWithCarry
886  generic map (
887  delay => 4
888  )
889  port map (
890  CLK => CLK,
891  IN_Word => l0_d0000_OUT_Word_TO_DelayWC_l0_d0000_l0_d0000_d_IN_Word,
892  OUT_Word => l0_d0000_out
893  );
894  DelayWC_l2_d0125_l2_d0125_d: entity work.DelayWithCarry
895  generic map (
896  delay => 3
897  )
898  port map (
899  CLK => CLK,
900  IN_Word => l2_d0125_OUT_Word_TO_DelayWC_l2_d0125_l2_d0125_d_IN_Word,
901  OUT_Word => l2_d0125_out
902  );
903  DelayWC_l2_d0990_l2_d0990_d: entity work.DelayWithCarry
904  generic map (
905  delay => 2
906  )
907  port map (
908  CLK => CLK,
909  IN_Word => l2_d0990_OUT_Word_TO_DelayWC_l2_d0990_l2_d0990_d_IN_Word,
910  OUT_Word => l2_d0990_out
911  );
912  DelayWC_l1_d1493_l1_d1493_d: entity work.DelayWithCarry
913  generic map (
914  delay => 2
915  )
916  port map (
917  CLK => CLK,
918  IN_Word => l1_d1493_OUT_Word_TO_DelayWC_l1_d1493_l1_d1493_d_IN_Word,
919  OUT_Word => l1_d1493_out
920  );
921  DelayWC_l1_d1315_l1_d1315_d: entity work.DelayWithCarry
922  generic map (
923  delay => 2
924  )
925  port map (
926  CLK => CLK,
927  IN_Word => l1_d1315_OUT_Word_TO_DelayWC_l1_d1315_l1_d1315_d_IN_Word,
928  OUT_Word => l1_d1315_out
929  );
930  DelayWC_l1_d1164_l1_d1164_d: entity work.DelayWithCarry
931  generic map (
932  delay => 2
933  )
934  port map (
935  CLK => CLK,
936  IN_Word => l1_d1164_OUT_Word_TO_DelayWC_l1_d1164_l1_d1164_d_IN_Word,
937  OUT_Word => l1_d1164_out
938  );
939  DelayWC_l1_d1690_l1_d1690_d: entity work.DelayWithCarry
940  generic map (
941  delay => 2
942  )
943  port map (
944  CLK => CLK,
945  IN_Word => l1_d1690_OUT_Word_TO_DelayWC_l1_d1690_l1_d1690_d_IN_Word,
946  OUT_Word => l1_d1690_out
947  );
948  OUT_Words(0) <= l2_d1051_out(l2_d1051_out'high - 1 downto 0);
949  OUT_Words(1) <= l2_d0375_out(l2_d0375_out'high - 1 downto 0);
950  OUT_Words(2) <= l2_d0625_out(l2_d0625_out'high - 1 downto 0);
951  OUT_Words(3) <= l0_d0000_out(l0_d0000_out'high - 1 downto 0);
952  OUT_Words(4) <= l2_d0125_out(l2_d0125_out'high - 1 downto 0);
953  OUT_Words(5) <= l2_d0990_out(l2_d0990_out'high - 1 downto 0);
954  OUT_Words(6) <= l1_d1493_out(l1_d1493_out'high - 1 downto 0);
955  OUT_Words(7) <= l1_d1315_out(l1_d1315_out'high - 1 downto 0);
956  OUT_Words(8) <= l1_d1164_out(l1_d1164_out'high - 1 downto 0);
957  OUT_Words(9) <= l1_d1690_out(l1_d1690_out'high - 1 downto 0);
958  OUT_Words(10) <= T0_out(T0_out'high - 1 downto 0);
959  OUT_Words(11) <= T1_out(T1_out'high - 1 downto 0);
960  OUT_Words(12) <= T2_out(T2_out'high - 1 downto 0);
961  OUT_Words(13) <= T3_out(T3_out'high - 1 downto 0);
962  OUT_Words(14) <= CORE_out(CORE_out'high - 1 downto 0);
963  OUT_Words(15) <= T5_out(T5_out'high - 1 downto 0);
964  OUT_Words(16) <= T6_out(T6_out'high - 1 downto 0);
965  OUT_Words(17) <= T7_out(T7_out'high - 1 downto 0);
966  OUT_Words(18) <= T8_out(T8_out'high - 1 downto 0);
967  OUT_Words(19) <= ET_out(ET_out'high - 1 downto 0);
968  OUT_Words(20) <= EM_ET_out(EM_ET_out'high - 1 downto 0);
969  OUT_Words(21) <= HAD_ET_out(HAD_ET_out'high - 1 downto 0);
970  OUT_Overflows(0) <= l2_d1051_out(l2_d1051_out'high);
971  OUT_Overflows(1) <= l2_d0375_out(l2_d0375_out'high);
972  OUT_Overflows(2) <= l2_d0625_out(l2_d0625_out'high);
973  OUT_Overflows(3) <= l0_d0000_out(l0_d0000_out'high);
974  OUT_Overflows(4) <= l2_d0125_out(l2_d0125_out'high);
975  OUT_Overflows(5) <= l2_d0990_out(l2_d0990_out'high);
976  OUT_Overflows(6) <= l1_d1493_out(l1_d1493_out'high);
977  OUT_Overflows(7) <= l1_d1315_out(l1_d1315_out'high);
978  OUT_Overflows(8) <= l1_d1164_out(l1_d1164_out'high);
979  OUT_Overflows(9) <= l1_d1690_out(l1_d1690_out'high);
980  OUT_Overflows(10) <= T0_out(T0_out'high);
981  OUT_Overflows(11) <= T1_out(T1_out'high);
982  OUT_Overflows(12) <= T2_out(T2_out'high);
983  OUT_Overflows(13) <= T3_out(T3_out'high);
984  OUT_Overflows(14) <= CORE_out(CORE_out'high);
985  OUT_Overflows(15) <= T5_out(T5_out'high);
986  OUT_Overflows(16) <= T6_out(T6_out'high);
987  OUT_Overflows(17) <= T7_out(T7_out'high);
988  OUT_Overflows(18) <= T8_out(T8_out'high);
989  OUT_Overflows(19) <= ET_out(ET_out'high);
990  OUT_Overflows(20) <= EM_ET_out(EM_ET_out'high);
991  OUT_Overflows(21) <= HAD_ET_out(HAD_ET_out'high);
992 end Behavioral;
Daly for data word format.
Multiple Adder with carry: adds many input words in cascade, with carry.
in CLK std_logic
200 MHz clock