// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
# AES register template
{
  name: "aes",
  clock_primary: "clk_fixed",
  bus_device: "tlul",
  regwidth: "32",

  registers: [
##############################################################################
# initial key registers
    { multireg: {
      name: "KEY",
      desc: '''
        Initial Key Register. Loaded into the internal Full Key register upon
        starting encryption/decryption of the next block. Can only be updated
        when the AES unit is idle.
      '''
      count: 8,
      cname: "KEY",
      swaccess: "wo",
      hwaccess: "hro",
      hwqe:     "true",
      fields: [
        { bits: "31:0", name: "key", desc: "Initial Key" }
      ],
      }
    },
##############################################################################
# input data registers
    { multireg: {
      name: "DATA_IN",
      desc: '''
        Input Data Register. Loaded into the internal State register upon
        starting encryption/decryption of the next block. After that, the processor
        can update the Input Data Register.
      '''
      count: 4,
      cname: "DATA_IN",
      swaccess: "wo",
      hwaccess: "hro",
      hwqe:     "true",
      fields: [
        { bits: "31:0", name: "data_in", desc: "Input Data" }
      ],
      }
    },
##############################################################################
# output data registers
    { multireg: {
      name: "DATA_OUT",
      desc: '''
        Output Data Register. Holds the output data produced by the AES unit
        during the last encryption/decryption operation. If FORCE_DATA_OVERWRITE=0
        (see Control Register), the AES unit is stalled when the previous output
        data has not yet been read and is about to be overwritten.
      '''
      count: 4,
      cname: "DATA_OUT",
      swaccess: "ro",
      hwaccess: "hrw",
      hwext:    "true",
      hwre:     "true",
      fields: [
        { bits: "31:0", name: "data_out", desc: "Output Data" }
      ],
      }
    },
##############################################################################
# control and status registers
  { name: "CTRL",
    desc: "Control Register",
    swaccess: "rw",
    hwaccess: "hro",
    hwqe: "true",
    fields: [
      { bits: "0",
        name: "MODE",
        desc:  '''
          Select encryption(0) or decryption(1) operating mode of AES unit.
        '''
      }
      { bits: "3:1",
        name: "KEY_LEN",
        resval: "1",
        hwaccess: "hrw",
        desc:  '''
          3-bit one-hot field to select AES key length: 128 bit (3’b001), 192 bit (3’b010)
          or 256 bit (3’b100). Invalid input values, i.e., value with multiple bits set,
          value 3’b000, and value 3’b010 in case 192-bit keys are not supported (because
          disabled at compile time) are mapped to 3’b001.
        '''
      }
      { bits: "4",
        name: "MANUAL_START_TRIGGER",
        desc:  '''
          Controls whether the AES unit should automatically start to encrypt/decrypt
          when it receives new input data (0) or wait for separate trigger signal
          before starting (1) (see Trigger Register).
        '''
      }
      { bits: "5",
        name: "FORCE_DATA_OVERWRITE",
        desc:  '''
          Control whether the AES unit is stalled during the last
          encryption/decryption cycle if the previous output data has not yet been
          read (0) or finishes the operation and overwrites the previous output data (1).
        '''
      }
    ]
  },
  { name: "TRIGGER",
    desc: "Trigger Register",
    swaccess: "rw",
    hwaccess: "hrw",
    fields: [
      { bits: "0",
        name: "START",
        desc:  '''
          Keep AES unit paused (0) or trigger the encryption/decryption of one data block (1).
        '''
      }
    ]
  },
  { name: "STATUS",
    desc: "Status Register",
    swaccess: "ro",
    hwaccess: "hwo",
    fields: [
      { bits: "0",
        name: "IDLE",
        desc:  '''
          The AES unit is idle (0) or busy (1).
        '''
      }
      { bits: "1",
        name: "STALL",
        desc:  '''
          The AES unit is not stalled (0) or stalled (1) because there is previous
          output data that must be read by the processor before the AES unit can
          overwrite this data.
        '''
      }
      { bits: "2",
        name: "OUTPUT_VALID",
        desc:  '''
          The AES unit has no valid output (0) or has valid output data (1).
        '''
      }
      { bits: "3",
        name: "INPUT_READY",
        resval: "1",
        desc:  '''
          The AES unit is ready (1) to receive new data input via the DATA_IN registers or
          the present values in the DATA_IN registers have not yet been loaded into the
          module (0).
        '''
      }
    ]
  },
  ],
}
