--- 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 QUIP__barrel16 is 
  Port (
    pi00,pi01,pi02,pi03,pi04,pi05,pi06,pi07,pi08,pi09,pi10,pi11,pi12,pi13,pi14,pi15,pi16,pi17,pi18,pi19,pi20, CLK: in std_logic;
    po00,po01,po02,po03,po04,po05,po06,po07,po08,po09,po10,po11,po12,po13,po14,po15: inout std_logic
  );
end QUIP__barrel16;

architecture QUIP__barrel16_behav of QUIP__barrel16 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,lo17,lo18,lo19,lo20,lo21,lo22,lo23,lo24,lo25,lo26,lo27,lo28,lo29,lo30,lo31,lo32,lo33,lo34,lo35,lo36,n148,n149,n150,n151,n152,n153,n154,n155,n156,n157,n158,n159,n160,n161,n162,n163,n164,n165,n166,n167,n168,n169,n170,n171,n172,n173,n174,li00,n176,n177,n178,n179,n180,n181,n182,n183,n184,n185,n186,n187,n188,n189,n190,n191,n192,n193,n194,li01,n196,n197,n198,n199,n200,li02,n202,n203,n204,n205,n206,n207,li03,n209,n210,n211,n212,li04,n214,n215,n216,n217,li05,n219,n220,n221,n222,n223,li06,n225,n226,n227,n228,n229,n230,li07,n232,n233,n234,n235,n236,li08,n238,n239,n240,n241,n242,li09,n244,n245,n246,li10,n248,n249,li11,n251,li12,n253,li13,n255,li14,n257,li15,n259,n260,n261,li16,li17,li18,li19,li20,li21,li22,li23,li24,li25,li26,li27,li28,li29,li30,li31,li32,li33,li34,li35,li36: 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);
    DFF17: DFF port map (li17, CLK, lo17);
    DFF18: DFF port map (li18, CLK, lo18);
    DFF19: DFF port map (li19, CLK, lo19);
    DFF20: DFF port map (li20, CLK, lo20);
    DFF21: DFF port map (li21, CLK, lo21);
    DFF22: DFF port map (li22, CLK, lo22);
    DFF23: DFF port map (li23, CLK, lo23);
    DFF24: DFF port map (li24, CLK, lo24);
    DFF25: DFF port map (li25, CLK, lo25);
    DFF26: DFF port map (li26, CLK, lo26);
    DFF27: DFF port map (li27, CLK, lo27);
    DFF28: DFF port map (li28, CLK, lo28);
    DFF29: DFF port map (li29, CLK, lo29);
    DFF30: DFF port map (li30, CLK, lo30);
    DFF31: DFF port map (li31, CLK, lo31);
    DFF32: DFF port map (li32, CLK, lo32);
    DFF33: DFF port map (li33, CLK, lo33);
    DFF34: DFF port map (li34, CLK, lo34);
    DFF35: DFF port map (li35, CLK, lo35);
    DFF36: DFF port map (li36, CLK, lo36);
    n148 <= ( lo16 and lo17 and lo19 )
      or ( lo16 and lo18 and not lo19 );
    n149 <= ( lo20 and lo19 and not lo16 )
      or ( lo21 and not lo19 and not lo16 );
    n150 <= not (( not n148 and not n149 ));
    n151 <= ( lo16 and lo22 and lo19 )
      or ( lo16 and lo23 and not lo19 );
    n152 <= ( lo24 and lo19 and not lo16 )
      or ( lo25 and not lo19 and not lo16 );
    n153 <= not (( not n150 and lo26 )
      or ( not n151 and not n152 and not lo26 ));
    n154 <= ( lo16 and lo18 and lo19 )
      or ( lo16 and lo17 and not lo19 );
    n155 <= ( lo28 and lo19 and not lo16 )
      or ( lo29 and not lo19 and not lo16 );
    n156 <= not (( not n154 and not n155 ));
    n157 <= ( lo16 and lo23 and lo19 )
      or ( lo16 and lo22 and not lo19 );
    n158 <= ( lo21 and lo19 and not lo16 )
      or ( lo20 and not lo19 and not lo16 );
    n159 <= not (( not n156 and not lo26 )
      or ( lo26 and not n157 and not n158 ));
    n160 <= ( lo31 and lo19 )
      or ( lo32 and not lo19 );
    n161 <= ( lo33 and lo19 )
      or ( lo34 and not lo19 );
    n162 <= ( n160 and lo16 )
      or ( n161 and not lo16 );
    n163 <= ( lo35 and lo19 )
      or ( lo36 and not lo19 );
    n164 <= ( lo24 and lo19 )
      or ( lo25 and not lo19 );
    n165 <= ( n163 and lo16 )
      or ( n164 and not lo16 );
    n166 <= ( n162 and lo26 )
      or ( n165 and not lo26 );
    n167 <= ( not lo27 and not lo30 and n166 )
      or ( lo27 and lo30 )
      or ( n159 and lo30 );
    n168 <= ( lo36 and lo19 )
      or ( lo35 and not lo19 );
    n169 <= ( lo34 and lo19 )
      or ( lo33 and not lo19 );
    n170 <= ( n168 and lo16 )
      or ( n169 and not lo16 );
    n171 <= ( lo32 and lo19 )
      or ( lo31 and not lo19 );
    n172 <= ( lo29 and lo19 )
      or ( lo28 and not lo19 );
    n173 <= ( n171 and lo16 )
      or ( n172 and not lo16 );
    n174 <= ( n170 and lo26 )
      or ( n173 and not lo26 );
    li00 <= ( n153 and lo27 and not n167 )
      or ( not lo27 and n167 )
      or ( n167 and n174 );
    n176 <= ( lo16 and lo28 and lo19 )
      or ( lo16 and lo29 and not lo19 );
    n177 <= ( n176 )
      or ( n160 and not lo16 );
    n178 <= ( lo16 and lo21 and lo19 )
      or ( lo16 and lo20 and not lo19 );
    n179 <= ( lo18 and lo19 and not lo16 )
      or ( lo17 and not lo19 and not lo16 );
    n180 <= not (( not n177 and not lo26 )
      or ( lo26 and not n178 and not n179 ));
    n181 <= ( lo16 and lo20 and lo19 )
      or ( lo16 and lo21 and not lo19 );
    n182 <= ( lo22 and lo19 and not lo16 )
      or ( lo23 and not lo19 and not lo16 );
    n183 <= not (( not n181 and not n182 ));
    n184 <= ( lo16 and lo29 and lo19 )
      or ( lo16 and lo28 and not lo19 );
    n185 <= ( lo17 and lo19 and not lo16 )
      or ( lo18 and not lo19 and not lo16 );
    n186 <= not (( not n183 and not lo26 )
      or ( lo26 and not n184 and not n185 ));
    n187 <= ( n161 and lo16 )
      or ( n163 and not lo16 );
    n188 <= ( n182 )
      or ( lo16 and n164 );
    n189 <= ( n187 and lo26 )
      or ( n188 and not lo26 );
    n190 <= ( not lo30 and not lo27 and n189 )
      or ( lo30 and lo27 )
      or ( n186 and lo27 );
    n191 <= ( lo25 and lo19 )
      or ( lo24 and not lo19 );
    n192 <= ( n191 and lo16 )
      or ( n168 and not lo16 );
    n193 <= ( n169 and lo16 )
      or ( n171 and not lo16 );
    n194 <= ( n192 and lo26 )
      or ( n193 and not lo26 );
    li01 <= ( n180 and lo30 and not n190 )
      or ( not lo30 and n190 )
      or ( n190 and n194 );
    n196 <= not (( not n165 and lo26 )
      or ( not n151 and not n149 and not lo26 ));
    n197 <= ( not lo27 and not lo30 and n196 )
      or ( lo27 and lo30 )
      or ( n260 and lo30 );
    n198 <= ( lo23 and lo19 )
      or ( lo22 and not lo19 );
    n199 <= ( n198 and lo16 )
      or ( n191 and not lo16 );
    n200 <= ( n199 and lo26 )
      or ( n170 and not lo26 );
    li02 <= ( n259 and lo27 and not n197 )
      or ( not lo27 and n197 )
      or ( n197 and n200 );
    n202 <= ( n177 and lo26 )
      or ( n187 and not lo26 );
    n203 <= not (( not n193 and lo26 )
      or ( not n184 and not n185 and not lo26 ));
    n204 <= not (( not n188 and lo26 )
      or ( not n181 and not n185 and not lo26 ));
    n205 <= ( not lo30 and not lo27 and n204 )
      or ( lo30 and lo27 )
      or ( n203 and lo27 );
    n206 <= ( n178 )
      or ( n198 and not lo16 );
    n207 <= ( n206 and lo26 )
      or ( n192 and not lo26 );
    li03 <= ( n202 and lo30 and not n205 )
      or ( not lo30 and n205 )
      or ( n205 and n207 );
    n209 <= ( n148 )
      or ( n172 and not lo16 );
    n210 <= not (( not n209 and not lo26 )
      or ( lo26 and not n151 and not n149 ));
    n211 <= ( not lo27 and not lo30 and n210 )
      or ( lo27 and lo30 )
      or ( n166 and lo30 );
    n212 <= not (( not n199 and not lo26 )
      or ( lo26 and not n154 and not n158 ));
    li04 <= ( n174 and lo27 and not n211 )
      or ( not lo27 and n211 )
      or ( n211 and n212 );
    n214 <= ( n172 and lo16 )
      or ( n171 and not lo16 );
    n215 <= not (( not n214 and not lo26 )
      or ( lo26 and not n181 and not n185 ));
    n216 <= ( not lo30 and not lo27 and n215 )
      or ( lo30 and lo27 )
      or ( n194 and lo27 );
    n217 <= not (( not n206 and not lo26 )
      or ( lo26 and not n176 and not n179 ));
    li05 <= ( n189 and lo30 and not n216 )
      or ( not lo30 and n216 )
      or ( n216 and n217 );
    n219 <= ( n171 and lo16 )
      or ( n169 and not lo16 );
    n220 <= ( n209 and lo26 )
      or ( n219 and not lo26 );
    n221 <= ( not lo27 and not lo30 and n220 )
      or ( lo27 and lo30 )
      or ( n196 and lo30 );
    n222 <= ( n155 )
      or ( lo16 and n160 );
    n223 <= not (( not n222 and lo26 )
      or ( not n154 and not n158 and not lo26 ));
    li06 <= ( n200 and lo27 and not n221 )
      or ( not lo27 and n221 )
      or ( n221 and n223 );
    n225 <= ( lo16 and lo34 and lo19 )
      or ( lo16 and lo33 and not lo19 );
    n226 <= ( lo36 and lo19 and not lo16 )
      or ( lo35 and not lo19 and not lo16 );
    n227 <= not (( not n214 and lo26 )
      or ( not n225 and not n226 and not lo26 ));
    n228 <= ( not lo30 and not lo27 and n227 )
      or ( lo30 and lo27 )
      or ( n207 and lo27 );
    n229 <= ( n161 and lo16 )
      or ( n160 and not lo16 );
    n230 <= not (( not n229 and lo26 )
      or ( not n176 and not n179 and not lo26 ));
    li07 <= ( n204 and lo30 and not n228 )
      or ( not lo30 and n228 )
      or ( n228 and n230 );
    n232 <= ( n168 and lo16 )
      or ( n191 and not lo16 );
    n233 <= ( n219 and lo26 )
      or ( n232 and not lo26 );
    n234 <= ( not lo27 and not lo30 and n233 )
      or ( lo27 and lo30 )
      or ( n210 and lo30 );
    n235 <= ( n163 and lo16 )
      or ( n161 and not lo16 );
    n236 <= ( n235 and lo26 )
      or ( n222 and not lo26 );
    li08 <= ( n212 and lo27 and not n234 )
      or ( not lo27 and n234 )
      or ( n234 and n236 );
    n238 <= ( n191 and lo16 )
      or ( n198 and not lo16 );
    n239 <= not (( not n238 and not lo26 )
      or ( lo26 and not n225 and not n226 ));
    n240 <= ( not lo30 and not lo27 and n239 )
      or ( lo30 and lo27 )
      or ( n217 and lo27 );
    n241 <= ( n164 and lo16 )
      or ( n163 and not lo16 );
    n242 <= ( n241 and lo26 )
      or ( n229 and not lo26 );
    li09 <= ( n215 and lo30 and not n240 )
      or ( not lo30 and n240 )
      or ( n240 and n242 );
    n244 <= not (( not n232 and lo26 )
      or ( not n157 and not n158 and not lo26 ));
    n245 <= ( not lo27 and not lo30 and n244 )
      or ( lo27 and lo30 )
      or ( n220 and lo30 );
    n246 <= not (( not n235 and not lo26 )
      or ( lo26 and not n151 and not n152 ));
    li10 <= ( n223 and lo27 and not n245 )
      or ( not lo27 and n245 )
      or ( n245 and n246 );
    n248 <= not (( not n238 and lo26 )
      or ( not n178 and not n179 and not lo26 ));
    n249 <= ( not lo30 and not lo27 and n248 )
      or ( lo30 and lo27 )
      or ( n230 and lo27 );
    li11 <= ( n227 and lo30 and not n249 )
      or ( not lo30 and n249 )
      or ( n249 and n261 );
    n251 <= ( not lo27 and not lo30 and n159 )
      or ( lo27 and lo30 )
      or ( n233 and lo30 );
    li12 <= ( n236 and lo27 and not n251 )
      or ( not lo27 and n251 )
      or ( n251 and n153 );
    n253 <= ( not lo30 and not lo27 and n180 )
      or ( lo30 and lo27 )
      or ( n242 and lo27 );
    li13 <= ( n239 and lo30 and not n253 )
      or ( not lo30 and n253 )
      or ( n253 and n186 );
    n255 <= ( not lo27 and not lo30 and n260 )
      or ( lo27 and lo30 )
      or ( n244 and lo30 );
    li14 <= ( n246 and lo27 and not n255 )
      or ( not lo27 and n255 )
      or ( n255 and n259 );
    n257 <= ( not lo30 and not lo27 and n202 )
      or ( lo30 and lo27 )
      or ( n261 and lo27 );
    li15 <= ( n248 and lo30 and not n257 )
      or ( not lo30 and n257 )
      or ( n257 and n203 );
    n259 <= not (( not n148 and not n149 and not lo26 )
      or ( not n173 and lo26 ));
    n260 <= not (( not n154 and not n155 and lo26 )
      or ( not n162 and not lo26 ));
    n261 <= not (( not n181 and not n182 and lo26 )
      or ( not n241 and not lo26 ));
    li16 <= ( pi00 );
    li17 <= ( pi01 );
    li18 <= ( pi02 );
    li19 <= ( pi03 );
    li20 <= ( pi04 );
    li21 <= ( pi05 );
    li22 <= ( pi06 );
    li23 <= ( pi07 );
    li24 <= ( pi08 );
    li25 <= ( pi09 );
    li26 <= ( pi10 );
    li27 <= ( pi11 );
    li28 <= ( pi12 );
    li29 <= ( pi13 );
    li30 <= ( pi14 );
    li31 <= ( pi15 );
    li32 <= ( pi16 );
    li33 <= ( pi17 );
    li34 <= ( pi18 );
    li35 <= ( pi19 );
    li36 <= ( pi20 );
    po00 <= ( lo00 );
    po01 <= ( lo01 );
    po02 <= ( lo02 );
    po03 <= ( lo03 );
    po04 <= ( lo04 );
    po05 <= ( lo05 );
    po06 <= ( lo06 );
    po07 <= ( lo07 );
    po08 <= ( lo08 );
    po09 <= ( lo09 );
    po10 <= ( lo10 );
    po11 <= ( lo11 );
    po12 <= ( lo12 );
    po13 <= ( lo13 );
    po14 <= ( lo14 );
    po15 <= ( lo15 );
end QUIP__barrel16_behav;
