// --------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------
// Copyright (c) 2004 by Lattice Semiconductor Corporation
// --------------------------------------------------------------------
//
// Permission:
//
//   Lattice Semiconductor grants permission to use this code for use
//   in synthesis for any Lattice programmable logic product.  Other
//   use of this code, including the selling or duplication of any
//   portion is strictly prohibited.
//
// Disclaimer:
//
//   This VHDL or Verilog source code is intended as a design reference
//   which illustrates how these types of functions can be implemented.
//   It is the user's responsibility to verify their design for
//   consistency and functionality through the use of formal
//   verification methods.  Lattice Semiconductor provides no warranty
//   regarding the use or functionality of this code.
//
// --------------------------------------------------------------------
//           
//                     Lattice Semiconductor Corporation
//                     5555 NE Moore Court
//                     Hillsboro, OR 97214
//                     U.S.A
//
//                     TEL: 1-800-Lattice (USA and Canada)
//                          408-826-6000 (other locations)
//
//                     web: http://www.latticesemi.com/
//                     email: techsupport@latticesemi.com
//
// --------------------------------------------------------------------
//
//  Project:           QDR-II Memory Controller
//  File:              qdr2_io.v
//  Title:             qdr2_io
//  Description:       This is the top level of the controller.
//                     The HSTL15_I and LVTTL33 I/O standards are delcared
//                     in this file.
//
// --------------------------------------------------------------------
//
// Revision History :
// --------------------------------------------------------------------
// $Log: qdr2_io.v,v $
// Revision 1.0  2004-01-15 11:30:51-08  jhsin
// Initial revision
//
//
// --------------------------------------------------------------------

`timescale 1ns/1ps

module qdr2_io(
   // Inputs from host interface
      hostCLK,
      hostWA,
      hostRA,
      hostWD,
      hostWP,
      hostRN,
      hostWN,
      host16,
      host08,
   // Outputs to host interface
      hostRQ,
      hostPERR,
   // Inputs from QDR-II interface
      qdrCQ,
      qdrQ,
      qdrPQ,
   // Outputs to QDR-II interface
      qdrK,
      qdrKN,
      qdrC,
      qdrCN,
      qdrRN,
      qdrWN,
      qdrSA,
      qdrD,
      qdrPD,
      qdrBWN
);

input         hostCLK;
input  [21:0] hostWA;
input  [21:0] hostRA;
input  [31:0] hostWD;
input  [ 3:0] hostWP;
input         hostRN;
input         hostWN;
input         host16;
input         host08;

output [31:0] hostRQ;
output [ 3:0] hostPERR;

input         qdrCQ;
input  [15:0] qdrQ;
input  [ 1:0] qdrPQ;

output        qdrK;
output        qdrKN;
output        qdrC;
output        qdrCN;
output        qdrRN;
output        qdrWN;
output [19:0] qdrSA;
output [15:0] qdrD;
output [ 1:0] qdrPD;
output [ 1:0] qdrBWN;

wire          k;
wire          kn;
wire          rdn;
wire          wrn;
wire   [19:0] sa;
wire   [15:0] d;
wire   [ 1:0] pd;
wire   [ 1:0] bwn;
wire   [15:0] q;
wire   [ 1:0] pq;
wire          cq;

wire          hstCLK;
wire   [21:0] hstWA;
wire   [21:0] hstRA;
wire   [31:0] hstWD;
wire   [ 3:0] hstWP;
wire          hstRN;
wire          hstWN;
wire          hst16;
wire          hst08;

wire   [31:0] hstRQ;
wire   [ 3:0] hstPERR;

qdr2 qdr_inst(
   // Inputs from host interface
      .hostCLK  (hstCLK),
      .hostWA   (hstWA),
      .hostRA   (hstRA),
      .hostWD   (hstWD),
      .hostWP   (hstWP),
      .hostRN   (hstRN),
      .hostWN   (hstWN),
      .host16   (hst16),
      .host08   (hst08),
   // Outputs to host interface
      .hostRQ   (hstRQ),
      .hostPERR (hstPERR),
   // Inputs from QDR-II interface
      .qdrCQ    (cq),
      .qdrQ     (q),
      .qdrPQ    (pq),
   // Outputs to QDR-II interface
      .qdrK     (k),
      .qdrKN    (kn),
      .qdrRN    (rdn),
      .qdrWN    (wrn),
      .qdrSA    (sa),
      .qdrD     (d),
      .qdrPD    (pd),
      .qdrBWN   (bwn)
);

// -----------------------------------------------------------------------------
// LVTTL33 outputs to the host interface
// -----------------------------------------------------------------------------

OB6 out_lvttl00(.I(hstRQ[0] ), .O(hostRQ[0] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl01(.I(hstRQ[1] ), .O(hostRQ[1] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl02(.I(hstRQ[2] ), .O(hostRQ[2] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl03(.I(hstRQ[3] ), .O(hostRQ[3] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl04(.I(hstRQ[4] ), .O(hostRQ[4] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl05(.I(hstRQ[5] ), .O(hostRQ[5] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl06(.I(hstRQ[6] ), .O(hostRQ[6] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl07(.I(hstRQ[7] ), .O(hostRQ[7] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl08(.I(hstRQ[8] ), .O(hostRQ[8] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl09(.I(hstRQ[9] ), .O(hostRQ[9] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl10(.I(hstRQ[10]), .O(hostRQ[10])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl11(.I(hstRQ[11]), .O(hostRQ[11])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl12(.I(hstRQ[12]), .O(hostRQ[12])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl13(.I(hstRQ[13]), .O(hostRQ[13])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl14(.I(hstRQ[14]), .O(hostRQ[14])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl15(.I(hstRQ[15]), .O(hostRQ[15])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl16(.I(hstRQ[16]), .O(hostRQ[16])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl17(.I(hstRQ[17]), .O(hostRQ[17])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl18(.I(hstRQ[18]), .O(hostRQ[18])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl19(.I(hstRQ[19]), .O(hostRQ[19])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl20(.I(hstRQ[20]), .O(hostRQ[20])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl21(.I(hstRQ[21]), .O(hostRQ[21])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl22(.I(hstRQ[22]), .O(hostRQ[22])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl23(.I(hstRQ[23]), .O(hostRQ[23])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl24(.I(hstRQ[24]), .O(hostRQ[24])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl25(.I(hstRQ[25]), .O(hostRQ[25])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl26(.I(hstRQ[26]), .O(hostRQ[26])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl27(.I(hstRQ[27]), .O(hostRQ[27])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl28(.I(hstRQ[28]), .O(hostRQ[28])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl29(.I(hstRQ[29]), .O(hostRQ[29])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl30(.I(hstRQ[30]), .O(hostRQ[30])) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl31(.I(hstRQ[31]), .O(hostRQ[31])) /* synthesis IO_TYPE="LVTTL33" */ ;

OB6 out_lvttl32(.I(hstPERR[0] ), .O(hostPERR[0] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl33(.I(hstPERR[1] ), .O(hostPERR[1] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl34(.I(hstPERR[2] ), .O(hostPERR[2] )) /* synthesis IO_TYPE="LVTTL33" */ ;
OB6 out_lvttl35(.I(hstPERR[3] ), .O(hostPERR[3] )) /* synthesis IO_TYPE="LVTTL33" */ ;

// -----------------------------------------------------------------------------
// LVTTL33 inputs from the host interface
// -----------------------------------------------------------------------------

IBM in_lvttl00  (.I(hostCLK),  .O(hstCLK)) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl01  (.I(host08 ),  .O(hst08 )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl02  (.I(host16 ),  .O(hst16 )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl03  (.I(hostWN ),  .O(hstWN )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl04  (.I(hostRN ),  .O(hstRN )) /* synthesis IO_TYPE="LVTTL33" */ ;

IBM in_lvttl05  (.I(hostWA[0] ),  .O(hstWA[0] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl06  (.I(hostWA[1] ),  .O(hstWA[1] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl07  (.I(hostWA[2] ),  .O(hstWA[2] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl08  (.I(hostWA[3] ),  .O(hstWA[3] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl09  (.I(hostWA[4] ),  .O(hstWA[4] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl10  (.I(hostWA[5] ),  .O(hstWA[5] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl11  (.I(hostWA[6] ),  .O(hstWA[6] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl12  (.I(hostWA[7] ),  .O(hstWA[7] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl13  (.I(hostWA[8] ),  .O(hstWA[8] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl14  (.I(hostWA[9] ),  .O(hstWA[9] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl15  (.I(hostWA[10]),  .O(hstWA[10])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl16  (.I(hostWA[11]),  .O(hstWA[11])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl17  (.I(hostWA[12]),  .O(hstWA[12])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl18  (.I(hostWA[13]),  .O(hstWA[13])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl19  (.I(hostWA[14]),  .O(hstWA[14])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl20  (.I(hostWA[15]),  .O(hstWA[15])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl21  (.I(hostWA[16]),  .O(hstWA[16])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl22  (.I(hostWA[17]),  .O(hstWA[17])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl23  (.I(hostWA[18]),  .O(hstWA[18])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl24  (.I(hostWA[19]),  .O(hstWA[19])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl25  (.I(hostWA[20]),  .O(hstWA[20])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl26  (.I(hostWA[21]),  .O(hstWA[21])) /* synthesis IO_TYPE="LVTTL33" */ ;

IBM in_lvttl27  (.I(hostRA[0] ),  .O(hstRA[0] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl28  (.I(hostRA[1] ),  .O(hstRA[1] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl29  (.I(hostRA[2] ),  .O(hstRA[2] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl30  (.I(hostRA[3] ),  .O(hstRA[3] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl31  (.I(hostRA[4] ),  .O(hstRA[4] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl32  (.I(hostRA[5] ),  .O(hstRA[5] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl33  (.I(hostRA[6] ),  .O(hstRA[6] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl34  (.I(hostRA[7] ),  .O(hstRA[7] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl35  (.I(hostRA[8] ),  .O(hstRA[8] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl36  (.I(hostRA[9] ),  .O(hstRA[9] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl37  (.I(hostRA[10]),  .O(hstRA[10])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl38  (.I(hostRA[11]),  .O(hstRA[11])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl39  (.I(hostRA[12]),  .O(hstRA[12])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl40  (.I(hostRA[13]),  .O(hstRA[13])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl41  (.I(hostRA[14]),  .O(hstRA[14])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl42  (.I(hostRA[15]),  .O(hstRA[15])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl43  (.I(hostRA[16]),  .O(hstRA[16])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl44  (.I(hostRA[17]),  .O(hstRA[17])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl45  (.I(hostRA[18]),  .O(hstRA[18])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl46  (.I(hostRA[19]),  .O(hstRA[19])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl47  (.I(hostRA[20]),  .O(hstRA[20])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl48  (.I(hostRA[21]),  .O(hstRA[21])) /* synthesis IO_TYPE="LVTTL33" */ ;

IBM in_lvttl49  (.I(hostWD[0] ),  .O(hstWD[0] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl50  (.I(hostWD[1] ),  .O(hstWD[1] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl51  (.I(hostWD[2] ),  .O(hstWD[2] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl52  (.I(hostWD[3] ),  .O(hstWD[3] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl53  (.I(hostWD[4] ),  .O(hstWD[4] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl54  (.I(hostWD[5] ),  .O(hstWD[5] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl55  (.I(hostWD[6] ),  .O(hstWD[6] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl56  (.I(hostWD[7] ),  .O(hstWD[7] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl57  (.I(hostWD[8] ),  .O(hstWD[8] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl58  (.I(hostWD[9] ),  .O(hstWD[9] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl59  (.I(hostWD[10]),  .O(hstWD[10])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl60  (.I(hostWD[11]),  .O(hstWD[11])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl61  (.I(hostWD[12]),  .O(hstWD[12])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl62  (.I(hostWD[13]),  .O(hstWD[13])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl63  (.I(hostWD[14]),  .O(hstWD[14])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl64  (.I(hostWD[15]),  .O(hstWD[15])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl65  (.I(hostWD[16]),  .O(hstWD[16])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl66  (.I(hostWD[17]),  .O(hstWD[17])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl67  (.I(hostWD[18]),  .O(hstWD[18])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl68  (.I(hostWD[19]),  .O(hstWD[19])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl69  (.I(hostWD[20]),  .O(hstWD[20])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl70  (.I(hostWD[21]),  .O(hstWD[21])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl71  (.I(hostWD[22]),  .O(hstWD[22])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl72  (.I(hostWD[23]),  .O(hstWD[23])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl73  (.I(hostWD[24]),  .O(hstWD[24])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl74  (.I(hostWD[25]),  .O(hstWD[25])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl75  (.I(hostWD[26]),  .O(hstWD[26])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl76  (.I(hostWD[27]),  .O(hstWD[27])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl77  (.I(hostWD[28]),  .O(hstWD[28])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl78  (.I(hostWD[29]),  .O(hstWD[29])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl79  (.I(hostWD[30]),  .O(hstWD[30])) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl80  (.I(hostWD[31]),  .O(hstWD[31])) /* synthesis IO_TYPE="LVTTL33" */ ;

IBM in_lvttl81  (.I(hostWP[0] ),  .O(hstWP[0] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl82  (.I(hostWP[1] ),  .O(hstWP[1] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl83  (.I(hostWP[2] ),  .O(hstWP[2] )) /* synthesis IO_TYPE="LVTTL33" */ ;
IBM in_lvttl84  (.I(hostWP[3] ),  .O(hstWP[3] )) /* synthesis IO_TYPE="LVTTL33" */ ;

// -----------------------------------------------------------------------------
// HSTL15_I outputs to the QDR-II interface
// -----------------------------------------------------------------------------

OB6 out_hstl0(.I(k),    .O(qdrK ))          /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl1(.I(kn),   .O(qdrKN))          /* synthesis IO_TYPE="HSTL15_I" */ ;

OB6 out_hstl2(.I(1'b1), .O(qdrC ))          /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl3(.I(1'b1), .O(qdrCN))          /* synthesis IO_TYPE="HSTL15_I" */ ;

OB6 out_hstl8(.I(rdn),  .O(qdrRN))          /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl9(.I(wrn),  .O(qdrWN))          /* synthesis IO_TYPE="HSTL15_I" */ ;

OB6 out_hstl106(.I(sa[19]),  .O(qdrSA[19])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl107(.I(sa[18]),  .O(qdrSA[18])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl10 (.I(sa[17]),  .O(qdrSA[17])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl11 (.I(sa[16]),  .O(qdrSA[16])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl12 (.I(sa[15]),  .O(qdrSA[15])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl13 (.I(sa[14]),  .O(qdrSA[14])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl14 (.I(sa[13]),  .O(qdrSA[13])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl15 (.I(sa[12]),  .O(qdrSA[12])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl16 (.I(sa[11]),  .O(qdrSA[11])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl17 (.I(sa[10]),  .O(qdrSA[10])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl18 (.I(sa[9] ),  .O(qdrSA[9] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl19 (.I(sa[8] ),  .O(qdrSA[8] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl20 (.I(sa[7] ),  .O(qdrSA[7] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl21 (.I(sa[6] ),  .O(qdrSA[6] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl22 (.I(sa[5] ),  .O(qdrSA[5] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl23 (.I(sa[4] ),  .O(qdrSA[4] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl24 (.I(sa[3] ),  .O(qdrSA[3] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl25 (.I(sa[2] ),  .O(qdrSA[2] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl26 (.I(sa[1] ),  .O(qdrSA[1] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl27 (.I(sa[0] ),  .O(qdrSA[0] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
                             
OB6 out_hstl76 (.I(d[15] ),  .O(qdrD[15] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl77 (.I(d[14] ),  .O(qdrD[14] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl78 (.I(d[13] ),  .O(qdrD[13] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl79 (.I(d[12] ),  .O(qdrD[12] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl80 (.I(d[11] ),  .O(qdrD[11] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl81 (.I(d[10] ),  .O(qdrD[10] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl82 (.I(d[9]  ),  .O(qdrD[9]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl83 (.I(d[8]  ),  .O(qdrD[8]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl84 (.I(d[7]  ),  .O(qdrD[7]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl85 (.I(d[6]  ),  .O(qdrD[6]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl86 (.I(d[5]  ),  .O(qdrD[5]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl87 (.I(d[4]  ),  .O(qdrD[4]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl88 (.I(d[3]  ),  .O(qdrD[3]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl89 (.I(d[2]  ),  .O(qdrD[2]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl90 (.I(d[1]  ),  .O(qdrD[1]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl91 (.I(d[0]  ),  .O(qdrD[0]  )) /* synthesis IO_TYPE="HSTL15_I" */ ;
                             
OB6 out_hstl98 (.I(pd[1] ),  .O(qdrPD[1] )) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl99 (.I(pd[0] ),  .O(qdrPD[0] )) /* synthesis IO_TYPE="HSTL15_I" */ ;

OB6 out_hstl102(.I(bwn[1]),  .O(qdrBWN[1])) /* synthesis IO_TYPE="HSTL15_I" */ ;
OB6 out_hstl103(.I(bwn[0]),  .O(qdrBWN[0])) /* synthesis IO_TYPE="HSTL15_I" */ ;

// -----------------------------------------------------------------------------
// HSTL15_I inputs from the QDR-II interface
// -----------------------------------------------------------------------------

IBM in_hstl49  (.I(qdrQ[15]),  .O(q[15]  )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl50  (.I(qdrQ[14]),  .O(q[14]  )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl51  (.I(qdrQ[13]),  .O(q[13]  )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl52  (.I(qdrQ[12]),  .O(q[12]  )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl53  (.I(qdrQ[11]),  .O(q[11]  )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl54  (.I(qdrQ[10]),  .O(q[10]  )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl55  (.I(qdrQ[9]),   .O(q[9]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl56  (.I(qdrQ[8]),   .O(q[8]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl57  (.I(qdrQ[7]),   .O(q[7]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl58  (.I(qdrQ[6]),   .O(q[6]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl59  (.I(qdrQ[5]),   .O(q[5]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl60  (.I(qdrQ[4]),   .O(q[4]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl61  (.I(qdrQ[3]),   .O(q[3]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl62  (.I(qdrQ[2]),   .O(q[2]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl63  (.I(qdrQ[1]),   .O(q[1]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl64  (.I(qdrQ[0]),   .O(q[0]   )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
                               
IBM in_hstl71  (.I(qdrPQ[1]),  .O(pq[1]  )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;
IBM in_hstl72  (.I(qdrPQ[0]),  .O(pq[0]  )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;

IBM in_hstl104  (.I(qdrCQ),    .O(cq     )) /* synthesis INTERFACE="FASTINPUT" IO_TYPE="HSTL15_I" */ ;

endmodule
