tags:
- tag: BRAM_MODE
  tileTypes:
  - BRAM
  description: "Is RAMB36 in use?"
  default: 2xRAMB18
  states:
  - state: 2xRAMB18
    description: "BRAM tile is fractured into two RAMB18 sites."
  - state: RAMB36
    description: "BRAM tile is fused into one RAMB36 site."
- tag: ABCD_RESET_TYPE
  description: "Are the ABCD FF resets synchronous or asynchronous?"
  default: ASYNC
  siteTypes:
  - SLICEL
  - SLICEM
  states:
  - state: SYNC
    description: "Resets are synchronous"
  - state: ASYNC
    description: "Resets are asynchronous"
- tag: ABCD_FF_MODE
  description: "Are the ABCD FF BELs latches or FFs?"
  default: FF
  siteTypes:
  - SLICEL
  - SLICEM
  states:
  - state: FF
    description: "ABCD FF BELs are FF"
  - state: LATCH
    description: "ABCD FF BELs are latches"
- tag: EFGH_RESET_TYPE
  description: "Are the EFGH FF resets synchronous or asynchronous?"
  default: ASYNC
  siteTypes:
  - SLICEL
  - SLICEM
  states:
  - state: SYNC
    description: "Resets are synchronous"
  - state: ASYNC
    description: "Resets are asynchronous"
- tag: EFGH_FF_MODE
  description: "Are the EFGH FF BELs latches or FFs?"
  default: FF
  siteTypes:
  - SLICEL
  - SLICEM
  states:
  - state: FF
    description: "EFGH FF BELs are FF"
  - state: LATCH
    description: "EFGH FF BELs are latches"
- tag: HLUT_STATE
  siteTypes: [SLICEM]
  description: "State of the H[56]LUT BEL"
  default: LUT
  states:
  - state: LUT
    description: "The H5LUT/H6LUT BEL is operating as a LUT"
  - state: RAM32
    description: "RAM32 type BELs can be placed at H5LUT and H6LUT"
  - state: RAM64
    description: "RAM64 type BELs can be placed at H6LUT"
  - state: SRL16
    description: "SRL16 type BELs can be placed at H5LUT and D6LUT"
  - state: SRL32
    description: "SRL32 type BELs can be placed at H6LUT"
- tag: GLUT_STATE
  siteTypes: [SLICEM]
  description: "State of the G[56]LUT BEL"
  default: LUT
  states:
  - state: LUT
    description: "The G5LUT/G6LUT BEL is operating as a LUT"
  - state: RAM32
    description: "RAM32 type BELs can be placed at G5LUT and G6LUT"
  - state: RAM64
    description: "RAM64 type BELs can be placed at G6LUT"
  - state: SRL16
    description: "SRL16 type BELs can be placed at G5LUT and G6LUT"
  - state: SRL32
    description: "SRL32 type BELs can be placed at G6LUT"
- tag: FLUT_STATE
  siteTypes: [SLICEM]
  description: "State of the F[56]LUT BEL"
  default: LUT
  states:
  - state: LUT
    description: "The F5LUT/F6LUT BEL is operating as a LUT"
  - state: RAM32
    description: "RAM32 type BELs can be placed at F5LUT and F6LUT"
  - state: RAM64
    description: "RAM64 type BELs can be placed at F6LUT"
  - state: SRL16
    description: "SRL16 type BELs can be placed at F5LUT and F6LUT"
  - state: SRL32
    description: "SRL32 type BELs can be placed at F6LUT"
- tag: ELUT_STATE
  siteTypes: [SLICEM]
  description: "State of the E[56]LUT BEL"
  default: LUT
  states:
  - state: LUT
    description: "The E5LUT/E6LUT BEL is operating as a LUT"
  - state: RAM32
    description: "RAM32 type BELs can be placed at E5LUT and E6LUT"
  - state: RAM64
    description: "RAM64 type BELs can be placed at E6LUT"
  - state: SRL16
    description: "SRL16 type BELs can be placed at E5LUT and E6LUT"
  - state: SRL32
    description: "SRL32 type BELs can be placed at E6LUT"
- tag: DLUT_STATE
  siteTypes: [SLICEM]
  description: "State of the D[56]LUT BEL"
  default: LUT
  states:
  - state: LUT
    description: "The D5LUT/D6LUT BEL is operating as a LUT"
  - state: RAM32
    description: "RAM32 type BELs can be placed at D5LUT and D6LUT"
  - state: RAM64
    description: "RAM64 type BELs can be placed at D6LUT"
  - state: SRL16
    description: "SRL16 type BELs can be placed at D5LUT and D6LUT"
  - state: SRL32
    description: "SRL32 type BELs can be placed at D6LUT"
- tag: CLUT_STATE
  siteTypes: [SLICEM]
  description: "State of the C[56]LUT BEL"
  default: LUT
  states:
  - state: LUT
    description: "The C5LUT/C6LUT BEL is operating as a LUT"
  - state: RAM32
    description: "RAM32 type BELs can be placed at C5LUT and C6LUT"
  - state: RAM64
    description: "RAM64 type BELs can be placed at C6LUT"
  - state: SRL16
    description: "SRL16 type BELs can be placed at C5LUT and C6LUT"
  - state: SRL32
    description: "SRL32 type BELs can be placed at C6LUT"
- tag: BLUT_STATE
  siteTypes: [SLICEM]
  description: "State of the B[56]LUT BEL"
  default: LUT
  states:
  - state: LUT
    description: "The B5LUT/B6LUT BEL is operating as a LUT"
  - state: RAM32
    description: "RAM32 type BELs can be placed at B5LUT and B6LUT"
  - state: RAM64
    description: "RAM64 type BELs can be placed at B6LUT"
  - state: SRL16
    description: "SRL16 type BELs can be placed at B5LUT and B6LUT"
  - state: SRL32
    description: "SRL32 type BELs can be placed at B6LUT"
- tag: ALUT_STATE
  siteTypes: [SLICEM]
  description: "State of the A[56]LUT BEL"
  default: LUT
  states:
  - state: LUT
    description: "The A5LUT/A6LUT BEL is operating as a LUT"
  - state: RAM32
    description: "RAM32 type BELs can be placed at A5LUT and A6LUT"
  - state: RAM64
    description: "RAM64 type BELs can be placed at A6LUT"
  - state: SRL16
    description: "SRL16 type BELs can be placed at A5LUT and A6LUT"
  - state: SRL32
    description: "SRL32 type BELs can be placed at A6LUT"
routedTags: []
cellConstraints:
- cell: RAMB18E2
  locations:
   - siteTypes:
      - RAMB180
      - RAMB181
     bel: { anyBel: null }
     implies:
       - tag: BRAM_MODE
         state: 2xRAMB18
- cell: FIFO18E2
  locations:
    - siteTypes:
       - FIFO18_0
      bel:
        name: BELI_FIFO18E2_FIFO18E2
      implies:
        - tag: BRAM_MODE
          state: 2xRAMB18
- cell: RAMB36E2
  locations:
   - siteTypes:
      - RAMB36
     bel:
       name: RAMB36E2
     implies:
       - tag: BRAM_MODE
         state: RAMB36
- cell: FIFO36E2
  locations:
    - siteTypes:
       - FIFO36
      bel:
        name: FIFO36E2
      implies:
        - tag: BRAM_MODE
          state: RAMB36
- cells:
  - FDRE
  - FDSE
  locations:
    - siteTypes:
       - SLICEL
       - SLICEM
      bel:
        bels: ["AFF", "AFF2", "BFF", "BFF2", "CFF", "CFF2", "DFF", "DFF2"]
      implies:
        - { tag: ABCD_RESET_TYPE, state: SYNC }
        - { tag: ABCD_FF_MODE, state: FF }
- cells:
  - FDRE
  - FDSE
  locations:
    - siteTypes:
       - SLICEL
       - SLICEM
      bel:
        bels: ["EFF", "EFF2", "FFF", "FFF2", "GFF", "GFF2", "HFF", "HFF2"]
      implies:
        - { tag: EFGH_RESET_TYPE, state: SYNC }
        - { tag: EFGH_FF_MODE, state: FF }
- cells:
  - FDPE
  - FDCE
  locations:
    - siteTypes:
       - SLICEL
       - SLICEM
      bel:
        bels: ["AFF", "AFF2", "BFF", "BFF2", "CFF", "CFF2", "DFF", "DFF2"]
      implies:
        - { tag: ABCD_RESET_TYPE, state: ASYNC }
        - { tag: ABCD_FF_MODE, state: FF }
- cells:
  - FDPE
  - FDCE
  locations:
    - siteTypes:
       - SLICEL
       - SLICEM
      bel:
        bels: ["EFF", "EFF2", "FFF", "FFF2", "GFF", "GFF2", "HFF", "HFF2"]
      implies:
        - { tag: EFGH_RESET_TYPE, state: ASYNC }
        - { tag: EFGH_FF_MODE, state: FF }
- cells:
  - LDPE
  - LDCE
  locations:
    - siteTypes:
        - SLICEL
        - SLICEM
      bel:
        bels: ["AFF", "AFF2", "BFF", "BFF2", "CFF", "CFF2", "DFF", "DFF2"]
      implies:
        - { tag: ABCD_FF_MODE, state: FF }
- cells:
  - LDPE
  - LDCE
  locations:
    - siteTypes:
        - SLICEL
        - SLICEM
      bel:
        bels: ["EFF", "EFF2", "FFF", "FFF2", "GFF", "GFF2", "HFF", "HFF2"]
      implies:
        - { tag: EFGH_FF_MODE, state: FF }
- cells:
  - RAMD32
  - RAMD64E
  - RAMS32
  - RAMS64E
  - RAMS64E1
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
        - A5LUT
        - A6LUT
        - B5LUT
        - B6LUT
        - C5LUT
        - C6LUT
        - D5LUT
        - D6LUT
        - E5LUT
        - E6LUT
        - F5LUT
        - F6LUT
        - G5LUT
        - G6LUT
      requires:
      - tag: HLUT_STATE
        states:
          - RAM32
          - RAM64
- cells:
  - RAMD32
  - RAMS32
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - H5LUT
          - H6LUT
      implies:
      - { tag: HLUT_STATE, state: RAM32 }
- cells:
  - RAMD64E
  - RAMS64E
  - RAMS64E1
  locations:
    - siteTypes: [SLICEM]
      bel: {name: H6LUT}
      implies:
      - { tag: HLUT_STATE, state: RAM64 }
- cells:
  - SRL16E
  - SRLC16E
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - H5LUT
          - H6LUT
      implies:
      - { tag: HLUT_STATE, state: SRL16 }
- cells:
  - SRLC32E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: H6LUT}
      implies:
      - { tag: HLUT_STATE, state: SRL32 }
- cells:
  - LUT1
  - LUT2
  - LUT3
  - LUT4
  - LUT5
  - LUT6
  - INV
  - BUF
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - H5LUT
          - H6LUT
      implies:
      - { tag: HLUT_STATE, state: LUT }
- cells:
  - RAMD32
  - RAMS32
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - D5LUT
          - D6LUT
      implies:
      - { tag: DLUT_STATE, state: RAM32 }
- cells:
  - RAMD64E
  - RAMS64E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: D6LUT}
      implies:
      - { tag: DLUT_STATE, state: RAM64 }
- cells:
  - SRL16E
  - SRLC16E
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - D5LUT
          - D6LUT
      implies:
      - { tag: DLUT_STATE, state: SRL16 }
- cells:
  - SRLC32E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: D6LUT}
      implies:
      - { tag: DLUT_STATE, state: SRL32 }
- cells:
  - LUT1
  - LUT2
  - LUT3
  - LUT4
  - LUT5
  - LUT6
  - INV
  - BUF
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - D5LUT
          - D6LUT
      implies:
      - { tag: DLUT_STATE, state: LUT }
- cells:
  - RAMD32
  - RAMS32
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - E5LUT
          - E6LUT
      implies:
      - { tag: ELUT_STATE, state: RAM32 }
- cells:
  - RAMD64E
  - RAMS64E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: E6LUT}
      implies:
      - { tag: ELUT_STATE, state: RAM64 }
- cells:
  - SRL16E
  - SRLC16E
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - E5LUT
          - E6LUT
      implies:
      - { tag: ELUT_STATE, state: SRL16 }
- cells:
  - SRLC32E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: E6LUT}
      implies:
      - { tag: ELUT_STATE, state: SRL32 }
- cells:
  - LUT1
  - LUT2
  - LUT3
  - LUT4
  - LUT5
  - LUT6
  - INV
  - BUF
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - E5LUT
          - E6LUT
      implies:
      - { tag: ELUT_STATE, state: LUT }
- cells:
  - RAMD32
  - RAMS32
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - F5LUT
          - F6LUT
      implies:
      - { tag: FLUT_STATE, state: RAM32 }
- cells:
  - RAMD64E
  - RAMS64E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: F6LUT}
      implies:
      - { tag: FLUT_STATE, state: RAM64 }
- cells:
  - SRL16E
  - SRLC16E
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - F5LUT
          - F6LUT
      implies:
      - { tag: FLUT_STATE, state: SRL16 }
- cells:
  - SRLC32E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: F6LUT}
      implies:
      - { tag: FLUT_STATE, state: SRL32 }
- cells:
  - LUT1
  - LUT2
  - LUT3
  - LUT4
  - LUT5
  - LUT6
  - INV
  - BUF
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - F5LUT
          - F6LUT
      implies:
      - { tag: FLUT_STATE, state: LUT }
- cells:
  - RAMD32
  - RAMS32
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - G5LUT
          - G6LUT
      implies:
      - { tag: GLUT_STATE, state: RAM32 }
- cells:
  - RAMD64E
  - RAMS64E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: G6LUT}
      implies:
      - { tag: GLUT_STATE, state: RAM64 }
- cells:
  - SRL16E
  - SRLC16E
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - G5LUT
          - G6LUT
      implies:
      - { tag: GLUT_STATE, state: SRL16 }
- cells:
  - SRLC32E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: G6LUT}
      implies:
      - { tag: GLUT_STATE, state: SRL32 }
- cells:
  - LUT1
  - LUT2
  - LUT3
  - LUT4
  - LUT5
  - LUT6
  - INV
  - BUF
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - G5LUT
          - G6LUT
      implies:
      - { tag: GLUT_STATE, state: LUT }
- cells:
  - RAMD32
  - RAMS32
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - C5LUT
          - C6LUT
      implies:
      - { tag: CLUT_STATE, state: RAM32 }
- cells:
  - RAMD64E
  - RAMS64E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: C6LUT}
      implies:
      - { tag: CLUT_STATE, state: RAM64 }
- cells:
  - SRL16E
  - SRLC16E
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - C5LUT
          - C6LUT
      implies:
      - { tag: CLUT_STATE, state: SRL16 }
- cells:
  - SRLC32E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: C6LUT}
      implies:
      - { tag: CLUT_STATE, state: SRL32 }
- cells:
  - LUT1
  - LUT2
  - LUT3
  - LUT4
  - LUT5
  - LUT6
  - INV
  - BUF
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - C5LUT
          - C6LUT
      implies:
      - { tag: CLUT_STATE, state: LUT }
- cells:
  - RAMD32
  - RAMS32
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - B5LUT
          - B6LUT
      implies:
      - { tag: BLUT_STATE, state: RAM32 }
- cells:
  - RAMD64E
  - RAMS64E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: B6LUT}
      implies:
      - { tag: BLUT_STATE, state: RAM64 }
- cells:
  - SRL16E
  - SRLC16E
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - B5LUT
          - B6LUT
      implies:
      - { tag: BLUT_STATE, state: SRL16 }
- cells:
  - SRLC32E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: B6LUT}
      implies:
      - { tag: BLUT_STATE, state: SRL32 }
- cells:
  - LUT1
  - LUT2
  - LUT3
  - LUT4
  - LUT5
  - LUT6
  - INV
  - BUF
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - B5LUT
          - B6LUT
      implies:
      - { tag: BLUT_STATE, state: LUT }
- cells:
  - RAMD32
  - RAMS32
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - A5LUT
          - A6LUT
      implies:
      - { tag: ALUT_STATE, state: RAM32 }
- cells:
  - RAMD64E
  - RAMS64E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: A6LUT}
      implies:
      - { tag: ALUT_STATE, state: RAM64 }
- cells:
  - SRL16E
  - SRLC16E
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - A5LUT
          - A6LUT
      implies:
      - { tag: ALUT_STATE, state: SRL16 }
- cells:
  - SRLC32E
  locations:
    - siteTypes: [SLICEM]
      bel: {name: A6LUT}
      implies:
      - { tag: ALUT_STATE, state: SRL32 }
- cells:
  - LUT1
  - LUT2
  - LUT3
  - LUT4
  - LUT5
  - LUT6
  - INV
  - BUF
  locations:
    - siteTypes: [SLICEM]
      bel:
        bels:
          - A5LUT
          - A6LUT
      implies:
      - { tag: ALUT_STATE, state: LUT }
