
module Intro_Top ( X, Y, Z, A, B, C, D, ScanOut, ScanMode, ScanIn, ScanClr, 
        ScanClk );
  input A, B, C, D, ScanMode, ScanIn, ScanClr, ScanClk;
  output X, Y, Z, ScanOut;
  wire   n23, n24, qn, ab, bc, FFA_to_A, FFB_to_B, FFC_to_C, q, FFD_to_D,
         X_to_FFX, Y_to_FFY, toD_FFX, fromQ_FFY, toD_FFY, fromQ_FFZ, toD_FFZ,
         fromQ_FFA, toD_FFA, fromQ_FFB, toD_FFB, fromQ_FFC, toD_FFC, fromQ_FFD,
         toD_FFD, n2, n3, n4, n5, n6, n8, n10, n11, n13, n15, n16, n17, n18,
         n19, n20, n21, n22;

  AndOr InputCombo ( .X(ab), .Y(bc), .A(FFA_to_A), .B(FFB_to_B), .C(FFC_to_C)
         );
  SR SRLatch ( .Q(q), .Qn(qn), .S(bc), .R(FFD_to_D) );
  XorNor OutputCombo ( .X(X_to_FFX), .Y(Y_to_FFY), .A(ab), .B(q), .C(qn) );
  FFC_0 FF_X_s07 ( .Q(n24), .Qn(n3), .D(toD_FFX), .Clk(n5), .Clr(n21) );
  FFC_6 FF_Y_s06 ( .Q(fromQ_FFY), .D(toD_FFY), .Clk(n5), .Clr(n21) );
  FFC_5 FF_Z_s05 ( .Q(fromQ_FFZ), .D(toD_FFZ), .Clk(n5), .Clr(n21) );
  FFC_4 FF_A_s04 ( .Q(fromQ_FFA), .Qn(n4), .D(toD_FFA), .Clk(n5), .Clr(n21) );
  FFC_3 FF_B_s03 ( .Q(fromQ_FFB), .D(toD_FFB), .Clk(n5), .Clr(n21) );
  FFC_2 FF_C_s02 ( .Q(fromQ_FFC), .D(toD_FFC), .Clk(n5), .Clr(n21) );
  FFC_1 FF_D_s01 ( .Q(fromQ_FFD), .D(toD_FFD), .Clk(n5), .Clr(n21) );
  AO22D0 U17 ( .A1(n22), .A2(fromQ_FFB), .B1(n2), .B2(B), .Z(FFB_to_B) );
  INVD1 U18 ( .I(n22), .ZN(n2) );
  AO22D0 U19 ( .A1(n22), .A2(fromQ_FFD), .B1(n2), .B2(D), .Z(FFD_to_D) );
  MAOI22D0 U20 ( .A1(ScanMode), .A2(fromQ_FFZ), .B1(qn), .B2(n22), .ZN(n18) );
  BUFFD1 U21 ( .I(n19), .Z(n15) );
  MAOI22D0 U22 ( .A1(n2), .A2(X_to_FFX), .B1(n3), .B2(n2), .ZN(n19) );
  AO22D0 U23 ( .A1(n22), .A2(fromQ_FFC), .B1(n2), .B2(C), .Z(FFC_to_C) );
  BUFFD1 U24 ( .I(ScanMode), .Z(n22) );
  BUFFD0 U25 ( .I(ScanClk), .Z(n5) );
  CKBD0 U26 ( .CLK(n10), .C(n6) );
  CKND16 U27 ( .CLK(n6), .CN(ScanOut) );
  CKBD0 U28 ( .CLK(n15), .C(n8) );
  CKND16 U29 ( .CLK(n8), .CN(X) );
  CKND0 U30 ( .CLK(n24), .CN(n10) );
  CKBD0 U31 ( .CLK(n16), .C(n11) );
  CKND16 U32 ( .CLK(n11), .CN(Z) );
  CKND0 U33 ( .CLK(n20), .CN(n16) );
  CKBD0 U34 ( .CLK(n17), .C(n13) );
  CKND16 U35 ( .CLK(n13), .CN(Y) );
  CKND0 U36 ( .CLK(n23), .CN(n17) );
  INVD1 U37 ( .I(n18), .ZN(n20) );
  AO22D0 U38 ( .A1(n2), .A2(Y_to_FFY), .B1(n22), .B2(fromQ_FFY), .Z(n23) );
  BUFFD1 U39 ( .I(ScanClr), .Z(n21) );
  AO22D0 U40 ( .A1(n2), .A2(A), .B1(ScanMode), .B2(fromQ_FFB), .Z(toD_FFA) );
  AO22D0 U41 ( .A1(n2), .A2(B), .B1(ScanMode), .B2(fromQ_FFC), .Z(toD_FFB) );
  AO22D0 U42 ( .A1(n2), .A2(C), .B1(ScanMode), .B2(fromQ_FFD), .Z(toD_FFC) );
  AO22D0 U43 ( .A1(n2), .A2(D), .B1(ScanIn), .B2(n22), .Z(toD_FFD) );
  OAI22D0 U44 ( .A1(n2), .A2(n4), .B1(qn), .B2(n22), .ZN(toD_FFZ) );
  AO22D0 U45 ( .A1(n22), .A2(fromQ_FFZ), .B1(n2), .B2(Y_to_FFY), .Z(toD_FFY)
         );
  AO22D0 U46 ( .A1(n22), .A2(fromQ_FFA), .B1(n2), .B2(A), .Z(FFA_to_A) );
  AO22D0 U47 ( .A1(n22), .A2(fromQ_FFY), .B1(n2), .B2(X_to_FFX), .Z(toD_FFX)
         );
endmodule


module FFC_6 ( Q, Qn, D, Clk, Clr );
  input D, Clk, Clr;
  output Q, Qn;
  wire   n3;

  INVD1 U3 ( .I(Clr), .ZN(n3) );
  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
endmodule


module FFC_5 ( Q, Qn, D, Clk, Clr );
  input D, Clk, Clr;
  output Q, Qn;
  wire   n3;

  INVD1 U3 ( .I(Clr), .ZN(n3) );
  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
endmodule


module FFC_4 ( Q, Qn, D, Clk, Clr );
  input D, Clk, Clr;
  output Q, Qn;
  wire   n3;

  INVD1 U3 ( .I(Clr), .ZN(n3) );
  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
endmodule


module FFC_3 ( Q, Qn, D, Clk, Clr );
  input D, Clk, Clr;
  output Q, Qn;
  wire   n3;

  INVD1 U3 ( .I(Clr), .ZN(n3) );
  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
endmodule


module FFC_2 ( Q, Qn, D, Clk, Clr );
  input D, Clk, Clr;
  output Q, Qn;
  wire   n3;

  INVD1 U3 ( .I(Clr), .ZN(n3) );
  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
endmodule


module FFC_1 ( Q, Qn, D, Clk, Clr );
  input D, Clk, Clr;
  output Q, Qn;
  wire   n3;

  INVD1 U3 ( .I(Clr), .ZN(n3) );
  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
endmodule


module FFC_0 ( Q, Qn, D, Clk, Clr );
  input D, Clk, Clr;
  output Q, Qn;
  wire   n1;

  INVD1 U3 ( .I(Clr), .ZN(n1) );
  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n1), .Q(Q), .QN(Qn) );
endmodule


module XorNor ( X, Y, A, B, C );
  input A, B, C;
  output X, Y;
  wire   n2;

  NR2D1 U1 ( .A1(n2), .A2(C), .ZN(Y) );
  XOR2D1 U2 ( .A1(B), .A2(A), .Z(n2) );
  XOR2D0 U3 ( .A1(B), .A2(A), .Z(X) );
endmodule


module SR ( Q, Qn, S, R );
  input S, R;
  output Q, Qn;


  CKND2D2 U2 ( .A1(Q), .A2(R), .ZN(Qn) );
  ND2D1 U1 ( .A1(S), .A2(Qn), .ZN(Q) );
endmodule


module AndOr ( X, Y, A, B, C );
  input A, B, C;
  output X, Y;


  AN2D1 U1 ( .A1(B), .A2(A), .Z(X) );
  OR2D1 U2 ( .A1(C), .A2(B), .Z(Y) );
endmodule

