--- VHDL generated by LogSynth framework (c) Petr Fiser
Library IEEE;
use IEEE.std_logic_1164.all;

entity DFF is
  Port ( D, CLK: in std_logic;
     Q: out std_logic);
end DFF;

architecture Behavior of DFF is
begin
  process(CLK)
  begin
    if CLK'event and CLK = '1' then
      Q <= D;
    end if;
  end process;
end Behavior;

Library IEEE;
use IEEE.std_logic_1164.all;

entity adder_tree_node is 
  Port (
    pi00,pi01,pi02,pi03,pi04,pi05,pi06,pi07,pi08,pi09,pi10,pi11,pi12,pi13,pi14,pi15,pi16,pi17,pi18,pi19,pi20,pi21,pi22,pi23,pi24,pi25,pi26,pi27,pi28,pi29,pi30,pi31,pi32, CLK: in std_logic;
    po00,po01,po02,po03,po04,po05,po06,po07,po08,po09,po10,po11,po12,po13,po14,po15,po16: inout std_logic
  );
end adder_tree_node;

architecture adder_tree_node_behav of adder_tree_node is
component DFF
  Port ( D, CLK: in std_logic;
     Q: out std_logic);
end component;

signal lo00,lo01,lo02,lo03,lo04,lo05,lo06,lo07,lo08,lo09,lo10,lo11,lo12,lo13,lo14,lo15,lo16,n101,li00,n103,li01,n105,li02,n107,li03,n109,li04,n111,li05,n113,li06,n115,li07,n117,li08,n119,li09,n121,li10,n123,li11,n125,li12,n127,li13,n129,li14,n131,li15,n133,li16: std_logic;
begin
    DFF0: DFF port map (li00, CLK, lo00);
    DFF1: DFF port map (li01, CLK, lo01);
    DFF2: DFF port map (li02, CLK, lo02);
    DFF3: DFF port map (li03, CLK, lo03);
    DFF4: DFF port map (li04, CLK, lo04);
    DFF5: DFF port map (li05, CLK, lo05);
    DFF6: DFF port map (li06, CLK, lo06);
    DFF7: DFF port map (li07, CLK, lo07);
    DFF8: DFF port map (li08, CLK, lo08);
    DFF9: DFF port map (li09, CLK, lo09);
    DFF10: DFF port map (li10, CLK, lo10);
    DFF11: DFF port map (li11, CLK, lo11);
    DFF12: DFF port map (li12, CLK, lo12);
    DFF13: DFF port map (li13, CLK, lo13);
    DFF14: DFF port map (li14, CLK, lo14);
    DFF15: DFF port map (li15, CLK, lo15);
    DFF16: DFF port map (li16, CLK, lo16);
    n101 <= '0';
    li00 <= ( not n101 and not pi16 and n101 )
      or ( not n101 and pi16 and not n101 )
      or ( n101 and not pi16 and not n101 )
      or ( n101 and pi16 and n101 );
    n103 <= ( not n101 and pi16 and n101 )
      or ( n101 and not pi16 and n101 )
      or ( n101 and pi16 and not n101 )
      or ( n101 and pi16 and n101 );
    li01 <= ( not n103 and not pi15 and pi32 )
      or ( not n103 and pi15 and not pi32 )
      or ( n103 and not pi15 and not pi32 )
      or ( n103 and pi15 and pi32 );
    n105 <= ( not n103 and pi15 and pi32 )
      or ( n103 and not pi15 and pi32 )
      or ( n103 and pi15 and not pi32 )
      or ( n103 and pi15 and pi32 );
    li02 <= ( not n105 and not pi14 and pi31 )
      or ( not n105 and pi14 and not pi31 )
      or ( n105 and not pi14 and not pi31 )
      or ( n105 and pi14 and pi31 );
    n107 <= ( not n105 and pi14 and pi31 )
      or ( n105 and not pi14 and pi31 )
      or ( n105 and pi14 and not pi31 )
      or ( n105 and pi14 and pi31 );
    li03 <= ( not n107 and not pi13 and pi30 )
      or ( not n107 and pi13 and not pi30 )
      or ( n107 and not pi13 and not pi30 )
      or ( n107 and pi13 and pi30 );
    n109 <= ( not n107 and pi13 and pi30 )
      or ( n107 and not pi13 and pi30 )
      or ( n107 and pi13 and not pi30 )
      or ( n107 and pi13 and pi30 );
    li04 <= ( not n109 and not pi12 and pi29 )
      or ( not n109 and pi12 and not pi29 )
      or ( n109 and not pi12 and not pi29 )
      or ( n109 and pi12 and pi29 );
    n111 <= ( not n109 and pi12 and pi29 )
      or ( n109 and not pi12 and pi29 )
      or ( n109 and pi12 and not pi29 )
      or ( n109 and pi12 and pi29 );
    li05 <= ( not n111 and not pi11 and pi28 )
      or ( not n111 and pi11 and not pi28 )
      or ( n111 and not pi11 and not pi28 )
      or ( n111 and pi11 and pi28 );
    n113 <= ( not n111 and pi11 and pi28 )
      or ( n111 and not pi11 and pi28 )
      or ( n111 and pi11 and not pi28 )
      or ( n111 and pi11 and pi28 );
    li06 <= ( not n113 and not pi10 and pi27 )
      or ( not n113 and pi10 and not pi27 )
      or ( n113 and not pi10 and not pi27 )
      or ( n113 and pi10 and pi27 );
    n115 <= ( not n113 and pi10 and pi27 )
      or ( n113 and not pi10 and pi27 )
      or ( n113 and pi10 and not pi27 )
      or ( n113 and pi10 and pi27 );
    li07 <= ( not n115 and not pi09 and pi26 )
      or ( not n115 and pi09 and not pi26 )
      or ( n115 and not pi09 and not pi26 )
      or ( n115 and pi09 and pi26 );
    n117 <= ( not n115 and pi09 and pi26 )
      or ( n115 and not pi09 and pi26 )
      or ( n115 and pi09 and not pi26 )
      or ( n115 and pi09 and pi26 );
    li08 <= ( not n117 and not pi08 and pi25 )
      or ( not n117 and pi08 and not pi25 )
      or ( n117 and not pi08 and not pi25 )
      or ( n117 and pi08 and pi25 );
    n119 <= ( not n117 and pi08 and pi25 )
      or ( n117 and not pi08 and pi25 )
      or ( n117 and pi08 and not pi25 )
      or ( n117 and pi08 and pi25 );
    li09 <= ( not n119 and not pi07 and pi24 )
      or ( not n119 and pi07 and not pi24 )
      or ( n119 and not pi07 and not pi24 )
      or ( n119 and pi07 and pi24 );
    n121 <= ( not n119 and pi07 and pi24 )
      or ( n119 and not pi07 and pi24 )
      or ( n119 and pi07 and not pi24 )
      or ( n119 and pi07 and pi24 );
    li10 <= ( not n121 and not pi06 and pi23 )
      or ( not n121 and pi06 and not pi23 )
      or ( n121 and not pi06 and not pi23 )
      or ( n121 and pi06 and pi23 );
    n123 <= ( not n121 and pi06 and pi23 )
      or ( n121 and not pi06 and pi23 )
      or ( n121 and pi06 and not pi23 )
      or ( n121 and pi06 and pi23 );
    li11 <= ( not n123 and not pi05 and pi22 )
      or ( not n123 and pi05 and not pi22 )
      or ( n123 and not pi05 and not pi22 )
      or ( n123 and pi05 and pi22 );
    n125 <= ( not n123 and pi05 and pi22 )
      or ( n123 and not pi05 and pi22 )
      or ( n123 and pi05 and not pi22 )
      or ( n123 and pi05 and pi22 );
    li12 <= ( not n125 and not pi04 and pi21 )
      or ( not n125 and pi04 and not pi21 )
      or ( n125 and not pi04 and not pi21 )
      or ( n125 and pi04 and pi21 );
    n127 <= ( not n125 and pi04 and pi21 )
      or ( n125 and not pi04 and pi21 )
      or ( n125 and pi04 and not pi21 )
      or ( n125 and pi04 and pi21 );
    li13 <= ( not n127 and not pi03 and pi20 )
      or ( not n127 and pi03 and not pi20 )
      or ( n127 and not pi03 and not pi20 )
      or ( n127 and pi03 and pi20 );
    n129 <= ( not n127 and pi03 and pi20 )
      or ( n127 and not pi03 and pi20 )
      or ( n127 and pi03 and not pi20 )
      or ( n127 and pi03 and pi20 );
    li14 <= ( not n129 and not pi02 and pi19 )
      or ( not n129 and pi02 and not pi19 )
      or ( n129 and not pi02 and not pi19 )
      or ( n129 and pi02 and pi19 );
    n131 <= ( not n129 and pi02 and pi19 )
      or ( n129 and not pi02 and pi19 )
      or ( n129 and pi02 and not pi19 )
      or ( n129 and pi02 and pi19 );
    li15 <= ( not n131 and not pi01 and pi18 )
      or ( not n131 and pi01 and not pi18 )
      or ( n131 and not pi01 and not pi18 )
      or ( n131 and pi01 and pi18 );
    n133 <= ( not n131 and pi01 and pi18 )
      or ( n131 and not pi01 and pi18 )
      or ( n131 and pi01 and not pi18 )
      or ( n131 and pi01 and pi18 );
    li16 <= ( not n133 and not pi01 and pi17 )
      or ( not n133 and pi01 and not pi17 )
      or ( n133 and not pi01 and not pi17 )
      or ( n133 and pi01 and pi17 );
    po00 <= ( lo16 );
    po01 <= ( lo15 );
    po02 <= ( lo14 );
    po03 <= ( lo13 );
    po04 <= ( lo12 );
    po05 <= ( lo11 );
    po06 <= ( lo10 );
    po07 <= ( lo09 );
    po08 <= ( lo08 );
    po09 <= ( lo07 );
    po10 <= ( lo06 );
    po11 <= ( lo05 );
    po12 <= ( lo04 );
    po13 <= ( lo03 );
    po14 <= ( lo02 );
    po15 <= ( lo01 );
    po16 <= ( lo00 );
end adder_tree_node_behav;
