// XAPP132 
//  
// DLL 1X and 2X Example
//

`ifdef synthesis

module IBUFG ( I ,O ); 
   // synthesis syn_black_box
   parameter InstancePath = "*" ;
   input     I ;
   output    O ;
endmodule	  

//module IBUF ( I ,O ); 
   // synthesis syn_black_box
  // parameter InstancePath = "*" ;
  // input     I ;
   //output    O ;
//endmodule 

module CLKDLL ( CLKFB ,CLKIN ,RST ,
                CLK0 ,CLK180 ,CLK270 ,CLK2X ,
                CLK90 ,CLKDV ,LOCKED );
   // synthesis syn_black_box
   parameter CLKDV_DIVIDE = 4.5 ;
   parameter InstancePath = "*" ;
   input     CLKFB ;
   input     CLKIN ;
   input     RST ;
   output    CLK0 ;
   output    CLK180 ;
   output    CLK270 ;
   output    CLK2X ;
   output    CLK90 ;
   output    CLKDV ;
   output    LOCKED ;
endmodule

module BUFG ( I ,O ); 
   // synthesis syn_black_box
   parameter InstancePath = "*" ;
   input     I ;
   output    O ;
endmodule

module OBUF ( I ,O ); 
   // synthesis syn_black_box
   parameter InstancePath = "*" ;
   input     I ;
   output    O ;
endmodule

`endif

module dll_standard (CLKIN, RESET, CLK0, CLK2X, LOCKED);
input CLKIN, RESET;
output CLK0, CLK2X, LOCKED;

wire CLKIN_w, RESET_w, CLK0_dll, CLK2X_dll, LOCKED_dll;	 

IBUFG clkpad (.I(CLKIN), .O(CLKIN_w));
//IBUF  rstpad (.I(RESET), .O(RESET_w));

CLKDLL dll (.CLKIN(CLKIN_w), .CLKFB(CLK0), .RST(RESET), 
            .CLK0(CLK0_dll), .CLK90(CLK2X_dll), .CLK180(), .CLK270(),
            .CLK2X(), .CLKDV(), .LOCKED(LOCKED_dll));

BUFG   clkg   (.I(CLK0_dll),   .O(CLK0));
BUFG   clk2xg (.I(CLK2X_dll),  .O(CLK2X));
OBUF   lckpad (.I(LOCKED_dll), .O(LOCKED));

endmodule
