/******************************************************************************/
// @copyright   Copyright Notification
//   No part may be reproduced except as authorized by written permission.
//   The copyright and the foregoing restriction extend to reproduction in all media.
//   Trademark 2010, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC).
//   All rights reserved.
// @version: IWD_10wk37
// $Date: 2010-05-23 17:18:41 +0200 (Sun, 23 May 2010) $
// $Rev: 3041 $
/******************************************************************************/

module EUTRA_PdcchConfig {

  import from EUTRA_CommonDefs all;
  import from EUTRA_RRC_ASN1_Definitions language "ASN.1:1997" all;
  import from EUTRA_ASP_TypeDefs all;
  import from CommonDefs all;

  template (value) CCE_StartIndex_DL_UL_Type cs_CCE_StartIndex_DL_UL(integer p_DL_StartIndex,
                                                                     integer p_UL_StartIndex) :=
  { /* @status    APPROVED */
    CCE_StartIndex_DL := p_DL_StartIndex,
    CCE_StartIndex_UL := p_UL_StartIndex
  };

  template (value) PdcchCandidateList_Type cs_PdcchCandidateList_FDD_5MHz :=
  { /* @sic R5-101050: introduction of candidates for 10MHz sic@
       @status    APPROVED */
    {
      tsc_C_RNTI_Def,     // 4097 ('1001'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 0
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 1
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 8
        cs_CCE_StartIndex_DL_UL(10, 12)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def2,    // 4148 ('1034'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 0
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 1
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 2
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 3
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL(18,  8),      // subframe 8
        cs_CCE_StartIndex_DL_UL(16, 18)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def3,    // 4369 ('1111'H)
      {
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 0
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 1
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 4
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 5
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL(18,  8),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def4,    // 8177 ('1FF1'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 0
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 1
        cs_CCE_StartIndex_DL_UL(18,  8),      // subframe 2
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 3
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 4
        cs_CCE_StartIndex_DL_UL(18,  8),      // subframe 5
        cs_CCE_StartIndex_DL_UL(18,  8),      // subframe 6
        cs_CCE_StartIndex_DL_UL(18,  8),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def5,    // 1234 ('04D2'H)
      {
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 0
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 1
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL(10, 12)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def6,    // 2345 ('0929'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 0
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 1
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 2
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 3
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def7,    // 3456 ('0D80'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 0
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 1
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 2
        cs_CCE_StartIndex_DL_UL(18,  8),      // subframe 3
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 4
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 7
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def8,    // 4567 ('11D7'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 0
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 1
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 4
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def9,    // 5678 ('162E'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 0
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 1
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 2
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 3
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 6
        cs_CCE_StartIndex_DL_UL(18,  8),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def10,    // 6789 ('1A85'H)
      {
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 0
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 1
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    }
  };


  template (value) PdcchCandidateList_Type cs_PdcchCandidateList_FDD_10MHz :=
  { /* @sic R5-101050: introduction of candidates for 10MHz sic@
       @status    APPROVED */
    {
      tsc_C_RNTI_Def,     // 4097 ('1001'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 0
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 1
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 2
        cs_CCE_StartIndex_DL_UL(20, 22),      // subframe 3
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 4
        cs_CCE_StartIndex_DL_UL(18, 20),      // subframe 5
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 8
        cs_CCE_StartIndex_DL_UL(18, 20)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def2,    // 4148 ('1034'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 0
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 1
        cs_CCE_StartIndex_DL_UL(20, 22),      // subframe 2
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 3
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL(20, 22),      // subframe 6
        cs_CCE_StartIndex_DL_UL(22,  8),      // subframe 7
        cs_CCE_StartIndex_DL_UL(18, 20),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def3,    // 4369 ('1111'H)
      {
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 0
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 1
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(22,  8),      // subframe 4
        cs_CCE_StartIndex_DL_UL(22,  8),      // subframe 5
        cs_CCE_StartIndex_DL_UL(22,  8),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 8
        cs_CCE_StartIndex_DL_UL(16, 18)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def4,    // 8177 ('1FF1'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 0
        cs_CCE_StartIndex_DL_UL(20, 22),      // subframe 1
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 4
        cs_CCE_StartIndex_DL_UL(18, 20),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL(22,  8),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL(12, 14)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def5,    // 1234 ('04D2'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 0
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 1
        cs_CCE_StartIndex_DL_UL(22,  8),      // subframe 2
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 3
        cs_CCE_StartIndex_DL_UL(22,  8),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL(22,  8)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def6,    // 2345 ('0929'H)
      {
        cs_CCE_StartIndex_DL_UL(20, 22),      // subframe 0
        cs_CCE_StartIndex_DL_UL(18, 20),      // subframe 1
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(18, 20),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL(18, 20),      // subframe 6
        cs_CCE_StartIndex_DL_UL(22,  8),      // subframe 7
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def7,    // 3456 ('0D80'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 0
        cs_CCE_StartIndex_DL_UL(20, 22),      // subframe 1
        cs_CCE_StartIndex_DL_UL(20, 22),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 4
        cs_CCE_StartIndex_DL_UL(22,  8),      // subframe 5
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL(18, 20),      // subframe 8
        cs_CCE_StartIndex_DL_UL( 8, 10)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def8,    // 4567 ('11D7'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 0
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 1
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL(20, 22)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def9,    // 5678 ('162E'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 0
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 1
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 4
        cs_CCE_StartIndex_DL_UL(16, 18),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 6
        cs_CCE_StartIndex_DL_UL(14, 16),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL(16, 18)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def10,    // 6789 ('1A85'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 0
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 1
        cs_CCE_StartIndex_DL_UL(20, 22),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 3
        cs_CCE_StartIndex_DL_UL(12, 14),      // subframe 4
        cs_CCE_StartIndex_DL_UL(18, 20),      // subframe 5
        cs_CCE_StartIndex_DL_UL(20, 22),      // subframe 6
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL(12, 14)       // subframe 9
      }
    }
  };

  template (value) PdcchCandidateList_Type cs_PdcchCandidateList_FDD_20MHz :=
  { /* @sic R5s100137: introduction of candidates for 20MHz sic@
       @status    APPROVED */
    {
      tsc_C_RNTI_Def,     // 4097 ('1001'H)
      {
        cs_CCE_StartIndex_DL_UL(8,  10),      // subframe 0
        cs_CCE_StartIndex_DL_UL(36, 38),      // subframe 1
        cs_CCE_StartIndex_DL_UL(34, 36),      // subframe 2
        cs_CCE_StartIndex_DL_UL(38, 40),      // subframe 3
        cs_CCE_StartIndex_DL_UL(42, 44),      // subframe 4
        cs_CCE_StartIndex_DL_UL(22, 24),      // subframe 5
        cs_CCE_StartIndex_DL_UL(10, 12),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 8, 10),      // subframe 8
        cs_CCE_StartIndex_DL_UL(20, 22)       // subframe 9
      }
    }
  };
  
  template (value) PdcchCandidateList_Type cs_PdcchCandidateList_TDD_5MHz :=
  { /* @status    APPROVED */
    {
      tsc_C_RNTI_Def,     // 4097 ('1001'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 0),       // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),       // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 3
        cs_CCE_StartIndex_DL_UL(12,14),       // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 0),       // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,10),       // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 8
        cs_CCE_StartIndex_DL_UL(10,12)        // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def2,    // 4148 ('1034'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL(10,12),        // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL(16,18)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def3,    // 4369 ('1111'H)
      {
        cs_CCE_StartIndex_DL_UL(16, 0),       // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),       // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 3
        cs_CCE_StartIndex_DL_UL( 8,10),       // subframe 4
        cs_CCE_StartIndex_DL_UL(10, 0),       // subframe 5
        cs_CCE_StartIndex_DL_UL( 0, 8),       // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 8
        cs_CCE_StartIndex_DL_UL( 8,10)        // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def4,    // 8177 ('1FF1'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 0),       // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),       // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 3
        cs_CCE_StartIndex_DL_UL( 8,10),       // subframe 4
        cs_CCE_StartIndex_DL_UL(18, 0),       // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,10),       // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 8
        cs_CCE_StartIndex_DL_UL( 8,10)        // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def5,    // 1234 ('04D2'H)
      {
        cs_CCE_StartIndex_DL_UL(10, 0),       // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),       // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 3
        cs_CCE_StartIndex_DL_UL(14,16),       // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 0),       // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,10),       // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 8
        cs_CCE_StartIndex_DL_UL(10,12)        // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def6,    // 2345 ('0929'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL(14,16),        // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL( 8,10)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def7,    // 3456 ('0D80'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL(14,16),        // subframe 4
        cs_CCE_StartIndex_DL_UL(14, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0, 8),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL( 8,11)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def8,    // 4567 ('11D7'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL(14,16),        // subframe 4
        cs_CCE_StartIndex_DL_UL(16, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL( 8,10)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def9,    // 5678 ('162E'H)
      {
        cs_CCE_StartIndex_DL_UL(12, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0, 8),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL( 8,10),        // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL( 8,10)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def10,    // 6789 ('1A85'H)
      {
        cs_CCE_StartIndex_DL_UL(16, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL( 8,10),        // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL( 8,10)         // subframe 9
      }
    }
  };

  template (value) PdcchCandidateList_Type cs_PdcchCandidateList_TDD_20MHz :=
  { /* @status    APPROVED */
    {
      tsc_C_RNTI_Def,     // 4097 ('1001'H)
      {
        cs_CCE_StartIndex_DL_UL( 8,  0),      // subframe 0
        cs_CCE_StartIndex_DL_UL( 0, 38),      // subframe 1
        cs_CCE_StartIndex_DL_UL( 0,  0),      // subframe 2
        cs_CCE_StartIndex_DL_UL( 0,  0),      // subframe 3
        cs_CCE_StartIndex_DL_UL(42, 44),      // subframe 4
        cs_CCE_StartIndex_DL_UL( 8,  0),      // subframe 5
        cs_CCE_StartIndex_DL_UL( 0, 12),      // subframe 6
        cs_CCE_StartIndex_DL_UL( 0,  0),      // subframe 7
        cs_CCE_StartIndex_DL_UL( 0,  0),      // subframe 8
        cs_CCE_StartIndex_DL_UL(20, 22)       // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def2,    // 4148 ('1034'H)
      {
        cs_CCE_StartIndex_DL_UL(32, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,48),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL(20,22),        // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,12),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL( 8,10)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def3,    // 4369 ('1111'H)
      {
        cs_CCE_StartIndex_DL_UL(52, 0),       // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,22),       // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 3
        cs_CCE_StartIndex_DL_UL( 8,10),       // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 0),       // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,10),       // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 8
        cs_CCE_StartIndex_DL_UL(20,22)        // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def4,    // 8177 ('1FF1'H)
      {
        cs_CCE_StartIndex_DL_UL(22, 0),       // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,14),       // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 3
        cs_CCE_StartIndex_DL_UL(42,44),       // subframe 4
        cs_CCE_StartIndex_DL_UL(18, 0),       // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,30),       // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 8
        cs_CCE_StartIndex_DL_UL(20,22)        // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def5,    // 1234 ('04D2'H)
      {
        cs_CCE_StartIndex_DL_UL(26, 0),       // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,36),       // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 3
        cs_CCE_StartIndex_DL_UL(44,46),       // subframe 4
        cs_CCE_StartIndex_DL_UL(10, 0),       // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,14),       // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),       // subframe 8
        cs_CCE_StartIndex_DL_UL(20,22)        // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def6,    // 2345 ('0929'H)
      {
        cs_CCE_StartIndex_DL_UL(26, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,22),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL(14,16),        // subframe 4
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,24),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL( 8,10)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def7,    // 3456 ('0D80'H)
      {
        cs_CCE_StartIndex_DL_UL(42, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL(34,36),        // subframe 4
        cs_CCE_StartIndex_DL_UL(28, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,34),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL(14,16)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def8,    // 4567 ('11D7'H)
      {
        cs_CCE_StartIndex_DL_UL( 8, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,18),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL( 8,10),        // subframe 4
        cs_CCE_StartIndex_DL_UL(18, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,44),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL(24,26)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def9,    // 5678 ('162E'H)
      {
        cs_CCE_StartIndex_DL_UL(20, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,10),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL(48, 8),        // subframe 4
        cs_CCE_StartIndex_DL_UL(46, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,28),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL(34,36)         // subframe 9
      }
    },
    {
      tsc_C_RNTI_Def10,    // 6789 ('1A85'H)
      {
        cs_CCE_StartIndex_DL_UL(36, 0),        // subframe 0
        cs_CCE_StartIndex_DL_UL( 0,40),        // subframe 1
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 2
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 3
        cs_CCE_StartIndex_DL_UL(18,20),        // subframe 4
        cs_CCE_StartIndex_DL_UL(36, 0),        // subframe 5
        cs_CCE_StartIndex_DL_UL( 0,38),        // subframe 6
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 7
        cs_CCE_StartIndex_DL_UL( 0, 0),        // subframe 8
        cs_CCE_StartIndex_DL_UL(44,46)         // subframe 9
      }
    }
   };

  /*
   * @desc      initialise PDCCH configuration
   * @param     p_FDD_TDD
   * @param     p_Dl_Bandwidth
   * @param     p_RelativeTxPower
   * @return    template (value) PdcchConfig_Type
   * @status    APPROVED
   */
  function f_EUTRA_PdcchConfig_Init(EUTRA_FDD_TDD_Mode_Type p_FDD_TDD,
                                    Dl_Bandwidth_Type p_Dl_Bandwidth, /* p_Dl_Bandwidth = n6, n15, n25, n50, n75, n100 */
                                    template (value) ToRS_EPRE_Ratios_Type p_RelativeTxPower) return template (value) PdcchConfig_Type
  { /* @sic R5-100043: TDD branch added sic@ */
    /* @sic R5-101050: additional parameter to support other bandwidth than 5MHz sic@ */
    var template (value) PdcchConfig_Type v_PdcchConfig;
    var template (value) PdcchCandidateList_Type v_PdcchCandidateList;

    select (p_FDD_TDD) {
      case (FDD) {
        select (p_Dl_Bandwidth) {
          case (n25) {  // 5MHz
            v_PdcchCandidateList := cs_PdcchCandidateList_FDD_5MHz;
          }
          case (n50) {  // 10MHz
            v_PdcchCandidateList := cs_PdcchCandidateList_FDD_10MHz;
          }
          case (n100) {  // 20MHz; R5s100137
            v_PdcchCandidateList := cs_PdcchCandidateList_FDD_20MHz;
          }
          case else {
            FatalError(__FILE__, __LINE__, "fl_PdcchCandidateList_FDD: bandwidth not supported");
          }
        }
      }
      case (TDD) {
        select (p_Dl_Bandwidth) {
          case (n25) {  // 5MHz
            v_PdcchCandidateList := cs_PdcchCandidateList_TDD_5MHz;
          }
          case (n100) {  // 20MHz; R5-102223
            v_PdcchCandidateList := cs_PdcchCandidateList_TDD_20MHz;
          }
          case else {
            FatalError(__FILE__, __LINE__, "fl_PdcchCandidateList_FDD: bandwidth not supported");
          }
        }
      }
    }
    v_PdcchConfig := {
      CommonSearchSpaceFormat := 2,
      UeSpecificSearchSpaceFormat := 1,
      PdcchCandidateList := v_PdcchCandidateList,
      RelativeTxPower := p_RelativeTxPower
    };
    return v_PdcchConfig;
  };

}
