-
Notifications
You must be signed in to change notification settings - Fork 916
[aes] Document clearing sequence upon reset, add missing reset values. #5651
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -184,6 +184,7 @@ | |
| # 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. | ||
|
|
@@ -192,6 +193,7 @@ | |
| 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", | ||
|
|
@@ -206,6 +208,7 @@ | |
| }, | ||
| { 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. | ||
|
|
@@ -214,6 +217,7 @@ | |
| 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", | ||
|
|
@@ -230,6 +234,7 @@ | |
| # 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. | ||
|
|
@@ -240,6 +245,7 @@ | |
| 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", | ||
|
|
@@ -256,13 +262,15 @@ | |
| # 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 these register have been written. | ||
| 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 Register. | ||
| 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", | ||
|
|
@@ -278,12 +286,14 @@ | |
| # 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", | ||
|
|
@@ -324,6 +334,7 @@ | |
| fields: [ | ||
| { bits: "0", | ||
| name: "OPERATION", | ||
| resval: "0", | ||
| desc: ''' | ||
| Select encryption(0) or decryption(1) operation of AES unit. | ||
| ''' | ||
|
|
@@ -408,6 +419,7 @@ | |
| } | ||
| { bits: "10", | ||
| 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. | ||
|
|
@@ -494,13 +506,13 @@ | |
| # Tag info (CSR test exclusions): | ||
| # Updated by the HW. | ||
| # Updates based on writes to other regs. | ||
| # -> Exclude all fields (except ALERT_FATAL) from init and write-read checks. | ||
| # Upon reset, internal operations are triggered that temporarily change the IDLE field. | ||
| # -> Exclude IDLE field from init and write-read checks (also in reset test). | ||
| # -> 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: "1", | ||
| resval: "0", | ||
| 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. | ||
|
|
@@ -510,6 +522,7 @@ | |
| } | ||
| { 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 | ||
|
|
@@ -520,6 +533,7 @@ | |
| } | ||
| { 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). | ||
|
|
@@ -532,20 +546,21 @@ | |
| } | ||
| { 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: "1", | ||
| resval: "0", | ||
| 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). | ||
| 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:CsrNonInitTests:CsrExclCheck"] | ||
| tags: ["excl:CsrAllTests:CsrExclCheck"] | ||
| } | ||
| { bits: "5", | ||
| name: "ALERT_RECOV_CTRL_UPDATE_ERR", | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.