--- 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 Cookbook__mlab_dcfifo is 
  Port (
    pi0,pi1, CLK: in std_logic;
    po00,po01,po02,po03,po04,po05,po06,po07,po08,po09,po10,po11,po12,po13: inout std_logic
  );
end Cookbook__mlab_dcfifo;

architecture Cookbook__mlab_dcfifo_behav of Cookbook__mlab_dcfifo 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,lo37,lo38,lo39,lo40,lo41,lo42,lo43,lo44,lo45,lo46,lo47,lo48,lo49,lo50,lo51,lo52,lo53,lo54,lo55,lo56,lo57,lo58,lo59,lo60,lo61,lo62,lo63,lo64,lo65,lo66,lo67,lo68,lo69,lo70,lo71,lo72,lo73,lo74,lo75,lo76,lo77,lo78,lo79,lo80,lo81,lo82,lo83,lo84,lo85,lo86,lo87,lo88,lo89,lo90,lo91,lo92,lo93,lo94,lo95,lo96,lo97,n310,li01,n312,li02,n314,li03,n316,li04,n318,li05,n320,li06,li07,li08,li09,li10,li11,li12,n328,n329,n330,n331,n332,n333,n334,n335,n336,n337,li13,n339,n340,n341,n342,n343,n344,n345,n346,n347,n348,li14,li15,li16,li17,li18,li19,li20,li21,li22,li23,li24,li25,n361,n362,n363,n364,n365,n366,n367,n368,n369,n370,li00,li85,li80,li81,li82,li83,li84,li74,n379,li75,n381,li76,n383,li77,n385,li78,n387,li79,li97,li92,li93,li94,li95,li96,li86,n396,li87,n398,li88,n400,li89,n402,li90,n404,li91,li26,li27,li28,li29,li30,li31,li32,li33,li34,li35,li36,li37,li38,li39,li40,li41,li42,li43,li44,li45,li46,li47,li48,li49,li50,li51,li52,li53,li54,li55,li56,li57,li58,li59,li60,li61,li62,li63,li64,li65,li66,li67,li68,li69,li70,li71,li72,li73: 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);
    DFF37: DFF port map (li37, CLK, lo37);
    DFF38: DFF port map (li38, CLK, lo38);
    DFF39: DFF port map (li39, CLK, lo39);
    DFF40: DFF port map (li40, CLK, lo40);
    DFF41: DFF port map (li41, CLK, lo41);
    DFF42: DFF port map (li42, CLK, lo42);
    DFF43: DFF port map (li43, CLK, lo43);
    DFF44: DFF port map (li44, CLK, lo44);
    DFF45: DFF port map (li45, CLK, lo45);
    DFF46: DFF port map (li46, CLK, lo46);
    DFF47: DFF port map (li47, CLK, lo47);
    DFF48: DFF port map (li48, CLK, lo48);
    DFF49: DFF port map (li49, CLK, lo49);
    DFF50: DFF port map (li50, CLK, lo50);
    DFF51: DFF port map (li51, CLK, lo51);
    DFF52: DFF port map (li52, CLK, lo52);
    DFF53: DFF port map (li53, CLK, lo53);
    DFF54: DFF port map (li54, CLK, lo54);
    DFF55: DFF port map (li55, CLK, lo55);
    DFF56: DFF port map (li56, CLK, lo56);
    DFF57: DFF port map (li57, CLK, lo57);
    DFF58: DFF port map (li58, CLK, lo58);
    DFF59: DFF port map (li59, CLK, lo59);
    DFF60: DFF port map (li60, CLK, lo60);
    DFF61: DFF port map (li61, CLK, lo61);
    DFF62: DFF port map (li62, CLK, lo62);
    DFF63: DFF port map (li63, CLK, lo63);
    DFF64: DFF port map (li64, CLK, lo64);
    DFF65: DFF port map (li65, CLK, lo65);
    DFF66: DFF port map (li66, CLK, lo66);
    DFF67: DFF port map (li67, CLK, lo67);
    DFF68: DFF port map (li68, CLK, lo68);
    DFF69: DFF port map (li69, CLK, lo69);
    DFF70: DFF port map (li70, CLK, lo70);
    DFF71: DFF port map (li71, CLK, lo71);
    DFF72: DFF port map (li72, CLK, lo72);
    DFF73: DFF port map (li73, CLK, lo73);
    DFF74: DFF port map (li74, CLK, lo74);
    DFF75: DFF port map (li75, CLK, lo75);
    DFF76: DFF port map (li76, CLK, lo76);
    DFF77: DFF port map (li77, CLK, lo77);
    DFF78: DFF port map (li78, CLK, lo78);
    DFF79: DFF port map (li79, CLK, lo79);
    DFF80: DFF port map (li80, CLK, lo80);
    DFF81: DFF port map (li81, CLK, lo81);
    DFF82: DFF port map (li82, CLK, lo82);
    DFF83: DFF port map (li83, CLK, lo83);
    DFF84: DFF port map (li84, CLK, lo84);
    DFF85: DFF port map (li85, CLK, lo85);
    DFF86: DFF port map (li86, CLK, lo86);
    DFF87: DFF port map (li87, CLK, lo87);
    DFF88: DFF port map (li88, CLK, lo88);
    DFF89: DFF port map (li89, CLK, lo89);
    DFF90: DFF port map (li90, CLK, lo90);
    DFF91: DFF port map (li91, CLK, lo91);
    DFF92: DFF port map (li92, CLK, lo92);
    DFF93: DFF port map (li93, CLK, lo93);
    DFF94: DFF port map (li94, CLK, lo94);
    DFF95: DFF port map (li95, CLK, lo95);
    DFF96: DFF port map (li96, CLK, lo96);
    DFF97: DFF port map (li97, CLK, lo97);
    n310 <= ( pi1 and not lo13 );
    li01 <= ( not lo01 and n310 )
      or ( lo01 and not n310 );
    n312 <= ( lo01 and n310 );
    li02 <= ( not n312 and lo02 )
      or ( n312 and not lo02 );
    n314 <= ( n312 and lo02 );
    li03 <= ( not n314 and lo03 )
      or ( n314 and not lo03 );
    n316 <= ( n314 and lo03 );
    li04 <= ( not n316 and lo04 )
      or ( n316 and not lo04 );
    n318 <= ( n316 and lo04 );
    li05 <= ( not n318 and lo05 )
      or ( n318 and not lo05 );
    n320 <= ( n318 and lo05 );
    li06 <= ( not n320 and lo06 )
      or ( n320 and not lo06 );
    li07 <= ( not li02 and li01 )
      or ( li02 and not li01 );
    li08 <= ( not li03 and li02 )
      or ( li03 and not li02 );
    li09 <= ( not li04 and li03 )
      or ( li04 and not li03 );
    li10 <= ( not li05 and li04 )
      or ( li05 and not li04 );
    li11 <= ( not li06 and li05 )
      or ( li06 and not li05 );
    li12 <= ( li06 );
    n328 <= ( not li07 and lo68 )
      or ( li07 and not lo68 );
    n329 <= ( not li08 and lo69 )
      or ( li08 and not lo69 );
    n330 <= ( not li09 and lo70 )
      or ( li09 and not lo70 );
    n331 <= ( not li10 and lo71 )
      or ( li10 and not lo71 );
    n332 <= ( not li11 and lo72 )
      or ( li11 and not lo72 );
    n333 <= ( not li06 and lo73 )
      or ( li06 and not lo73 );
    n334 <= not (( not n329 and not n330 ));
    n335 <= not (( not n328 and not n334 ));
    n336 <= not (( not n332 and not n333 ));
    n337 <= not (( not n331 and not n336 ));
    li13 <= ( not n335 and not n337 );
    n339 <= ( not lo14 and lo15 )
      or ( lo14 and not lo15 );
    n340 <= ( lo14 and lo15 );
    n341 <= ( not n340 and lo16 )
      or ( n340 and not lo16 );
    n342 <= ( n340 and lo16 );
    n343 <= ( not n342 and lo17 )
      or ( n342 and not lo17 );
    n344 <= ( n342 and lo17 );
    n345 <= ( not n344 and lo18 )
      or ( n344 and not lo18 );
    n346 <= ( n344 and lo18 );
    n347 <= ( not n346 and lo19 )
      or ( n346 and not lo19 );
    n348 <= ( not lo00 and pi0 );
    li14 <= ( not lo14 and n348 )
      or ( lo14 and not n348 );
    li15 <= ( lo15 and not n348 )
      or ( n339 and n348 );
    li16 <= ( lo16 and not n348 )
      or ( n341 and n348 );
    li17 <= ( lo17 and not n348 )
      or ( n343 and n348 );
    li18 <= ( lo18 and not n348 )
      or ( n345 and n348 );
    li19 <= ( lo19 and not n348 )
      or ( n347 and n348 );
    li20 <= ( not li15 and li14 )
      or ( li15 and not li14 );
    li21 <= ( not li16 and li15 )
      or ( li16 and not li15 );
    li22 <= ( not li17 and li16 )
      or ( li17 and not li16 );
    li23 <= ( not li18 and li17 )
      or ( li18 and not li17 );
    li24 <= ( not li19 and li18 )
      or ( li19 and not li18 );
    li25 <= ( li19 );
    n361 <= ( not li20 and lo50 )
      or ( li20 and not lo50 );
    n362 <= ( not li21 and lo51 )
      or ( li21 and not lo51 );
    n363 <= ( not li22 and lo52 )
      or ( li22 and not lo52 );
    n364 <= ( not li23 and lo53 )
      or ( li23 and not lo53 );
    n365 <= ( not li24 and not lo54 )
      or ( li24 and lo54 );
    n366 <= ( not li19 and not lo55 )
      or ( li19 and lo55 );
    n367 <= not (( not n362 and not n363 ));
    n368 <= not (( not n361 and not n367 ));
    n369 <= not (( not n365 and not n366 ));
    n370 <= not (( not n364 and not n369 ));
    li00 <= ( not n368 and not n370 );
    li85 <= ( lo55 );
    li80 <= ( not li81 and lo50 )
      or ( li81 and not lo50 );
    li81 <= ( not li82 and lo51 )
      or ( li82 and not lo51 );
    li82 <= ( not li83 and lo52 )
      or ( li83 and not lo52 );
    li83 <= ( not li84 and lo53 )
      or ( li84 and not lo53 );
    li84 <= ( not lo55 and lo54 )
      or ( lo55 and not lo54 );
    li74 <= ( not lo14 and lo80 )
      or ( lo14 and not lo80 );
    n379 <= not (( not lo14 and lo80 ));
    li75 <= ( not n379 and not lo15 and not lo81 )
      or ( not n379 and lo15 and lo81 )
      or ( n379 and not lo15 and lo81 )
      or ( n379 and lo15 and not lo81 );
    n381 <= ( n379 and lo15 )
      or ( n379 and not lo81 )
      or ( lo15 and not lo81 );
    li76 <= ( not n381 and not lo16 and not lo82 )
      or ( not n381 and lo16 and lo82 )
      or ( n381 and not lo16 and lo82 )
      or ( n381 and lo16 and not lo82 );
    n383 <= ( n381 and lo16 )
      or ( n381 and not lo82 )
      or ( lo16 and not lo82 );
    li77 <= ( not n383 and not lo17 and not lo83 )
      or ( not n383 and lo17 and lo83 )
      or ( n383 and not lo17 and lo83 )
      or ( n383 and lo17 and not lo83 );
    n385 <= ( n383 and lo17 )
      or ( n383 and not lo83 )
      or ( lo17 and not lo83 );
    li78 <= ( not n385 and not lo18 and not lo84 )
      or ( not n385 and lo18 and lo84 )
      or ( n385 and not lo18 and lo84 )
      or ( n385 and lo18 and not lo84 );
    n387 <= ( n385 and lo18 )
      or ( n385 and not lo84 )
      or ( lo18 and not lo84 );
    li79 <= ( not n387 and not lo19 and not lo85 )
      or ( not n387 and lo19 and lo85 )
      or ( n387 and not lo19 and lo85 )
      or ( n387 and lo19 and not lo85 );
    li97 <= ( lo73 );
    li92 <= ( not li93 and lo68 )
      or ( li93 and not lo68 );
    li93 <= ( not li94 and lo69 )
      or ( li94 and not lo69 );
    li94 <= ( not li95 and lo70 )
      or ( li95 and not lo70 );
    li95 <= ( not li96 and lo71 )
      or ( li96 and not lo71 );
    li96 <= ( not lo73 and lo72 )
      or ( lo73 and not lo72 );
    li86 <= ( not lo92 and lo01 )
      or ( lo92 and not lo01 );
    n396 <= not (( not lo92 and lo01 ));
    li87 <= ( not n396 and not lo93 and not lo02 )
      or ( not n396 and lo93 and lo02 )
      or ( n396 and not lo93 and lo02 )
      or ( n396 and lo93 and not lo02 );
    n398 <= ( n396 and lo93 )
      or ( n396 and not lo02 )
      or ( lo93 and not lo02 );
    li88 <= ( not n398 and not lo94 and not lo03 )
      or ( not n398 and lo94 and lo03 )
      or ( n398 and not lo94 and lo03 )
      or ( n398 and lo94 and not lo03 );
    n400 <= ( n398 and lo94 )
      or ( n398 and not lo03 )
      or ( lo94 and not lo03 );
    li89 <= ( not n400 and not lo95 and not lo04 )
      or ( not n400 and lo95 and lo04 )
      or ( n400 and not lo95 and lo04 )
      or ( n400 and lo95 and not lo04 );
    n402 <= ( n400 and lo95 )
      or ( n400 and not lo04 )
      or ( lo95 and not lo04 );
    li90 <= ( not n402 and not lo96 and not lo05 )
      or ( not n402 and lo96 and lo05 )
      or ( n402 and not lo96 and lo05 )
      or ( n402 and lo96 and not lo05 );
    n404 <= ( n402 and lo96 )
      or ( n402 and not lo05 )
      or ( lo96 and not lo05 );
    li91 <= ( not n404 and not lo97 and not lo06 )
      or ( not n404 and lo97 and lo06 )
      or ( n404 and not lo97 and lo06 )
      or ( n404 and lo97 and not lo06 );
    li26 <= ( lo32 );
    li27 <= ( lo33 );
    li28 <= ( lo34 );
    li29 <= ( lo35 );
    li30 <= ( lo36 );
    li31 <= ( lo37 );
    li32 <= ( lo20 );
    li33 <= ( lo21 );
    li34 <= ( lo22 );
    li35 <= ( lo23 );
    li36 <= ( lo24 );
    li37 <= ( lo25 );
    li38 <= ( lo07 );
    li39 <= ( lo08 );
    li40 <= ( lo09 );
    li41 <= ( lo10 );
    li42 <= ( lo11 );
    li43 <= ( lo12 );
    li44 <= ( lo38 );
    li45 <= ( lo39 );
    li46 <= ( lo40 );
    li47 <= ( lo41 );
    li48 <= ( lo42 );
    li49 <= ( lo43 );
    li50 <= ( lo44 );
    li51 <= ( lo45 );
    li52 <= ( lo46 );
    li53 <= ( lo47 );
    li54 <= ( lo48 );
    li55 <= ( lo49 );
    li56 <= ( lo26 );
    li57 <= ( lo27 );
    li58 <= ( lo28 );
    li59 <= ( lo29 );
    li60 <= ( lo30 );
    li61 <= ( lo31 );
    li62 <= ( lo56 );
    li63 <= ( lo57 );
    li64 <= ( lo58 );
    li65 <= ( lo59 );
    li66 <= ( lo60 );
    li67 <= ( lo61 );
    li68 <= ( lo62 );
    li69 <= ( lo63 );
    li70 <= ( lo64 );
    li71 <= ( lo65 );
    li72 <= ( lo66 );
    li73 <= ( lo67 );
    po00 <= ( lo00 );
    po01 <= ( lo79 );
    po02 <= ( lo78 );
    po03 <= ( lo77 );
    po04 <= ( lo76 );
    po05 <= ( lo75 );
    po06 <= ( lo74 );
    po07 <= ( lo13 );
    po08 <= ( lo91 );
    po09 <= ( lo90 );
    po10 <= ( lo89 );
    po11 <= ( lo88 );
    po12 <= ( lo87 );
    po13 <= ( lo86 );
end Cookbook__mlab_dcfifo_behav;
