
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   n27, 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,
         n3, n5, n7, n9, n10, n11, n12, n13, n14, n15, n16, n17, n19, n20, n21,
         n22, n23, n24, n25, n26;

  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(n27), .Qn(n14), .D(toD_FFX), .Clk(n20), .Clr(n22) );
  FFC_6 FF_Y_s06 ( .Q(fromQ_FFY), .D(toD_FFY), .Clk(n20), .Clr(n22) );
  FFC_5 FF_Z_s05 ( .Q(fromQ_FFZ), .Qn(n15), .D(toD_FFZ), .Clk(n20), .Clr(n22)
         );
  FFC_4 FF_A_s04 ( .Q(fromQ_FFA), .Qn(n16), .D(toD_FFA), .Clk(n20), .Clr(n22)
         );
  FFC_3 FF_B_s03 ( .Q(fromQ_FFB), .D(toD_FFB), .Clk(n20), .Clr(n22) );
  FFC_2 FF_C_s02 ( .Q(fromQ_FFC), .D(toD_FFC), .Clk(n20), .Clr(n22) );
  FFC_1 FF_D_s01 ( .Q(fromQ_FFD), .D(toD_FFD), .Clk(n20), .Clr(n22) );
  CKBD0 U17 ( .CLK(n9), .C(n3) );
  CKND16 U18 ( .CLK(n3), .CN(Z) );
  CKBD0 U19 ( .CLK(n25), .C(n5) );
  CKND16 U20 ( .CLK(n5), .CN(X) );
  CKBD0 U21 ( .CLK(n26), .C(n7) );
  CKND16 U22 ( .CLK(n7), .CN(Y) );
  CKBD0 U23 ( .CLK(n11), .C(n9) );
  CKND1 U24 ( .CLK(n10), .CN(n11) );
  MUX2ND0 U25 ( .I0(qn), .I1(n15), .S(n24), .ZN(n10) );
  MUX2ND0 U26 ( .I0(Y_to_FFY), .I1(fromQ_FFY), .S(n24), .ZN(n12) );
  MUX2ND0 U27 ( .I0(X_to_FFX), .I1(n27), .S(n24), .ZN(n13) );
  CKBD0 U28 ( .CLK(n14), .C(n17) );
  CKND16 U29 ( .CLK(n17), .CN(ScanOut) );
  INVD0 U30 ( .I(ScanClk), .ZN(n19) );
  INVD0 U31 ( .I(n19), .ZN(n20) );
  INVD0 U32 ( .I(ScanClr), .ZN(n21) );
  INVD0 U33 ( .I(n21), .ZN(n22) );
  INVD0 U34 ( .I(ScanMode), .ZN(n23) );
  INVD0 U35 ( .I(n23), .ZN(n24) );
  CKBD0 U36 ( .CLK(n13), .C(n25) );
  CKBD0 U37 ( .CLK(n12), .C(n26) );
  MUX2ND0 U38 ( .I0(qn), .I1(n16), .S(n24), .ZN(toD_FFZ) );
  MUX2D0 U39 ( .I0(Y_to_FFY), .I1(fromQ_FFZ), .S(n24), .Z(toD_FFY) );
  MUX2D0 U40 ( .I0(X_to_FFX), .I1(fromQ_FFY), .S(n24), .Z(toD_FFX) );
  MUX2D0 U41 ( .I0(D), .I1(ScanIn), .S(n24), .Z(toD_FFD) );
  MUX2D0 U42 ( .I0(C), .I1(fromQ_FFD), .S(ScanMode), .Z(toD_FFC) );
  MUX2D0 U43 ( .I0(B), .I1(fromQ_FFC), .S(n24), .Z(toD_FFB) );
  MUX2D0 U44 ( .I0(A), .I1(fromQ_FFB), .S(ScanMode), .Z(toD_FFA) );
  MUX2D0 U45 ( .I0(D), .I1(fromQ_FFD), .S(n24), .Z(FFD_to_D) );
  MUX2D0 U46 ( .I0(C), .I1(fromQ_FFC), .S(ScanMode), .Z(FFC_to_C) );
  MUX2D0 U47 ( .I0(B), .I1(fromQ_FFB), .S(n24), .Z(FFB_to_B) );
  MUX2D0 U48 ( .I0(A), .I1(fromQ_FFA), .S(ScanMode), .Z(FFA_to_A) );
endmodule


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

  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
  CKND0 U3 ( .CLK(Clr), .CN(n3) );
endmodule


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

  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
  CKND0 U3 ( .CLK(Clr), .CN(n3) );
endmodule


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

  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
  CKND0 U3 ( .CLK(Clr), .CN(n3) );
endmodule


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

  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
  CKND0 U3 ( .CLK(Clr), .CN(n3) );
endmodule


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

  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
  CKND0 U3 ( .CLK(Clr), .CN(n3) );
endmodule


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

  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n3), .Q(Q), .QN(Qn) );
  CKND0 U3 ( .CLK(Clr), .CN(n3) );
endmodule


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

  DFCND1 QReg_reg ( .D(D), .CP(Clk), .CDN(n1), .Q(Q), .QN(Qn) );
  CKND0 U3 ( .CLK(Clr), .CN(n1) );
endmodule


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


  NR2D0 U1 ( .A1(C), .A2(X), .ZN(Y) );
  CKXOR2D0 U2 ( .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) );
  CKND2D0 U1 ( .A1(S), .A2(Qn), .ZN(Q) );
endmodule


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


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

