Summary

NameOffsetLengthDescription
ascon.ALERT_TEST0x04Alert Test Register
ascon.KEY_SHARE0_00x44Initial Key Registers Share 0.
ascon.KEY_SHARE0_10x84Initial Key Registers Share 0.
ascon.KEY_SHARE0_20xc4Initial Key Registers Share 0.
ascon.KEY_SHARE0_30x104Initial Key Registers Share 0.
ascon.KEY_SHARE1_00x144Initial Key Registers Share 1.
ascon.KEY_SHARE1_10x184Initial Key Registers Share 1.
ascon.KEY_SHARE1_20x1c4Initial Key Registers Share 1.
ascon.KEY_SHARE1_30x204Initial Key Registers Share 1.
ascon.NONCE_SHARE0_00x244Input Nonce Register Share 0.
ascon.NONCE_SHARE0_10x284Input Nonce Register Share 0.
ascon.NONCE_SHARE0_20x2c4Input Nonce Register Share 0.
ascon.NONCE_SHARE0_30x304Input Nonce Register Share 0.
ascon.NONCE_SHARE1_00x344Input Nonce Register Share 1.
ascon.NONCE_SHARE1_10x384Input Nonce Register Share 1.
ascon.NONCE_SHARE1_20x3c4Input Nonce Register Share 1.
ascon.NONCE_SHARE1_30x404Input Nonce Register Share 1.
ascon.DATA_IN_SHARE0_00x444Input Data Register 0.
ascon.DATA_IN_SHARE0_10x484Input Data Register 0.
ascon.DATA_IN_SHARE0_20x4c4Input Data Register 0.
ascon.DATA_IN_SHARE0_30x504Input Data Register 0.
ascon.DATA_IN_SHARE1_00x544Data Input Register Share 1
ascon.DATA_IN_SHARE1_10x584Data Input Register Share 1
ascon.DATA_IN_SHARE1_20x5c4Data Input Register Share 1
ascon.DATA_IN_SHARE1_30x604Data Input Register Share 1
ascon.TAG_IN_00x644Input TAG Register.
ascon.TAG_IN_10x684Input TAG Register.
ascon.TAG_IN_20x6c4Input TAG Register.
ascon.TAG_IN_30x704Input TAG Register.
ascon.MSG_OUT_00x744Output Data Register.
ascon.MSG_OUT_10x784Output Data Register.
ascon.MSG_OUT_20x7c4Output Data Register.
ascon.MSG_OUT_30x804Output Data Register.
ascon.TAG_OUT_00x844Output Tag Register.
ascon.TAG_OUT_10x884Output Tag Register.
ascon.TAG_OUT_20x8c4Output Tag Register.
ascon.TAG_OUT_30x904Output Tag Register.
ascon.CTRL_SHADOWED0x944Control Register.
ascon.CTRL_AUX_SHADOWED0x984Auxiliary Control Register.
ascon.CTRL_AUX_REGWEN0x9c4Lock bit for Auxiliary Control Register.
ascon.BLOCK_CTRL_SHADOWED0xa04Block Control Register.
ascon.TRIGGER0xa44Trigger Register.
ascon.STATUS0xa84Status Register
ascon.OUTPUT_VALID0xac4Output Valid Register
ascon.FSM_STATE0xb04Main FSM State register.
ascon.FSM_STATE_REGREN0xb44Lock bit for Auxiliary Control Register.
ascon.ERROR0xb84Error Register.

ALERT_TEST

Alert Test Register

  • Offset: 0x0
  • Reset default: 0x0
  • Reset mask: 0x3

Fields

{"reg": [{"name": "recov_ctrl_update_err", "bits": 1, "attr": ["wo"], "rotate": -90}, {"name": "fatal_fault", "bits": 1, "attr": ["wo"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 230}}
BitsTypeResetNameDescription
31:2Reserved
1wo0x0fatal_faultWrite 1 to trigger one alert event of this kind.
0wo0x0recov_ctrl_update_errWrite 1 to trigger one alert event of this kind.

KEY_SHARE0

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. All key registers (Share 0 and Share 1) must be written at least once when the key is changed. The order in which the registers are updated does not matter. Can only be updated when the Ascon unit is idle. If the Ascon unit is non-idle, writes to these registers are ignored. Upon reset, these registers are cleared with pseudo-random data.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
KEY_SHARE0_00x4
KEY_SHARE0_10x8
KEY_SHARE0_20xc
KEY_SHARE0_30x10

Fields

{"reg": [{"name": "key_share0", "bits": 32, "attr": ["wo"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0wo0x0key_share0Initial Key Share 0

KEY_SHARE1

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. All key registers (Share 0 and Share 1) must be written at least once when the key is changed. The order in which the registers are updated does not matter. Can only be updated when the Ascon unit is idle. If the Ascon unit is non-idle, writes to these registers are ignored. Upon reset, these registers are cleared with pseudo-random data.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
KEY_SHARE1_00x14
KEY_SHARE1_10x18
KEY_SHARE1_20x1c
KEY_SHARE1_30x20

Fields

{"reg": [{"name": "key_share1", "bits": 32, "attr": ["wo"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0wo0x0key_share1Initial Key Share 1

NONCE_SHARE0

Input Nonce Register Share 0. The actual data corresponds to Nonce Input Registers Share 0 XORed with Nonce Input Registers Share 1. If SW does not want to provide the Nonce masked, it can simply set one share to all zeros and provide the unmasked nonce in the other share. All nonce registers (Share 0 and Share 1) must be written each time a new message is processed. Ascon requires the nonce to be unique for each message. However there are no hardware checks to enforce this. The order in which the registers are updated does not matter. If the user fails to update the register the ERROR.NO_NONCE Register is set. Can only be updated when the Ascon unit is idle. If the Ascon unit is non-idle, writes to these registers are ignored. Upon reset, these registers are cleared with pseudo-random data.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
NONCE_SHARE0_00x24
NONCE_SHARE0_10x28
NONCE_SHARE0_20x2c
NONCE_SHARE0_30x30

Fields

{"reg": [{"name": "nonce", "bits": 32, "attr": ["wo"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0woxnonceInput Nonce Share 0

NONCE_SHARE1

Input Nonce Register Share 1. The actual data corresponds to Nonce Input Registers Share 0 XORed with Nonce Input Registers Share 1. If SW does not want to provide the Nonce masked, it can simply set one share to all zeros and provide the unmasked nonce in the other share. All nonce registers (Share 0 and Share 1) must be written each time a new message is processed. Ascon requires the nonce to be unique for each message However there are no hardware checks to enforce this. The order in which the registers are updated does not matter. If the user fails to update the register the ERROR.NO_NONCE Register is set. Can only be updated when the Ascon unit is idle. If the Ascon unit is non-idle, writes to these registers are ignored. Upon reset, these registers are cleared with pseudo-random data.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
NONCE_SHARE1_00x34
NONCE_SHARE1_10x38
NONCE_SHARE1_20x3c
NONCE_SHARE1_30x40

Fields

{"reg": [{"name": "nonce", "bits": 32, "attr": ["wo"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0woxnonceInput Nonce Share 1

DATA_IN_SHARE0

Input Data Register 0. The actual data corresponds to Data Input Registers Share 0 XORed with Data Input Registers Share 1. This register holds Share 0 of one input block. This is either the associated data, plaintext or the ciphertext, depending on the mode. All registers must be written each time a new block is processed. Otherwise the engine stalls until all registers have been written. For Ascon 128 the upper 64 bit can be set to any value For partial blocks the unused bytes can be set to any value. The order in which the registers are updated does not matter. Writing to this register will invalidate previous values in the MSG_OUT register.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
DATA_IN_SHARE0_00x44
DATA_IN_SHARE0_10x48
DATA_IN_SHARE0_20x4c
DATA_IN_SHARE0_30x50

Fields

{"reg": [{"name": "msg_in", "bits": 32, "attr": ["wo"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0woxmsg_inInput Data Share 0

DATA_IN_SHARE1

Data Input Register Share 1 The actual message corresponds to Data Input Registers Share 0 XORed with Data Input Registers Share 1. This register holds Share 1 of one data input block. This is either the associated data, plaintext or the ciphertext, depending on the mode. If CTRL_SHADOWED.masked_{ad,msg}input = 1, all registers must be written each time a block of associated data or message is processed If CTRL_SHADOWED.masked{ad,msg}_input = 0, the write operation tracking for these registers is disabled. Software should set Share 1 to all zeros before the first block of associated data / message is written to Share 0. This basically disables input masking. For Ascon 128 the upper 64 bit can be set to any value. For partial blocks the unused bytes can be set to any value. The order in which the registers are updated does not matter. Writing to this register will invalidate previous values in the MSG_OUT register.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
DATA_IN_SHARE1_00x54
DATA_IN_SHARE1_10x58
DATA_IN_SHARE1_20x5c
DATA_IN_SHARE1_30x60

Fields

{"reg": [{"name": "msg_in", "bits": 32, "attr": ["wo"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0woxmsg_inInput Data Share 1

TAG_IN

Input TAG Register. This register holds the expected tag for authenticated decryption. All registers must be written each time a new decryption is started. The order in which the registers are updated does not matter. Upon reset, these registers are cleared with pseudo-random data.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
TAG_IN_00x64
TAG_IN_10x68
TAG_IN_20x6c
TAG_IN_30x70

Fields

{"reg": [{"name": "tag_in", "bits": 32, "attr": ["wo"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0wo0x0tag_inInput TAG

MSG_OUT

Output Data Register. Holds the output data produced by the Ascon unit during the last encryption/decryption operation. If CTRL_AUX_SHADOWED.force_data_overwrite = 0 (see Control Register), the Ascon 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.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
MSG_OUT_00x74
MSG_OUT_10x78
MSG_OUT_20x7c
MSG_OUT_30x80

Fields

{"reg": [{"name": "msg_out", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0roxmsg_outOutput Data

TAG_OUT

Output Tag Register. Holds the computed tag that is produced by the Ascon unit during an authenticated encryption/decryption. Each register has to be read at least once for encryption. For decryption the read is optional, but allows software to double check the result. The order in which the registers are read does not matter. Upon reset, these registers are cleared with pseudo-random data.

  • Reset default: 0x0
  • Reset mask: 0xffffffff

Instances

NameOffset
TAG_OUT_00x84
TAG_OUT_10x88
TAG_OUT_20x8c
TAG_OUT_30x90

Fields

{"reg": [{"name": "tag_out", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0roxtag_outOutput Tag

CTRL_SHADOWED

Control Register. Can only be updated when the Ascon unit is idle. If the Ascon 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 CTRL_AUX_SHADOWED.manual_start_trigger). A write to the Control Register is considered the start of a new message. Hence, software needs to provide a new Nonce and input data afterwards.

  • Offset: 0x94
  • Reset default: 0x9600
  • Reset mask: 0xffff

Fields

{"reg": [{"name": "OPERATION", "bits": 3, "attr": ["rw"], "rotate": -90}, {"name": "ASCON_VARIANT", "bits": 2, "attr": ["rw"], "rotate": -90}, {"name": "SIDELOAD_KEY", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "MASKED_AD_INPUT", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "MASKED_MSG_INPUT", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "NO_MSG", "bits": 4, "attr": ["rw"], "rotate": 0}, {"name": "NO_AD", "bits": 4, "attr": ["rw"], "rotate": 0}, {"bits": 16}], "config": {"lanes": 1, "fontsize": 10, "vspace": 180}}
BitsTypeResetName
31:16Reserved
15:12rw0x9NO_AD
11:8rw0x6NO_MSG
7rw0x0MASKED_MSG_INPUT
6rw0x0MASKED_AD_INPUT
5rw0x0SIDELOAD_KEY
4:3rw0x0ASCON_VARIANT
2:0rw0x0OPERATION

CTRL_SHADOWED . NO_AD

This field is mubi4 encoded. Mubi4True: There are no associated data to be processed. Mubi4False: There are associated data.

CTRL_SHADOWED . NO_MSG

This field is mubi4 encoded. Mubi4True: There is no message (plaintext/ciphertext) to be processed. Mubi4False: There is a message.

CTRL_SHADOWED . MASKED_MSG_INPUT

Controls whether the message input is provided in shares (1) or not (0). If the input is provided in shares all registers of both shares must be written for each input block. If set to 0, the write operation tracking of Share 1 is disabled. Software should set Share 1 to all zeros before the first block of the message is written to Share 0. It does not need to be rewritten for each block. Once all registers of Share 0 have been written, Ascon starts to process the data depending on the CTRL_AUX_SHADOWED.manual_start_trigger.

CTRL_SHADOWED . MASKED_AD_INPUT

Controls whether the associated data input is provided in shares (1) or not (0). If the input is provided in shares all registers of both shares must be written for each input block. If set to 0, the write operation tracking of Share 1 is disabled. Software should set Share 1 to all zeros before the first block of associated data is written to Share 0. It does not need to be rewritten for each block. Once all registers of Share 0 have been written, Ascon starts to process the data depending on the CTRL_AUX_SHADOWED.manual_start_trigger.

CTRL_SHADOWED . SIDELOAD_KEY

Controls whether the Ascon 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 and KEY_SHARE_0 (0).

CTRL_SHADOWED . ASCON_VARIANT

Specifies which variant of Ascon is used. It can be either Ascon-128 (2’b01) or Ascon-128a (2’b10). They only differ in the input block size and the number of permutations per round. The size of the key, nonce, tag is 128 bits for both variants. This field is only relevant for encryption or decryption. It is ignored for Ascon-XOF.

ValueNameDescription
0x1ASCON_128Ascon-128 is the primary choice. In this mode, the rate and thus the input block size is 64 bit. There are 6 rounds of permutation between different inputs.
0x2ASCON_128aAscon-128a is the secondary choice. In this mode, the rate and thus the input block size is 128 bit. There are 8 rounds of permutation between different inputs.

Other values are reserved.

CTRL_SHADOWED . OPERATION

Specifies which operation ascon should perform. There are: Enc, Dec, XOF (not implemented yet) They are one-hot encoded

ValueNameDescription
0x1ASCON_ENC3’b001: Encryption. Invalid input values are mapped to this.
0x2ASCON_DEC3’b010: Decryption.
0x4ASCON_XOF3’b100: XOF. This mode is currently not supported and treated as an invalid input, that is mapped to ASCON_ENC.

Other values are reserved.

CTRL_AUX_SHADOWED

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. These configuration options are only used for special cases during development and can therefore be locked to the default values. For normal operation these options should all be set to zero.

  • Offset: 0x98
  • Reset default: 0x0
  • Reset mask: 0x3
  • Register enable: CTRL_AUX_REGWEN

Fields

{"reg": [{"name": "MANUAL_START_TRIGGER", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "FORCE_DATA_OVERWRITE", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 220}}
BitsTypeResetNameDescription
31:2Reserved
1rw0x0FORCE_DATA_OVERWRITEControl whether the Ascon 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). Default: 0
0rw0x0MANUAL_START_TRIGGERControl whether the Ascon unit should automatically start to encrypt/decrypt when it receives new input data (0) or wait for a separate trigger signal before starting (1) (see Trigger Register). Default: 0

CTRL_AUX_REGWEN

Lock bit for Auxiliary Control Register.

  • Offset: 0x9c
  • Reset default: 0x1
  • Reset mask: 0x1

Fields

{"reg": [{"name": "CTRL_AUX_REGWEN", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 170}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1CTRL_AUX_REGWENAuxiliary Control Register configuration enable bit. If this is cleared to 0, the Auxiliary Control Register cannot be written until the next reset.

BLOCK_CTRL_SHADOWED

Block 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. This register has to be written at least for each first and last block of message, associated data. Intermediate blocks are expected to be of full block size. If there’s only one block of data, all three fields: valid_bytes, data_type_last and data_type_start must be set.

  • Offset: 0xa0
  • Reset default: 0x1f000000
  • Reset mask: 0x1fffffff

Fields

{"reg": [{"name": "DATA_TYPE_START", "bits": 12, "attr": ["rw"], "rotate": 0}, {"name": "DATA_TYPE_LAST", "bits": 12, "attr": ["rw"], "rotate": 0}, {"name": "VALID_BYTES", "bits": 5, "attr": ["rw"], "rotate": -90}, {"bits": 3}], "config": {"lanes": 1, "fontsize": 10, "vspace": 130}}
BitsTypeResetNameDescription
31:29Reserved
28:24rw0x1fVALID_BYTESIndicates the number of valid bytes [0 to 16] bytes. Default: 16 bytes for ASCON 128a Default: 8 bytes for ASCON 128
23:12rw0x0DATA_TYPE_LASTSpecifies that the next read from an input is the last of its kind. There are: PT_IN, CT_IN, AD_IN. They are internally mubi4 encoded. Only one type is allowed to be true at the same time. NONE sets all mubi4 values to false.
11:0rw0x0DATA_TYPE_STARTSpecifies which input the Ascon unit shall process next. There are: PT_IN, CT_IN, AD_IN. They are internally mubi4 encoded. Only one type is allowed to be true at the same time. NONE sets all mubi4 encoded values to False.

TRIGGER

Trigger Register. Each bit is individually cleared to zero when executing the corresponding trigger. While executing any of the triggered operations, the Ascon 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 nonce Registers are ignored while the Ascon unit is busy. Writes to the Message and associated data Registers are not ignored but the data will be cleared if a WIPE operation is pending.

  • Offset: 0xa4
  • Reset default: 0x0
  • Reset mask: 0x3

Fields

{"reg": [{"name": "START", "bits": 1, "attr": ["rw"], "rotate": -90}, {"name": "WIPE", "bits": 1, "attr": ["rw"], "rotate": -90}, {"bits": 30}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:2Reserved
1rw0x0WIPEPerforms a secure wipe of sensitive data.
0rw0x0STARTIf CTRL_SHADOWED_AUX.manual_start_trigger = 1: Keep Ascon unit paused (0) or trigger the authenticated encryption/decryption of one data block (1). If CTRL_SHADOWED_AUX.manual_start_trigger = 0: writes to this bit are ignored.

STATUS

Status Register

  • Offset: 0xa8
  • Reset default: 0x0
  • Reset mask: 0x3f

Fields

{"reg": [{"name": "IDLE", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "STALL", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "WAIT_EDN", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ASCON_ERROR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ALERT_RECOV_CTRL_UPDATE_ERR", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "ALERT_FATAL_FAULT", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 26}], "config": {"lanes": 1, "fontsize": 10, "vspace": 290}}
BitsTypeResetName
31:6Reserved
5ro0x0ALERT_FATAL_FAULT
4ro0x0ALERT_RECOV_CTRL_UPDATE_ERR
3ro0x0ASCON_ERROR
2ro0x0WAIT_EDN
1ro0x0STALL
0ro0x0IDLE

STATUS . ALERT_FATAL_FAULT

No fatal fault has occurred inside the Asconunit (0). A fatal fault has occurred and the Ascon 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.

STATUS . ALERT_RECOV_CTRL_UPDATE_ERR

An update error has not occurred (0) or has occurred (1) in one of the shadowed Control Registers. Ascon operation needs to be restarted by re-writing the Control Registers.

STATUS . ASCON_ERROR

An error due to a misconfiguration has happened. The user should read out the error register for more information

STATUS . WAIT_EDN

The Ascon unit is waiting for new entropy.

STATUS . STALL

The Ascon unit is not stalled (0) or stalled (1) because there is previous output data that must be read by the processor before the Ascon unit can overwrite this data.

STATUS . IDLE

The Ascon unit is idle (0) or busy (1).

OUTPUT_VALID

Output Valid Register This register specifies which output register contains valid data. It also contains the status information whether the TAG comparison was valid or not.

  • Offset: 0xac
  • Reset default: 0x0
  • Reset mask: 0xf

Fields

{"reg": [{"name": "MSG_VALID", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "TAG_VALID", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "TAG_COMPARISON_VALID", "bits": 2, "attr": ["ro"], "rotate": -90}, {"bits": 28}], "config": {"lanes": 1, "fontsize": 10, "vspace": 220}}
BitsTypeResetNameDescription
31:4Reserved
3:2ro0x0TAG_COMPARISON_VALIDIndicates if the tag could be successfully compared 2’b01, or not 2’b10 2’b00 indicates that the tag hasn’t been calculated, yet 2’b11 is invalid.
1ro0x0TAG_VALIDIndicates if there is (1) or if there is not (0) valid data in the TAG_OUT register. If OUTPUT_VALID.MSG_VALID and OUTPUT_VALID.TAG_VALID are both set, MSG_OUT should be read before !TAG_OUT.
0ro0x0MSG_VALIDIndicates if there is (1) or if there is not (0) valid data in the MSG_OUT register. If OUTPUT_VALID.MSG_VALID and OUTPUT_VALID.TAG_VALID are both set, MSG_OUT should be read before !TAG_OUT.

FSM_STATE

Main FSM State register. These registers can be used for debugging the internal state of ASCON’s FSM. The read can be blocked with the FSM_STATE_REGREN register

  • Offset: 0xb0
  • Reset default: 0x0
  • Reset mask: 0xffffffff

Fields

{"reg": [{"name": "MAIN_FSM", "bits": 32, "attr": ["ro"], "rotate": 0}], "config": {"lanes": 1, "fontsize": 10, "vspace": 80}}
BitsTypeResetNameDescription
31:0roxMAIN_FSMThese fields are directly mapped to the ASCON’s main state registers.

FSM_STATE_REGREN

Lock bit for Auxiliary Control Register.

  • Offset: 0xb4
  • Reset default: 0x1
  • Reset mask: 0x1

Fields

{"reg": [{"name": "FSM_STATE_REGREN", "bits": 1, "attr": ["rw0c"], "rotate": -90}, {"bits": 31}], "config": {"lanes": 1, "fontsize": 10, "vspace": 180}}
BitsTypeResetNameDescription
31:1Reserved
0rw0c0x1FSM_STATE_REGRENFSM_STATE register configuration enable bit. If this is cleared to 0, the FSM_STATE register returns all zeros on any read until the next reset.

ERROR

Error Register. Error register for errors caused by user’s misconfiguration. To clear the error, a wipe must be triggered.

  • Offset: 0xb8
  • Reset default: 0x0
  • Reset mask: 0xf

Fields

{"reg": [{"name": "NO_KEY", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "NO_NONCE", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "WRONG_ORDER", "bits": 1, "attr": ["ro"], "rotate": -90}, {"name": "FLAG_INPUT_MISSMATCH", "bits": 1, "attr": ["ro"], "rotate": -90}, {"bits": 28}], "config": {"lanes": 1, "fontsize": 10, "vspace": 220}}
BitsTypeResetNameDescription
31:4Reserved
3ro0x0FLAG_INPUT_MISSMATCHA flag for an empty input was set, but a non empty input was provided.
2ro0x0WRONG_ORDERThe ordering of associated data and message was wrong.
1ro0x0NO_NONCENo Nonce was provided
0ro0x0NO_KEYNo Key was provided