// 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",
  human_name:         "AES Accelerator",
  one_line_desc:      "AES encryption and decryption engine with SCA and FI countermeasures",
  one_paragraph_desc: '''
  [Advanced Encryption Standard (AES)][nist-aes] is the primary symmetric encryption and decryption mechanism used in OpenTitan protocols.
  AES Accelerator supports encryption/decryption using AES-128/192/256 in ECB, CBC, CFB, OFB, and CTR block cipher modes.
  Its cipher core uses first-order domain-oriented masking (DOM) to deter side-channel analysis (SCA).
  To save area, the masking can optionally be disabled using a compile-time Verilog parameter.
  In addition, AES Accelerator features several countermeasures to deter fault injection (FI) attacks on the control path.

  [nist-aes]: https://www.nist.gov/publications/advanced-encryption-standard-aes
  '''
  design_spec:        "../doc",
  dv_doc:             "../doc/dv",
  hw_checklist:       "../doc/checklist",
  sw_checklist:       "/sw/device/lib/dif/dif_aes",
  version:            "1.0",
  life_stage:         "L1",
  design_stage:       "D2S",
  verification_stage: "V2S",
  dif_stage:          "S2",
  clocking: [
    {clock: "clk_i", reset: "rst_ni", idle: "idle_o", primary: true},
    {clock: "clk_edn_i", reset: "rst_edn_ni", idle: "idle_o"}
  ]
  bus_interfaces: [
    { protocol: "tlul", direction: "device" }
  ],

  ////////////////
  // Parameters //
  ////////////////

  param_list: [
    # Regular parameters
    { name:    "AES192Enable",
      type:    "bit",
      default: "1'b1",
      desc:    '''
        Disable (0) or enable (1) support for 192-bit key lengths (AES-192).
      '''
      local:   "false",
      expose:  "false"
    },
    { name:    "SecMasking",
      type:    "bit",
      default: "1'b1",
      desc:    '''
        Disable (0) or enable (1) first-order masking of the AES cipher core.
        Masking requires the use of a masked S-Box, see SecSBoxImpl parameter.
      '''
      local:   "false",
      expose:  "true"
    },
    { name:    "SecSBoxImpl",
      type:    "aes_pkg::sbox_impl_e",
      default: "aes_pkg::SBoxImplDom",
      desc:    '''
        Selection of the S-Box implementation. See aes_pkg.sv.
      '''
      local:   "false",
      expose:  "true"
    },
    { name:    "SecStartTriggerDelay",
      type:    "int unsigned",
      default: "0",
      desc:    '''
        Manual start trigger delay, useful for SCA measurements.
        A value of e.g. 40 allows the processor to go into sleep before AES starts operation.
      '''
      local:   "false",
      expose:  "true"
    },
    { name:    "SecAllowForcingMasks",
      type:    "bit",
      default: "1'b0",
      desc:    '''
        Forbid (0) or allow (1) forcing the masking PRNG output to a constant value via FORCE_MASKS bit in the Auxiliary Control Register.
        Useful for SCA measurements.
        Meaningful only if masking is enabled.
      '''
      local:   "false",
      expose:  "true"
    },
    { name:    "SecSkipPRNGReseeding",
      type:    "bit",
      default: "1'b0",
      desc:    '''
        Perform (0) or skip (1) PRNG reseeding requests, useful for SCA measurements only.
        The current SCA setup doesn't provide sufficient resources to implement the infrastructure required for PRNG reseeding (CSRNG, EDN).
        To enable SCA resistance evaluations, we need to skip reseeding requests on the SCA platform.
      '''
      local:   "false",
      expose:  "true"
    },
    # Random netlist constants
    { name:    "RndCnstClearingLfsrSeed",
      type:    "aes_pkg::clearing_lfsr_seed_t",
      desc:    '''
        Default seed of the PRNG used for register clearing.
      '''
      randcount: "64",
      randtype:  "data"
    },
    { name:    "RndCnstClearingLfsrPerm",
      type:    "aes_pkg::clearing_lfsr_perm_t",
      desc:    '''
        Permutation applied to the LFSR of the PRNG used for clearing.
      '''
      randcount: "64",
      randtype:  "perm"
    },
    { name:    "RndCnstClearingSharePerm",
      type:    "aes_pkg::clearing_lfsr_perm_t",
      desc:    '''
        Permutation applied to the clearing PRNG output for clearing the second share of registers.
      '''
      randcount: "64",
      randtype:  "perm"
    },
    { name:    "RndCnstMaskingLfsrSeed",
      type:    "aes_pkg::masking_lfsr_seed_t",
      desc:    '''
        Default seed of the PRNG used for masking.
      '''
      randcount: "160",
      randtype:  "data"
    },
    { name:    "RndCnstMaskingLfsrPerm",
      type:    "aes_pkg::masking_lfsr_perm_t",
      desc:    '''
        Permutation applied to the concatenated LFSRs of the PRNG used for masking.
      '''
      randcount: "160",
      randtype:  "perm"
    },
    # Note: All parameters below are local, they are not actually configurable.
    # Selecting values different from the default values below might cause undefined behavior.
    { name:    "NumRegsKey",
      type:    "int",
      default: "8",
      desc:    "Number registers for key",
      local:   "true"
    },
    { name:    "NumRegsIv",
      type:    "int",
      default: "4",
      desc:    "Number registers for initialization vector",
      local:   "true"
    },
    { name:    "NumRegsData",
      type:    "int",
      default: "4",
      desc:    "Number registers for input and output data",
      local:   "true"
    }
  ],

  /////////////////////////////
  // Intermodule Connections //
  /////////////////////////////

  inter_signal_list: [
    { name:    "idle",
      type:    "uni",
      act:     "req",
      package: "prim_mubi_pkg",
      struct:  "mubi4",
      width:   "1"
    },
    { struct:  "lc_tx"
      type:    "uni"
      name:    "lc_escalate_en"
      act:     "rcv"
      default: "lc_ctrl_pkg::Off"
      package: "lc_ctrl_pkg"
    }
    { struct:  "edn"
      type:    "req_rsp"
      name:    "edn"
      act:     "req"
      package: "edn_pkg"
    }
    { struct:  "hw_key_req"
      type:    "uni"
      name:    "keymgr_key"
      act:     "rcv"
      package: "keymgr_pkg"
    }
  ],

  ///////////////////////////
  // Interrupts and Alerts //
  ///////////////////////////

  alert_list: [
    //{ name: "informative",
    //  desc: '''
    //    The informative alert can currently not be triggered.
    //    The AES unit recovers from such a condition automatically.
    //    No further action needs to be taken but this should be monitored by the system.
    //  '''
    //}
    { name: "recov_ctrl_update_err",
      desc: '''
        This recoverable alert is triggered upon detecting an update error in the shadowed Control Register.
        The content of the Control Register is not modified (See Control Register).
        The AES unit can be recovered from such a condition by restarting the AES operation, i.e., by re-writing the Control Register.
        This should be monitored by the system.
      '''
    }
    { name: "fatal_fault",
      desc: '''
        This fatal alert is triggered upon detecting a fatal fault inside the AES unit.
        Examples for such faults include
        i) storage errors in the shadowed Control Register,
        ii) any internal FSM entering an invalid state,
        iii) any sparsely encoded signal taking on an invalid value,
        iv) errors in the internal round counter,
        v) escalations triggered by the life cycle controller, and
        vi) fatal integrity failures on the TL-UL bus.
        The AES unit cannot recover from such an error and needs to be reset.
      '''
    }
  ],

  /////////////////////
  // Countermeasures //
  /////////////////////

  countermeasures: [
    { name: "BUS.INTEGRITY",
      desc: "End-to-end bus integrity scheme."
    }
    { name: "LC_ESCALATE_EN.INTERSIG.MUBI",
      desc: "The global escalation input signal from life cycle is multibit encoded."
    }
    { name: "MAIN.CONFIG.SHADOW",
      desc: "Main control register shadowed."
    }
    { name: "MAIN.CONFIG.SPARSE",
      desc: "Critical fields in main control register one-hot encoded."
    }
    { name: "AUX.CONFIG.SHADOW",
      desc: "Auxiliary control register shadowed."
    }
    { name: "AUX.CONFIG.REGWEN",
      desc: "Auxiliary control register can be locked until reset."
    }
    { name: "KEY.SIDELOAD",
      desc: "The key can be loaded from a key manager via sideload interface without exposing it to software."
    }
    { name: "KEY.SW_UNREADABLE",
      desc: "Key registers are not readable by software."
    }
    { name: "DATA_REG.SW_UNREADABLE",
      desc: "Data input and internal state registers are not readable by software."
    }
    { name: "KEY.SEC_WIPE",
      desc: "Key registers are cleared with pseudo-random data."
    }
    { name: "IV.CONFIG.SEC_WIPE",
      desc: "IV registers are cleared with pseudo-random data."
    }
    { name: "DATA_REG.SEC_WIPE",
      desc: "Data input/output and internal state registers are cleared with pseudo-random data."
    }
    { name: "DATA_REG.KEY.SCA",
      desc: '''
        Internal state register cleared with pseudo-random data at the end of the last round.
        This uses the same mechanism as KEY.SEC_WIPE and is active independent of KEY.MASKING.
      '''
    }
    { name: "KEY.MASKING",
      desc: '''
        1st-order domain-oriented masking of the cipher core including data path and key expand.
        Can optionally be disabled via compile-time Verilog parameter for instantiations that don't need SCA hardening.
      '''
    }
    { name: "MAIN.FSM.SPARSE",
      desc: "The main control FSM uses a sparse state encoding."
    }
    { name: "MAIN.FSM.REDUN",
      desc: "The main control FSM uses multiple, independent logic rails."
    }
    { name: "CIPHER.FSM.SPARSE",
      desc: "The cipher core FSM uses a sparse state encoding."
    }
    { name: "CIPHER.FSM.REDUN",
      desc: "The cipher core FSM uses multiple, independent logic rails."
    }
    { name: "CIPHER.CTR.REDUN",
      desc: "The AES round counter inside the cipher core FSM is protected with multiple, independent logic rails."
    }
    { name: "CTR.FSM.SPARSE",
      desc: "The CTR mode FSM uses a sparse state encoding."
    }
    { name: "CTR.FSM.REDUN",
      desc: "The CTR mode FSM uses multiple, independent logic rails."
    }
    { name: "CTRL.SPARSE",
      desc: "Critical control signals such as handshake and MUX control signals use sparse encodings."
    }
    { name: "MAIN.FSM.GLOBAL_ESC",
      desc: "The main control FSM moves to a terminal error state upon global escalation."
    }
    { name: "MAIN.FSM.LOCAL_ESC",
      desc: '''
        The main control FSM moves to a terminal error state upon local escalation.
        Can be triggered by MAIN.FSM.SPARSE, MAIN.FSM.REDUN, CTRL.SPARSE, as well as CIPHER.FSM.LOCAL_ESC, CTR.FSM.LOCAL_ESC.
      '''
    }
    { name: "CIPHER.FSM.LOCAL_ESC",
      desc: '''
        The cipher core FSM moves to a terminal error state upon local escalation.
        Can be triggered by CIPHER.FSM.SPARSE, CIPHER.FSM.REDUN, CIPHER.CTR.REDUN, CTRL.SPARSE as well as MAIN.FSM.LOCAL_ESC.
      '''
    }
    { name: "CTR.FSM.LOCAL_ESC",
      desc: '''
        The CTR mode FSM moves to a terminal error state upon local escalation.
        Can be triggered by CTR.FSM.SPARSE, CTR.FSM.REDUN, and CTRL.SPARSE.
      '''
    }
    { name: "DATA_REG.LOCAL_ESC",
      desc: "Upon local escalation, the module doesn't output intermediate state."
    }
    // This is work in progress.
    // Datapath FI hardening hasn't been a strict requirement but with the current cipher core architecture it can be done at relatively low area/performance overhead and therefore is a nice-to-have.
    //{ name: "DATA_REG.INTEGRITY",
    //  desc: "Datapath FI hardening."
    //}
  ]

  ///////////////
  // Registers //
  ///////////////

  regwidth: "32",
  registers: [
##############################################################################
# initial key registers
    { multireg: {
      name: "KEY_SHARE0",
      resval: "0",
      desc: '''
        Initial Key Registers Share 0.

        The actual initial key corresponds to Initial Key Registers Share 0 XORed with Initial Key Registers Share 1.
        Loaded into the internal Full Key register upon starting encryption/decryption of the next block.
        All key registers (Share 0 and Share 1) must be written at least once when the key is changed, regardless of key length (write random data for unused bits).
        The order in which the registers are updated does not matter.
        Can only be updated when the AES unit is idle.
        If the AES unit is non-idle, writes to these registers are ignored.
        Upon reset, these registers are cleared with pseudo-random data.
      '''
      count: "NumRegsKey",
      cname: "KEY_SHARE0",
      swaccess: "wo",
      hwaccess: "hrw",
      hwext:    "true",
      hwqe:     "true",
      fields: [
        { bits: "31:0", name: "key_share0", desc: "Initial Key Share 0" }
      ],
      tags: [// Updates based on writes to other regs.
             // These registers are reset to 0, but the reset also triggers internal operations that clear these registers with pseudo-random data shortly afterwards (See Trigger Register).
             "excl:CsrHwResetTest:CsrExclCheck"]
      }
    },
    { multireg: {
      name: "KEY_SHARE1",
      resval: "0",
      desc: '''
        Initial Key Registers Share 1.

        The actual initial key corresponds to Initial Key Registers Share 0 XORed with Initial Key Registers Share 1.
        Loaded into the internal Full Key register upon starting encryption/decryption of the next block.
        All key registers (Share 0 and Share 1) must be written at least once when the key is changed, regardless of key length (write random data for unused bits).
        The order in which the registers are updated does not matter.
        Can only be updated when the AES unit is idle.
        If the AES unit is non-idle, writes to these registers are ignored.
        Upon reset, these registers are cleared with pseudo-random data.
      '''
      count: "NumRegsKey",
      cname: "KEY_SHARE1",
      swaccess: "wo",
      hwaccess: "hrw",
      hwext:    "true",
      hwqe:     "true",
      fields: [
        { bits: "31:0", name: "key_share1", desc: "Initial Key Share 1" }
      ],
      tags: [// Updates based on writes to other regs.
             // These registers are reset to 0, but the reset also triggers internal operations that clear these registers with pseudo-random data shortly afterwards (See Trigger Register).
             "excl:CsrHwResetTest:CsrExclCheck"]
      }
    },
##############################################################################
# initialization vector registers
    { multireg: {
      name: "IV",
      resval: "0",
      desc: '''
        Initialization Vector Registers.

        The initialization vector (IV) or initial counter value must be written to these registers when starting a new message in CBC or CTR mode (see Control Register), respectively.
        In CBC and CTR modes, the AES unit does not start encryption/decryption with a partially updated IV.
        Each register has to be written at least once.
        The order in which the registers are written does not matter.
        If the AES unit is non-idle, writes to these registers are ignored.
        Whenever starting a new message, the corresponding IV value must be provided by the processor.
        Once started, the AES unit automatically updates the contents of these registers.
        In ECB mode, the IV registers are not used and do not need to be configured.
        Upon reset, these registers are cleared with pseudo-random data.
      '''
      count: "NumRegsIv",
      cname: "IV",
      swaccess: "rw",
      hwaccess: "hrw",
      hwext:    "true",
      hwqe:     "true",
      fields: [
        { bits: "31:0", name: "iv", desc: "Initialization Vector" }
      ],
      tags: [// Updated by the HW.
             // Updates based on writes to other regs.
             // These registers are reset to 0, but the reset also triggers internal operations that clear these registers with pseudo-random data shortly afterwards (See Trigger Register).
             "excl:CsrAllTests:CsrExclCheck"]
      }
    },
##############################################################################
# input data registers
    { multireg: {
      name: "DATA_IN",
      resval: "0",
      desc: '''
        Input Data Registers.

        If MANUAL_OPERATION=0 (see Control Register), the AES unit automatically starts encryption/decryption after all Input Data registers have been written.
        Each register has to be written at least once.
        The order in which the registers are written does not matter.
        Loaded into the internal State register upon starting encryption/decryption of the next block.
        After that, the processor can update the Input Data registers (See INPUT_READY field of Status Register).
        Upon reset, these registers are cleared with pseudo-random data.
      '''
      count: "NumRegsData",
      cname: "DATA_IN",
      swaccess: "wo",
      hwaccess: "hrw",
      hwqe:     "true",
      fields: [
        { bits: "31:0", name: "data_in", desc: "Input Data" }
      ],
      tags: [// Updates based on writes to other regs.
             // These registers are reset to 0, but the reset also triggers internal operations that clear these registers with pseudo-random data shortly afterwards (See Trigger Register).
             "excl:CsrHwResetTest:CsrExclCheck"]
      }
    },
##############################################################################
# output data registers
    { multireg: {
      name: "DATA_OUT",
      resval: "0",
      desc: '''
        Output Data Register.

        Holds the output data produced by the AES unit during the last encryption/decryption operation.
        If MANUAL_OPERATION=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.
        Each register has to be read at least once.
        The order in which the registers are read does not matter.
        Upon reset, these registers are cleared with pseudo-random data.
      '''
      count: "NumRegsData",
      cname: "DATA_OUT",
      swaccess: "ro",
      hwaccess: "hrw",
      hwext:    "true",
      hwre:     "true",
      fields: [
        { bits: "31:0", name: "data_out", desc: "Output Data" }
      ]
      tags: [// Updated by the HW.
             // Updates based on writes to other regs.
             // These registers are reset to 0, but the reset also triggers internal operations that clear these registers with pseudo-random data shortly afterwards (See Trigger Register).
             // Exclude from init and write-read checks.
             "excl:CsrAllTests:CsrExclCheck"]
      }
    },
##############################################################################
# control and status registers
  { name: "CTRL_SHADOWED",
    desc: '''
      Control Register.

      Can only be updated when the AES unit is idle.
      If the AES unit is non-idle, writes to this register are ignored.
      This register is shadowed, meaning two subsequent write operations are required to change its content.
      If the two write operations try to set a different value, a recoverable alert is triggered (See Status Register).
      A read operation clears the internal phase tracking: The next write operation is always considered a first write operation of an update sequence.
      Any write operation to this register will clear the status tracking required for automatic mode (See MANUAL_OPERATION field).
      A write to the Control Register is considered the start of a new message.
      Hence, software needs to provide new key, IV and input data afterwards.
    '''
    swaccess: "rw",
    hwaccess: "hrw",
    hwext:    "true",
    hwqe:     "true",
    shadowed: "true",
    update_err_alert: "recov_ctrl_update_err",
    storage_err_alert: "fatal_fault",
    fields: [
      { bits: "1:0",
        name: "OPERATION",
        resval: "0x1",
        hwaccess: "hrw",
        desc:  '''
          2-bit one-hot field to select the operation of AES unit.
          Invalid input values, i.e., values with multiple bits set and value 2'b00, are mapped to AES_ENC (2'b01).
        '''
        enum: [
          { value: "1",
            name: "AES_ENC",
            desc: '''
              2'b01: Encryption.
              Invalid input values, i.e., 2'b00 and 2'b11, are mapped to AES_ENC.
            '''
          },
          { value: "2",
            name: "AES_DEC",
            desc: '''
              2'b10: Decryption.
            '''
          },
        ]
        tags: ["shadowed_reg_path:u_aes_core.u_ctrl_reg_shadowed.u_ctrl_reg_shadowed_operation"]
      }
      { bits: "7:2",
        name: "MODE",
        resval: "0x20",
        hwaccess: "hrw",
        desc:  '''
          6-bit one-hot field to select AES block cipher mode.
          Invalid input values, i.e., values with multiple bits set and value 6'b00_0000, are mapped to AES_NONE (6'b10_0000).
        '''
        enum: [
          { value: "1",
            name: "AES_ECB",
            desc: '''
              6'b00_0001: Electronic Codebook (ECB) mode.
            '''
          },
          { value: "2",
            name: "AES_CBC",
            desc: '''
              6'b00_0010: Cipher Block Chaining (CBC) mode.
            '''
          },
          { value: "4",
            name: "AES_CFB",
            desc: '''
              6'b00_0100: Cipher Feedback (CFB) mode.
            '''
          },
          { value: "8",
            name: "AES_OFB",
            desc: '''
              6'b00_1000: Output Feedback (OFB) mode.
            '''
          },
          { value: "16",
            name: "AES_CTR",
            desc: '''
              6'b01_0000: Counter (CTR) mode.
            '''
          },
          { value: "32",
            name: "AES_NONE",
            desc: '''
              6'b10_0000: Invalid input values, i.e., value with multiple bits set and value 6'b00_0000, are mapped to AES_NONE.
            '''
          }
        ]
        tags: ["shadowed_reg_path:u_aes_core.u_ctrl_reg_shadowed.u_ctrl_reg_shadowed_mode"]
      }
      { bits: "10:8",
        name: "KEY_LEN",
        resval: "1",
        hwaccess: "hrw",
        desc: '''
          3-bit one-hot field to select AES key length.
          Invalid input values, i.e., values 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 AES_256 (3'b100).
        '''
        enum: [
          { value: "1",
            name: "AES_128",
            desc: '''
              3'b001: 128-bit key length.
            '''
          },
          { value: "2",
            name: "AES_192",
            desc: '''
              3'b010: 192-bit key length.
              In case support for 192-bit keys has been disabled at compile time, setting this value results in configuring AES_256 (3'b100).
            '''
          },
          { value: "4",
            name: "AES_256",
            desc: '''
              3'b100: 256-bit key length.
              Invalid input values, i.e., values 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 AES_256.
            '''
          }
        ]
        tags: ["shadowed_reg_path:u_aes_core.u_ctrl_reg_shadowed.u_ctrl_reg_shadowed_key_len"]
      }
      { bits: "11",
        name: "SIDELOAD",
        resval: "0",
        desc: '''
          Controls whether the AES unit uses the key provided by the key manager via key sideload interface (1) or the key provided by software via Initial Key Registers KEY_SHARE1_0 - KEY_SHARE1_7 (0).
        '''
        tags: ["shadowed_reg_path:u_aes_core.u_ctrl_reg_shadowed.u_ctrl_reg_shadowed_sideload"]
      }
      { bits: "14:12",
        name: "PRNG_RESEED_RATE",
        resval: "1",
        hwaccess: "hrw",
        desc: '''
          3-bit one-hot field to control the reseeding rate of the internal pseudo-random number generator (PRNG) used for masking.
          Invalid input values, i.e., values with multiple bits set and value 3'b000 are mapped to the highest reseeding rate PER_1 (3'b001).
        '''
        enum: [
          { value: "1",
            name: "PER_1",
            desc: '''
              3'b001: Reseed the masking PRNG once per block.
              Invalid input values, i.e., values with multiple bits set and value 3'b000 are mapped to PER_1 (3'b001).
              This results in a max entropy consumption rate of ~286 Mbit/s.
            '''
          },
          { value: "2",
            name: "PER_64",
            desc: '''
              3'b010: Reseed the masking PRNG approximately once per every 64 blocks.
              This results in a max entropy consumption rate of ~4.5 Mbit/s.
            '''
          },
          { value: "4",
            name: "PER_8K",
            desc: '''
              3'b100: Reseed the masking PRNG approximately once per every 8192 blocks.
              This results in an max entropy consumption rate of ~0.035 Mbit/s.
            '''
          }
        ]
        tags: ["shadowed_reg_path:u_aes_core.u_ctrl_reg_shadowed.u_ctrl_reg_shadowed_prng_reseed_rate"]
      }
      { bits: "15",
        name: "MANUAL_OPERATION",
        resval: "0"
        desc:  '''
          Controls whether the AES unit is operated in normal/automatic mode (0) or fully manual mode (1).
          In automatic mode (0), the AES unit automatically i) starts to encrypt/decrypt when it receives new input data, and ii) stalls during the last encryption/decryption cycle if the previous output data has not yet been read.
          This is the most efficient mode to operate in.
          Note that the corresponding status tracking is automatically cleared upon a write to the Control Register.
          In manual mode (1), the AES unit i) only starts to encrypt/decrypt after receiving a start trigger (see Trigger Register), and ii) overwrites previous output data irrespective of whether it has been read out or not.
          This mode is useful if software needs full control over the AES unit.
        '''
        tags: ["shadowed_reg_path:u_aes_core.u_ctrl_reg_shadowed.u_ctrl_reg_shadowed_manual_operation"]
      }
    ]
    tags: [// Updated by the HW.
           // Updates based on writes to this reg (reset test possible).
           // Exclude from write-read checks.
           "excl:CsrNonInitTests:CsrExclWriteCheck"]
  },
  { name: "CTRL_AUX_SHADOWED",
    desc: '''
      Auxiliary Control Register.

      This register is shadowed, meaning two subsequent write operations are required to change its content.
      If the two write operations try to set a different value, a recoverable alert is triggered (See Status Register).
      A read operation clears the internal phase tracking: The next write operation is always considered a first write operation of an update sequence.
    '''
    swaccess: "rw",
    hwaccess: "hro",
    shadowed: "true",
    regwen:   "CTRL_AUX_REGWEN",
    update_err_alert: "recov_ctrl_update_err",
    storage_err_alert: "fatal_fault",
    fields: [
      { bits:   "0",
        name:   "KEY_TOUCH_FORCES_RESEED",
        desc:   '''
                Controls whether providing a new key triggers the reseeding of internal pseudo-random number generators used for clearing and masking (1) or not (0).
                ''',
        resval: 1,
      }
      { bits:   "1",
        name:   "FORCE_MASKS",
        desc:   '''
                Allow the internal masking PRNG to advance (0) or force its internal state (1) leading to constant masks.
                Setting all masks to constant value can be useful when performing SCA.
                To completely disable the masking, the second key share (KEY_SHARE1_0 - KEY_SHARE1_7) must be zero as well.
                In addition, a special seed needs to be loaded into the masking PRNG using the EDN interface.
                Only applicable if both the Masking parameter and the SecAllowForcingMasks parameter are set to one.
                '''
        resval: "0"
      }
    ]
  },
  { name:     "CTRL_AUX_REGWEN",
    desc:     '''
              Lock bit for Auxiliary Control Register.
              '''
    swaccess: "rw0c",
    hwaccess: "none",
    fields: [
    {   bits:   "0",
        desc:   '''
                Auxiliary Control Register configuration enable bit.
                If this is cleared to 0, the Auxiliary Control Register cannot be written anymore.
                ''',
        resval: 1,
      }
    ]
  },
  { name: "TRIGGER",
    desc: '''
      Trigger Register.

      Each bit is individually cleared to zero when executing the corresponding trigger.
      While executing any of the triggered operations, the AES unit will set the IDLE bit in the Status Register to zero.
      The processor must check the Status Register before triggering further actions.
      For example, writes to Initial Key and IV Registers are ignored while the AES unit is busy.
      Writes to the Input Data Registers are not ignored but the data will be cleared if a KEY_IV_DATA_IN_CLEAR operation is pending.
    '''
    swaccess: "wo",
    hwaccess: "hrw",
    # Tag info (CSR test exclusions):
    #  Updated by the HW.
    #  Updates based on writes to this reg.
    #  -> Exclude all fields from write-read checks.
    #  Upon reset, the non-zero values trigger internal operations that clear this reg to zero.
    #  -> Exclude fields with non-zero reset value from init and write-read checks (also in reset test).
    fields: [
      { bits: "0",
        name: "START",
        resval: "0"
        desc:  '''
          Keep AES unit paused (0) or trigger the encryption/decryption of one data block (1).
          This trigger is cleared to `0` if MANUAL_OPERATION=0 or if MODE=AES_NONE (see Control Register).
        '''
        tags: ["excl:CsrNonInitTests:CsrExclWriteCheck"]
      }
      { bits: "1",
        name: "KEY_IV_DATA_IN_CLEAR",
        resval: "1"
        desc:  '''
          Keep current values in Initial Key, internal Full Key and Decryption Key registers, IV registers and Input Data registers (0) or clear all those registers with pseudo-random data (1).
        '''
        tags: ["excl:CsrAllTests:CsrExclCheck"]
      }
      { bits: "2",
        name: "DATA_OUT_CLEAR",
        resval: "1"
        desc:  '''
          Keep current values in Output Data registers (0) or clear those registers with pseudo-random data (1).
        '''
        tags: ["excl:CsrAllTests:CsrExclCheck"]
      }
      { bits: "3",
        name: "PRNG_RESEED",
        resval: "1"
        desc:  '''
          Keep continuing with the current states of the internal pseudo-random number generators used for register clearing and masking (0) or perform a reseed of the internal states from the connected entropy source (1).
          If the KEY_TOUCH_FORCES_RESEED bit in the Auxiliary Control Register is set to one, this trigger will automatically get set after providing a new initial key.
        '''
        tags: ["excl:CsrAllTests:CsrExclCheck"]
      }
    ]
  },
  { name: "STATUS",
    desc: "Status Register",
    swaccess: "ro",
    hwaccess: "hwo",
    # Tag info (CSR test exclusions):
    #  Updated by the HW.
    #  Updates based on writes to other regs.
    #  -> Exclude all fields (except ALERT_FATAL_FAULT) from init and write-read checks.
    #  Upon reset, internal operations are triggered at the end of which IDLE and INPUT_READY will be 1.
    #  -> Exclude IDLE and INPUT_READY field from init and write-read checks (also in reset test).
    fields: [
      { bits: "0",
        name: "IDLE",
        resval: "0",
        hwaccess: "hrw",
        desc:  '''
          The AES unit is idle (1) or busy (0).
          This flag is `0` if one of the following operations is currently running: i) encryption/decryption, ii) register clearing or iii) PRNG reseeding.
          This flag is also `0` if an encryption/decryption is running but the AES unit is stalled.
        '''
        tags: ["excl:CsrAllTests:CsrExclCheck"]
      }
      { bits: "1",
        name: "STALL",
        resval: "0"
        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.
          This flag is not meaningful if MANUAL_OPERATION=1 (see Control Register).
        '''
        tags: ["excl:CsrNonInitTests:CsrExclCheck"]
      }
      { bits: "2",
        name: "OUTPUT_LOST",
        resval: "0"
        hwaccess: "hrw",
        desc:  '''
          All previous output data has been fully read by the processor (0) or at least one previous output data block has been lost (1).
          It has been overwritten by the AES unit before the processor could fully read it.
          Once set to `1`, this flag remains set until AES operation is restarted by re-writing the Control Register.
          The primary use of this flag is for design verification.
          This flag is not meaningful if MANUAL_OPERATION=0 (see Control Register).
        '''
        tags: ["excl:CsrNonInitTests:CsrExclCheck"]
      }
      { bits: "3",
        name: "OUTPUT_VALID",
        resval: "0"
        desc:  '''
          The AES unit has no valid output (0) or has valid output data (1).
        '''
        tags: ["excl:CsrNonInitTests:CsrExclCheck"]
      }
      { bits: "4",
        name: "INPUT_READY",
        resval: "0",
        desc:  '''
          The AES unit is ready (1) or not ready (0) to receive new data input via the DATA_IN registers.
          If the present values in the DATA_IN registers have not yet been loaded into the
          module this flag is `0` (not ready).
        '''
        tags: ["excl:CsrAllTests:CsrExclCheck"]
      }
      { bits: "5",
        name: "ALERT_RECOV_CTRL_UPDATE_ERR",
        resval: "0",
        desc:  '''
          An update error has not occurred (0) or has occurred (1) in the shadowed Control Register.
          AES operation needs to be restarted by re-writing the Control Register.
        '''
        tags: ["excl:CsrNonInitTests:CsrExclCheck"]
      }
      { bits: "6",
        name: "ALERT_FATAL_FAULT",
        resval: "0",
        desc:  '''
          No fatal fault has occurred inside the AES unit (0).
          A fatal fault has occurred and the AES unit needs to be reset (1).
          Examples for fatal faults include
          i) storage errors in the Control Register,
          ii) if any internal FSM enters an invalid state,
          iii) if any sparsely encoded signal takes on an invalid value,
          iv) errors in the internal round counter,
          v) escalations triggered by the life cycle controller, and
          vi) fatal integrity failures on the TL-UL bus.
        '''
      }
    ]
  },
  ],
}
