Entropy Source

The entropy source component is a random number generator which is based on multiple asynchronous ring oscillators sampled in such a way to generate random bits from the jitter noise and metastable latching behavior. It forms the basis of a True Random Number Generator (TRNG).

The generated stream is ``raw'' noise in the sense that there may still be some statistical biases present which need to be filtered out by an optional entropy conditioner post processing unit which would consume the output noise bits. NIST specifies a set of acceptable conditioners. Common conditioners are based on standard hash functions such as SHA256 and ASCON as well as standard keyed hash functions such as AES-CMAC and HMAC.

The source includes a configurable SHA-256 whitener. Software can bypass whitening to observe the unconditioned stream; health tests also monitor the individual noise generators and the combined stream.

Entropy source microarchitecture: twelve generator lanes feed the BIW extractor; a 32-bit health test and the main state machine gate the stream into the optional SHA-256 whitener, the output select and the main FIFO, whose write data also leaves towards the DRBG; observe FIFOs, the register block and the debug monitor sit beside the datapath
Figure 1. Entropy source microarchitecture

Figure 1 shows the entropy source and its conditioning pipeline. The client controls the component via the AXI4-Lite bus interface which provides access to a set of memory mapped configuration and status registers (CSRs) described later in this document. The noise generators feed the decorrelation, mixing, health-test, and optional whitening stages. Each word written into the main FIFO also leaves the block as entropy_stream_data_o, qualified by entropy_stream_vld_o, towards the DRBG; the FIFO itself is drained through the FIFO_RDATA register, behind the access gate in Section 8.

The main datapath in the figure runs left to right along the top row. The generator lane stands for all twelve lanes, and Figure 2 shows its noise source and sample clock in detail. The boot gate passes entropy only after the main state machine has seen a passing boot health-test window; it qualifies the whitener input, the uncompressed-byte path and the BIW observe FIFO, while the 32-bit health test and the noise observe FIFO see the stream ungated. The output select takes the whitener output, or, when CTRL.BYPASS_ENTROPY_COMPRESSOR is set, the twelve uncompressed decorrelator bytes as three 32-bit words (packing order), downsampled by CTRL.DOWNSAMPLE_RATE. The 32-bit health test is clock-gated off in that mode. The register block configures every stage; its connections to individual stages are not drawn. The debug monitor routes one of 256 internal signals to signal_monitor_o.

The health-test modules are OpenTitan’s entropy_src repetition count, adaptive proportion and Markov tests, and the main state machine is OpenTitan’s entropy_src_main_sm. Their internal structure is described in the OpenTitan entropy source documentation. The Programmer’s Guide gives the programming guidance for this block.

The entropy source is designed according to guidelines set forth in the NIST SP800-90B specification and is planned to be ready for FIPS 140-2 and 140-3 certification. It will also be compliant with AIS31 statistical requirements specified by the BSI agency.

1. Noise Generation

The entropy source uses 12 independent ring oscillators as its noise source. Each ring oscillator is constructed from the shared OCAH primitives (prim_clock_nand2, prim_buf, prim_stdmux2) to preserve the asynchronous feedback-loop structure through technology mapping. Each oscillator has two configurable lengths: a TOTAL_LENGTH and a TAPPED_LENGTH, where a multiplexer selects between the short and long feedback paths. The entropy_rosc_tune_fsm toggles between these two lengths on a rising edge of any health test failure, providing a rudimentary frequency detuning mechanism.

The oscillator output is sampled by a metastable D flip-flop (prim_flop) clocked by a sampling clock. The sampled bit is then synchronized to the system clock domain through a two-stage synchronizer. Each lane can be clocked either by an external sampling clock (rosc_sample_clk_i) or by a shared internal ring oscillator (total length 109, tapped length 53). A per-lane ripple divider provides division ratios of 1, 2, 4, 8, 16, and 32, selected through the CSR. Both selects are clock mux cells. Software changes a lane’s source or division only while that generator is disabled. A division value outside 0-5 selects divide-by-4.

Figure 2 shows the ring oscillators, sampling paths, and clock selection used to generate noise.

Entropy source ring-oscillator complex: per-lane sample clock selection and division, the noise lane from ring oscillator through sampling, synchronization, decorrelation, health test and auto-tune, and the ring oscillator stage chain with its tap mux
Figure 2. Entropy source ring-oscillator complex

Figure 2 has three bands. The top band builds one sample clock per lane: RING_OSC_CTRL.SAMPLE_CLK_SELECT bit i chooses rosc_sample_clk_i (0) or the shared ring oscillator (1), and GENERATOR_i_SAMPLE_CLK_CONFIG.SAMPLE_CLK_DIVIDE picks one ripple-divider tap. The middle band is one of the twelve noise lanes; when CTRL.AUTOTUNE_ENABLE is set the lane detune follows the auto-tune FSM, otherwise RING_OSC_TUNE.DETUNE bit i. The bottom band is the ring oscillator used both in each lane and, with 109 and 53 stages, as the shared sampling oscillator. Green lines carry asynchronous oscillator signals, brown lines are in the sample-clock domain and grey lines are in the clk_i domain or are controls. Table 1 lists the lane ring lengths.

Table 1. Noise ring-oscillator lengths per lane
Lane 0 1 2 3 4 5 6 7 8 9 10 11

TOTAL_LENGTH (detune 1)

5

7

11

13

17

19

6

8

12

15

18

23

TAPPED_LENGTH (detune 0)

3

5

9

10

14

16

4

7

11

13

15

21

2. Decorrelation and BIW Mixing

Each sampled noise bit enters a serial decorrelator (entropy_decorrelator), which shifts bits through a 29-stage shift register with XOR feedback from the last stage, as Figure 3 shows. A downsample counter reloaded from DECORRELATOR_CTRL.SAMPLE_CLK_DIV latches the top 8 bits of the shift register as an entropy byte every SAMPLE_CLK_DIV + 1 clk_i cycles, 64 cycles at the reset value of 63, and pulses the byte-valid strobe for one cycle. The byte is ANDed with DECORRELATOR_MASK.ENTROPY_BYTE_MASK, so a cleared mask bit reads as zero; the mask and the divider are shared by all 12 lanes. Setting a lane’s bit in DECORRELATOR_CTRL.BYPASS forces the feedback to zero, so raw noise bits shift through the chain unmixed; the byte is still taken from the top 8 stages, downsampled and masked.

Entropy source decorrelator: noise_i is XORed with the gated feedback from ff_stage[28] into a 29-stage shift chain; ff_stage[28:21] is ANDed with byte_mask_i and captured by the output register when the downsample counter reaches zero
Figure 3. Entropy source decorrelator

Figure 3 shows one lane’s decorrelator. The chain shifts on every clk_i cycle while enable_i is high, and the eight taps from ff_stage[21] to ff_stage[28] join into one byte-wide bundle. The output register loads when the counter reaches zero. While enable_i is low, the chain holds its contents and the counter reloads from sample_clk_div_i.

The 12 decorrelated byte streams are combined by the Barak-Impagliazzo-Wigderson (BIW) stage, which uses four gf_muladd instances performing y = a*b + c in GF(2^8) with the AES field polynomial (0x1B). The 12 input bytes are grouped into three sets of four and reduced to a single 32-bit word. This mixing step improves the statistical independence of the output without introducing significant latency.

With CTRL.BYPASS_ENTROPY_COMPRESSOR set, the BIW stage is skipped and each selected decorrelator output reaches the output select as three 32-bit words, written to the FIFO in the order word 0, word 1, word 2. Word n carries the bytes of generators 4n to 4n+3, with generator 4n+k in bits [8k+7:8k]: word 0 is {generator 3, generator 2, generator 1, generator 0}, with generator 0 in bits [7:0], word 1 carries generators 7 to 4 and word 2 generators 11 to 8. All three words come from the same decorrelator output.

3. Health Testing

Health tests operate at two levels. Each of the 12 entropy_generator instances runs an 8-bit entropy_health_test on its individual decorrelated output. At the top level, a second 32-bit entropy_health_test instance monitors the post-BIW (or post-bypass) stream.

The health test wrapper instantiates three OpenTitan-derived test modules. The repetition count test (entropy_src_repcnt_ht) tracks consecutive identical values per bit lane and flags when a threshold is exceeded. The adaptive proportion test (entropy_src_adaptp_ht) accumulates per-bit ones counts within a configurable window and compares the maximum and minimum lane counts against high and low thresholds. The Markov test (entropy_src_markov_ht) counts bit-pair transitions and compares to high and low thresholds at window boundaries. Window synchronization is driven by a prim_count counter in the entropy_generator_complex.

Health test thresholds, enable bits, and window sizes are all programmable through the CSR interface. Test status is reported as an 8-bit vector where bit 0 indicates a repetition count failure, bit 3 an adaptive proportion failure, and bits 4-5 Markov high/low failures.

4. Health Test Watermark

HT_WATERMARK is one shared register whose source and maximum/minimum direction are selected by HT_WATERMARK_NUM; there is no independent storage per selector. A selector write changes which counter updates the shared register but does not clear it, so changing only the selector carries the value recorded by the previous mode.

The shared watermark is armed by a CTRL.MODULE_ENABLE 0-to-1 transition. High modes (REPCNT_HI, APT_HI, and MARKOV_HI) arm to 0x0000; low modes (APT_LO and MARKOV_LO) arm to 0xFFFF. A hardware reset restores the selector and watermark together, so a deterministic baseline requires HT_WATERMARK_NUM to be written before the MODULE_ENABLE toggle. With the reset-default MODULE_ENABLE=1, the power-on enable pulse performs the first mode-aware arm automatically.

5. Persistent Failure and AlertHang

The health-test subsystem includes a persistent-failure path that halts entropy output when failures persist beyond a programmed threshold. A saturating counter (ALERT_SUMMARY_FAIL_COUNTS.ANY_FAIL_COUNT) records one count per health-test window in which any test failed; a mid-window failure of the continuous repetition-count test is captured and counted once for that window. When the counter reaches ALERT_THRESHOLD.THRESHOLD (default 4, i.e. four failing windows, locked by FIPS_LOCK), alert_thresh_fail is asserted and the main FSM transitions through AlertState into AlertHang, halting entropy output. AlertHang persists until the FSM is reset by rst_ni or software clears CTRL.MODULE_ENABLE. The event sets MAIN_SM_STATUS.ALERT and raises INTR_STATUS.PERSISTENT_FAILURE. The sticky MAIN_SM_STATUS.ALERT and MAIN_SM_STATUS.ERR status bits are cleared by writing 1 (W1C) or by the full entropy-source reset.

Setting ALERT_THRESHOLD.THRESHOLD to zero disables the comparator, leaving the counter accumulating without ever asserting alert_thresh_fail.

6. SHA-256 Whitening

When the SHA-256 whitener is enabled via the CSR, the 32-bit BIW output stream feeds into the entropy_sha256_whitener module. This module accumulates 16 consecutive 32-bit words (one SHA-256 block of 512 bits), computes the SHA-256 digest using the OpenTitan prim_sha2_32 primitive, and emits the 8-word (256-bit) digest. The compression ratio is 2:1 (16 input words produce 8 output words). When the whitener is disabled, the BIW output passes through to the FIFO without modification.

7. Output FIFO

The conditioned entropy stream is stored in a 64-entry FIFO (entropy_fifo). Each entry is 36 bits wide: 32 data bits plus 4 byte-wise odd parity bits. The FIFO includes pointer integrity checking (normal and inverted pointer pairs with mismatch detection) and parity verification on reads. An optional churn mode XORs the incoming data with a word read from the diametrically opposite FIFO position, improving entropy distribution. Overflow, underflow, parity error, and pointer error conditions are all reported to the CSR block and can trigger interrupts.

The entropy_stream_data_o and entropy_stream_vld_o top-level ports carry each word as it is written into the FIFO, not the FIFO read data, and there is no backpressure. In SEP they connect to the DRBG seed path, which distributes the generated random data to the entropy consumers.

Because the FIFO holds the same words that seed the DRBG, FIFO_CTRL.ENABLE is covered by FIPS_LOCK. The field gates only the FIFO write, so the DRBG seed stream continues whatever its value. It resets to one, keeping the FIFO_RDATA read path live out of reset; the TRNG bring-up sequence in the Programmer’s Guide closes it before FIPS_LOCK. Reads remain available while writes are disabled, so words already in the FIFO stay readable until they are drained. The access gate in Section 8 sits on top of both fields: while it is closed, the FIFO neither captures nor reads out, whatever FIFO_CTRL.ENABLE holds.

8. FIFO Access Gate

Three FIFOs are readable through the register block, and each exposes entropy that must not leave the block in the field. The output FIFO holds the words that seed the DRBG. The two observe FIFOs hold entropy ahead of conditioning, which SP 800-90B treats as a validation-time interface that may be disabled in the field. FIPS_LOCK freezes their capture enables until reset, but only once it is set. A single access enable from the integration gates all three in hardware, whatever the register configuration holds.

Table 2 lists the three FIFOs and the condition under which each captures while access is enabled.

Table 2. Readable FIFOs
FIFO Read register Captures while access is enabled

Conditioned output FIFO

FIFO_RDATA

FIFO_CTRL.ENABLE is set. The same words leave on entropy_stream_data_o whatever the FIFO does.

BIW observe FIFO

BIW_OBS_RDATA

BIW_OBS_CTRL.RAW_ENABLE is set and the boot health-test phase is done.

Raw-noise observe FIFO

NOISE_OBS_RDATA

NOISE_OBS_CTRL.RAW_ENABLE is set. The boot phase does not gate it.

While access is enabled, a read of a data register pops one word and the capture conditions above apply unchanged. While access is disabled:

  • A read of any of the three data registers returns zero and does not pop. The FIFO’s level, pointers and error status are unaffected and stay readable.

  • None of the three FIFOs captures, whatever its capture enable holds, so no entropy accumulates in a FIFO that cannot be drained and no overflow is reported. The output FIFO’s write side is blocked; the seed stream towards the DRBG is not.

  • The gate does not flush. Words already held are retained and become readable again once access is enabled.

  • The capture-enable and FIPS_LOCK fields keep their normal write behaviour.

The gate is independent of FIPS_LOCK: the lock freezes the capture enables, the gate decides whether the FIFOs capture and read out at all, and both apply. The integration decides when the access enable is asserted; SEP derives it from the lifecycle controller, as the SEP TRNG chapter describes.

The access enable is specified ahead of the hardware. Until the RTL implements it, the three FIFOs are always accessible, subject only to FIPS_LOCK.

9. Reset

The entropy source rst_ni input resets its register block, health-test/FSM state, conditioning pipeline, counters, and FIFOs. Reserved CTRL[0] reads as zero and ignores writes.

At SEP integration level, SEP_RESET_CTRL.SW_RESET_N.TRNG_SW_RST_N requests a shared reset of the entropy source and DRBG. Hardware first drains and isolates the ESRC, CSRNG, and EDN AXI ports, then asserts the common reset. This is a full-IP reset: all entropy-source CSRs and FIPS_LOCK return to reset values. Post-mux EDN adapters and the fabric entropy pool remain in the POR reset domain; they synchronously clear buffered entropy while the internal reset is active. After reset release, MODULE_ENABLE returning to one produces the normal enable pulse and restarts startup health testing before entropy is released.

10. Debug Observation Pin

DEBUG_CTRL.SELECT_SIGNAL routes one of 256 internal signals to the signal_monitor_o output, and DEBUG_CTRL.SELECT_FREQ_DIV divides it down for external observation. Some selections expose entropy ahead of conditioning: the raw per-generator noise bits, the compressed 32-bit entropy stream, and the uncompressed per-generator entropy bytes.

Both fields are covered by FIPS_LOCK: once FIPS_LOCK.LOCK is set, software can no longer retarget the pin or change its divider, so a locked, certified part cannot route pre-conditioning entropy to the observation pin. The raw and BIW observe-FIFO capture enables (NOISE_OBS_CTRL.RAW_ENABLE, BIW_OBS_CTRL.RAW_ENABLE) are held under the lock the same way, and the FIFOs themselves sit behind the access gate in Section 8. SP 800-90B treats this pre-conditioning observation as a validation-time interface that may be disabled in the field, which the lock and the gate enforce. As defense in depth, SEP also leaves signal_monitor_o unconnected and false-paths the port in synthesis; an integration that routes the pin off-chip still owns restricting access to the lifecycle or debug states in which observing pre-conditioning entropy is acceptable.

11. Memory Map and Register Reference

11.1. Memory Map

Register offsets are relative to the block base in the subsystem memory map. See SEP Memory Map for the entropy source base address and aperture. The detailed map below defines each register and its fields.

11.2. Detailed Register Map

Entropy Source Address Map

Entropy-source configuration, status, and data registers.

Register List:

Table 3. Entropy Source Address Map register list
AddressNameAccessDescription
0x0COMPONENT_IDRIdentifies the entropy-source register interface.
0x4CTRLRWControls entropy generation and conditioning.
0xCDEBUG_CTRLRWControls the external debug observation pin. FIPS_LOCK.LOCK prevents software changes to the signal selection and divider.
0x10INTR_STATUSRWReports latched interrupt status; write one to clear a bit.
0x14INTR_ENABLERWEnables individual interrupt sources.
0x18INTR_TESTWTriggers individual interrupt sources for testing.
0x1CSHA256_STATUSRReports SHA-256 conditioner progress.
0x20FIFO_CTRLRWControls the 64-entry main entropy FIFO.
0x24FIFO_STATUSRReports main FIFO occupancy and pointers.
0x28FIFO_RDATARProvides the next main FIFO word.
0x30HEALTH_TEST_CTRLRWControls continuous entropy health tests.
0x34HEALTH_TEST_WINDOW_SIZERWSets the APT and Markov window length.
0x38MARKOV_TEST_PROB_THRESHOLDSRWSets high and low Markov alternation-count thresholds.
0x40HEALTH_TEST_STATUSRWLatches 32-bit stream health-test failures: repetition [0], APT high or low [3], Markov high [4], and Markov low [5]. Write one to clear.
0x44REPETITION_TEST_COUNTRReports the highest current repetition count.
0x50APT_PATTERN_COUNT_1BITRReports the highest per-lane APT one-count in the current window.
0x54APT_PATTERN_COUNT_2BITRReports the lowest per-lane APT one-count in the current window.
0x60APT_PROPORTION_1BITRWSets the APT high one-count threshold.
0x70APT_PROPORTION_LORWSets the APT low one-count threshold.
0x80MARKOV_TEST_COUNTS_0RReports the highest and lowest per-lane alternation counts in the current Markov window.
0x90RING_OSC_ENABLERWControls noise and sample-clock ring oscillators.
0x94RING_OSC_TUNERWSelects detuned ring-oscillator tap points.
0x98RING_OSC_CTRLRWSelects each generator sample-clock source.
0xA0DECORRELATOR_CTRLRWControls generator decorrelation and byte cadence.
0xA4DECORRELATOR_MASKRWMasks bits in every generator entropy byte.
0xB4MAIN_SM_STATUSRWReports the startup health-test gate state machine.
0xC0GENERATOR_0_HEALTH_STATUSRWLatches generator 0 health-test failures; write one to clear.
0xC4GENERATOR_1_HEALTH_STATUSRWLatches generator 1 health-test failures; write one to clear.
0xC8GENERATOR_2_HEALTH_STATUSRWLatches generator 2 health-test failures; write one to clear.
0xCCGENERATOR_3_HEALTH_STATUSRWLatches generator 3 health-test failures; write one to clear.
0xD0GENERATOR_4_HEALTH_STATUSRWLatches generator 4 health-test failures; write one to clear.
0xD4GENERATOR_5_HEALTH_STATUSRWLatches generator 5 health-test failures; write one to clear.
0xD8GENERATOR_6_HEALTH_STATUSRWLatches generator 6 health-test failures; write one to clear.
0xDCGENERATOR_7_HEALTH_STATUSRWLatches generator 7 health-test failures; write one to clear.
0xE0GENERATOR_8_HEALTH_STATUSRWLatches generator 8 health-test failures; write one to clear.
0xE4GENERATOR_9_HEALTH_STATUSRWLatches generator 9 health-test failures; write one to clear.
0xE8GENERATOR_10_HEALTH_STATUSRWLatches generator 10 health-test failures; write one to clear.
0xECGENERATOR_11_HEALTH_STATUSRWLatches generator 11 health-test failures; write one to clear.
0x100GENERATOR_0_SAMPLE_CLK_CONFIGRWControls generator 0 sample-clock division.
0x104GENERATOR_1_SAMPLE_CLK_CONFIGRWControls generator 1 sample-clock division.
0x108GENERATOR_2_SAMPLE_CLK_CONFIGRWControls generator 2 sample-clock division.
0x10CGENERATOR_3_SAMPLE_CLK_CONFIGRWControls generator 3 sample-clock division.
0x110GENERATOR_4_SAMPLE_CLK_CONFIGRWControls generator 4 sample-clock division.
0x114GENERATOR_5_SAMPLE_CLK_CONFIGRWControls generator 5 sample-clock division.
0x118GENERATOR_6_SAMPLE_CLK_CONFIGRWControls generator 6 sample-clock division.
0x11CGENERATOR_7_SAMPLE_CLK_CONFIGRWControls generator 7 sample-clock division.
0x120GENERATOR_8_SAMPLE_CLK_CONFIGRWControls generator 8 sample-clock division.
0x124GENERATOR_9_SAMPLE_CLK_CONFIGRWControls generator 9 sample-clock division.
0x128GENERATOR_10_SAMPLE_CLK_CONFIGRWControls generator 10 sample-clock division.
0x12CGENERATOR_11_SAMPLE_CLK_CONFIGRWControls generator 11 sample-clock division.
0x130HT_WATERMARK_NUMRWSelects the counter and direction for the shared health-test watermark. Changing the selection preserves the current watermark.
0x134HT_WATERMARKRReports one selector-dependent watermark. A CTRL.MODULE_ENABLE rising edge arms high modes to zero and low modes to 0xFFFF.
0x138REPCNT_TOTAL_FAILSRCounts repetition-test failures since the last CTRL.MODULE_ENABLE rising edge.
0x13CAPT_HI_TOTAL_FAILSRCounts APT high-threshold failures since the last CTRL.MODULE_ENABLE rising edge.
0x140APT_LO_TOTAL_FAILSRCounts APT low-threshold failures since the last CTRL.MODULE_ENABLE rising edge.
0x144MARKOV_HI_TOTAL_FAILSRCounts Markov high-threshold failures since the last CTRL.MODULE_ENABLE rising edge.
0x148MARKOV_LO_TOTAL_FAILSRCounts Markov low-threshold failures since the last CTRL.MODULE_ENABLE rising edge.
0x14CALERT_SUMMARY_FAIL_COUNTSRCounts consecutive health-test windows containing any failure and clears after an accepted passing window.
0x150ALERT_FAIL_COUNTSRReports saturating per-test failure counts for the current alert sequence.
0x154FIPS_LOCKRWLocks entropy generation, conditioning, and health-test configuration against software writes until hardware reset.
0x158ALERT_THRESHOLDRWSets the failing-window count that enters the persistent-failure alert path.
0x15CMIN_ENTROPY_HRWStores assessed per-sample min-entropy in unsigned Q4.4 format for advisory threshold calculation.
0x160RECOMMENDED_THRESHOLDSRReports advisory repetition and APT thresholds derived from MIN_ENTROPY_H.
0x164BIW_OBS_CTRLRWControls copy-only capture of the post-BIW, pre-SHA stream.
0x168BIW_OBS_STATUSRReports BIW observe FIFO occupancy and pointers.
0x16CBIW_OBS_RDATARProvides the next post-BIW, pre-SHA observe word.
0x170NOISE_OBS_CTRLRWControls copy-only capture of one pre-decorrelator generator lane.
0x174NOISE_OBS_STATUSRReports raw-noise observe FIFO occupancy and pointers.
0x178NOISE_OBS_RDATARProvides the next packed raw-noise observe word.

Register Details:

COMPONENT_ID

Table 4. entropy_source.COMPONENT_ID fields
BitsFieldAccessResetDescription
31:28MAJOR_VERSIONR0x0Major interface version.
27:24MINOR_VERSIONR0x1Minor interface version.
23:16Reserved--Reserved
15:0NAMER0x1Entropy-source component identifier.

CTRL

Table 5. entropy_source.CTRL fields
BitsFieldAccessResetDescription
31:29Reserved--Reserved
28SHA256_WHITENING_ENABLERW0x1Enables SHA-256 conditioning of each 512-bit BIW input block into a 256-bit digest. When clear, BIW words pass directly to the FIFO. FIPS_LOCK.LOCK prevents software changes.
27:26Reserved--Reserved
25:16DOWNSAMPLE_RATERW0x0Selects every (N+1)th decorrelator output while BIW extraction is bypassed. FIPS_LOCK.LOCK prevents software changes.
15:9Reserved--Reserved
8BYPASS_ENTROPY_COMPRESSORRW0x0Bypasses BIW extraction and writes the twelve generator bytes to the FIFO as three 32-bit words, word 0 first, with generator 4n+k in bits [8k+7:8k] of word n. FIPS_LOCK.LOCK prevents software changes.
7:5Reserved--Reserved
4AUTOTUNE_ENABLERW0x0Enables per-generator automatic detuning after a lane health-test failure. FIPS_LOCK.LOCK prevents software changes.
3:2Reserved--Reserved
1MODULE_ENABLERW0x1Enables startup health testing and entropy output. Clearing this field holds the main state machine idle. FIPS_LOCK.LOCK prevents software changes.
0RSVD0R0x0Reserved; reads zero and ignores writes.

DEBUG_CTRL

Table 6. entropy_source.DEBUG_CTRL fields
BitsFieldAccessResetDescription
31:11Reserved--Reserved
10:8SELECT_FREQ_DIVRW0x0Selects observation division by 1, 2, 4, 8, 16, 32, 64, or 128. FIPS_LOCK.LOCK prevents software changes.
7:0SELECT_SIGNALRW0x0Selects the observed signal: generator noise bits [11:0], sample clocks [27:16], BIW data [63:32], FIFO input [95:64], or generator bytes [223:128]. Other selections drive the divider input low. FIPS_LOCK.LOCK prevents software changes.

INTR_STATUS

Table 7. entropy_source.INTR_STATUS fields
BitsFieldAccessResetDescription
31:29Reserved--Reserved
28NOISE_OBS_OVERFLOWRW1C0x0Indicates that a raw-noise observe FIFO word was discarded while full. Write one to clear.
27:25Reserved--Reserved
24BIW_OBS_OVERFLOWRW1C0x0Indicates that a BIW observe FIFO word was discarded while full. Write one to clear.
23:21Reserved--Reserved
20AUTOTUNE_FAILRW1C0x0Indicates a per-generator health-test failure while automatic detuning is enabled. Write one to clear.
19:17Reserved--Reserved
16PERSISTENT_FAILURERW1C0x0Indicates a persistent health-test failure or health-test counter error. Write one to clear.
15:13Reserved--Reserved
12FIFO_UNDERFLOWRW1C0x0Indicates that software read the empty main FIFO. Write one to clear.
11:9Reserved--Reserved
8FIFO_OVERFLOWRW1C0x0Indicates that a main FIFO write was discarded while full. Write one to clear.
7:5Reserved--Reserved
4FIFO_ERRORRW1C0x0Indicates a FIFO integrity error. Write one to clear.
3:1Reserved--Reserved
0HEALTH_TEST_FAILEDRW1C0x0Indicates a failure in the 32-bit entropy-stream health tests. Write one to clear.

INTR_ENABLE

Table 8. entropy_source.INTR_ENABLE fields
BitsFieldAccessResetDescription
31:29Reserved--Reserved
28NOISE_OBS_OVERFLOWRW0x0Enables the raw-noise observe FIFO overflow interrupt.
27:25Reserved--Reserved
24BIW_OBS_OVERFLOWRW0x0Enables the BIW observe FIFO overflow interrupt.
23:21Reserved--Reserved
20AUTOTUNE_FAILRW0x0Enables the automatic-detuning failure interrupt.
19:17Reserved--Reserved
16PERSISTENT_FAILURERW0x0Enables the persistent-failure interrupt.
15:13Reserved--Reserved
12FIFO_UNDERFLOWRW0x0Enables the main FIFO underflow interrupt.
11:9Reserved--Reserved
8FIFO_OVERFLOWRW0x0Enables the main FIFO overflow interrupt.
7:5Reserved--Reserved
4FIFO_ERRORRW0x0Enables the FIFO integrity-error interrupt.
3:1Reserved--Reserved
0HEALTH_TEST_FAILEDRW0x0Enables the health-test failure interrupt.

INTR_TEST

Table 9. entropy_source.INTR_TEST fields
BitsFieldAccessResetDescription
31:29Reserved--Reserved
28NOISE_OBS_OVERFLOWW 1P0x0Write one to pulse the raw-noise observe FIFO overflow interrupt source.
27:25Reserved--Reserved
24BIW_OBS_OVERFLOWW 1P0x0Write one to pulse the BIW observe FIFO overflow interrupt source.
23:21Reserved--Reserved
20AUTOTUNE_FAILW 1P0x0Write one to pulse the automatic-detuning failure interrupt source.
19:17Reserved--Reserved
16PERSISTENT_FAILUREW 1P0x0Write one to pulse the persistent-failure interrupt source.
15:13Reserved--Reserved
12FIFO_UNDERFLOWW 1P0x0Write one to pulse the main FIFO underflow interrupt source.
11:9Reserved--Reserved
8FIFO_OVERFLOWW 1P0x0Write one to pulse the main FIFO overflow interrupt source.
7:5Reserved--Reserved
4FIFO_ERRORW 1P0x0Write one to pulse the FIFO integrity-error interrupt source.
3:1Reserved--Reserved
0HEALTH_TEST_FAILEDW 1P0x0Write one to pulse the health-test failure interrupt source.

SHA256_STATUS

Table 10. entropy_source.SHA256_STATUS fields
BitsFieldAccessResetDescription
31:12Reserved--Reserved
11:8OUTPUT_COUNTR0x0Number of 32-bit digest words remaining for output. Reports 8 when a digest becomes available, decrements through 0 as words are accepted, and remains 0 while idle or bypassed.
7:4INPUT_COUNTR0x0Number of 32-bit words currently accumulated in the 512-bit input block.
3:1Reserved--Reserved
0BUSYR0x0Indicates that SHA-256 processing or digest output is active.

FIFO_CTRL

Table 11. entropy_source.FIFO_CTRL fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4ENTROPY_CHURN_ENABLERW0x0XORs each incoming word with the FIFO entry 32 positions ahead of the write pointer. FIPS_LOCK.LOCK prevents software changes.
3:1Reserved--Reserved
0ENABLERW0x1Enables FIFO writes. Reads remain available while writes are disabled. Words offered to the FIFO are also the DRBG seed stream, which this field does not gate. FIPS_LOCK.LOCK prevents software changes.

FIFO_STATUS

Table 12. entropy_source.FIFO_STATUS fields
BitsFieldAccessResetDescription
31:22Reserved--Reserved
21:16RPTRR0x0Current FIFO read pointer.
15:14Reserved--Reserved
13:8WPTRR0x0Current FIFO write pointer.
7Reserved--Reserved
6:0LEVELR0x0Number of valid 32-bit words in the FIFO.

FIFO_RDATA

Table 13. entropy_source.FIFO_RDATA fields
BitsFieldAccessResetDescription
31:0RDATAR RMOD0x0Returns and removes the next FIFO word. Reading an empty FIFO sets INTR_STATUS.FIFO_UNDERFLOW and returns undefined data.

HEALTH_TEST_CTRL

Table 14. entropy_source.HEALTH_TEST_CTRL fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:8REPETITION_LIMITRW0x19Maximum allowed per-lane repetition count before the test fails. FIPS_LOCK.LOCK prevents software changes.
7:3Reserved--Reserved
2:0ENABLERW0x7Enables the repetition-count, adaptive-proportion, and Markov tests in bits 0, 1, and 2. Disabling a test clears its state.

HEALTH_TEST_WINDOW_SIZE

Table 15. entropy_source.HEALTH_TEST_WINDOW_SIZE fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:0SIZERW0x800Number of valid entropy words per APT and Markov window. FIPS_LOCK.LOCK requires a value of at least 1024 and prevents software changes.

MARKOV_TEST_PROB_THRESHOLDS

Table 16. entropy_source.MARKOV_TEST_PROB_THRESHOLDS fields
BitsFieldAccessResetDescription
31:16PROB_10_THRESHOLDRW0x64Minimum allowed per-lane alternation count at the window boundary. FIPS_LOCK.LOCK prevents software changes.
15:0PROB_01_THRESHOLDRW0x4B0Maximum allowed per-lane alternation count at the window boundary. FIPS_LOCK.LOCK prevents software changes.

HEALTH_TEST_STATUS

Table 17. entropy_source.HEALTH_TEST_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0HEALTH_STATUSRW1C0x0Latched health-test failure bits; write one to clear.

REPETITION_TEST_COUNT

Table 18. entropy_source.REPETITION_TEST_COUNT fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:0REPETITION_COUNTR0x0Highest current repetition count among the 32 entropy lanes.

APT_PATTERN_COUNT_1BIT

Table 19. entropy_source.APT_PATTERN_COUNT_1BIT fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:0PATTERN_COUNTR0x0Highest current one-count among the 32 entropy lanes.

APT_PATTERN_COUNT_2BIT

Table 20. entropy_source.APT_PATTERN_COUNT_2BIT fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:0PATTERN_COUNTR0x0Lowest current one-count among the 32 entropy lanes.

APT_PROPORTION_1BIT

Table 21. entropy_source.APT_PROPORTION_1BIT fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:0LIMITRW0x4B0Maximum allowed per-lane one-count at the window boundary. FIPS_LOCK.LOCK prevents software changes.

APT_PROPORTION_LO

Table 22. entropy_source.APT_PROPORTION_LO fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:0LIMITRW0x350Minimum allowed per-lane one-count at the window boundary. Zero disables the low-side test. FIPS_LOCK.LOCK prevents software changes.

MARKOV_TEST_COUNTS_0

Table 23. entropy_source.MARKOV_TEST_COUNTS_0 fields
BitsFieldAccessResetDescription
31:16COUNT_10R0x0Lowest current per-lane alternation count.
15:0COUNT_01R0x0Highest current per-lane alternation count.

RING_OSC_ENABLE

Table 24. entropy_source.RING_OSC_ENABLE fields
BitsFieldAccessResetDescription
31:24Reserved--Reserved
23:12SAMPLE_CLK_ENABLERW0xFFFEnables the shared sample-clock ring oscillator when any bit is set. FIPS_LOCK.LOCK prevents software changes.
11:0ENABLERW0xFFFEnables each generator noise ring oscillator. FIPS_LOCK.LOCK prevents software changes.

RING_OSC_TUNE

Table 25. entropy_source.RING_OSC_TUNE fields
BitsFieldAccessResetDescription
31:24Reserved--Reserved
23:12SAMPLE_CLK_DETUNERW0x0Selects the full-length (longer) shared sample-clock oscillator tap, lowering its frequency, when any bit is set. FIPS_LOCK.LOCK prevents software changes.
11:0DETUNERW0x0Selects the full-length (longer) tap for each noise ring oscillator, lowering its frequency, while automatic tuning is disabled; the reset value (clear) selects the shorter tap. FIPS_LOCK.LOCK prevents software changes.

RING_OSC_CTRL

Table 26. entropy_source.RING_OSC_CTRL fields
BitsFieldAccessResetDescription
31:12Reserved--Reserved
11:0SAMPLE_CLK_SELECTRW0xFFFSelects the shared internal sample clock when set and the external sample clock when clear. FIPS_LOCK.LOCK prevents software changes.

DECORRELATOR_CTRL

Table 27. entropy_source.DECORRELATOR_CTRL fields
BitsFieldAccessResetDescription
31:12SAMPLE_CLK_DIVRW0x3FSets the generator byte-output period to this value plus one sample-clock cycles. FIPS_LOCK.LOCK prevents software changes.
11:0BYPASSRW0x0Bypasses the LFSR feedback path independently for each generator. FIPS_LOCK.LOCK prevents software changes.

DECORRELATOR_MASK

Table 28. entropy_source.DECORRELATOR_MASK fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0ENTROPY_BYTE_MASKRW0xFFEnables corresponding entropy-byte bits when set. FIPS_LOCK.LOCK prevents software changes.

MAIN_SM_STATUS

Table 29. entropy_source.MAIN_SM_STATUS fields
BitsFieldAccessResetDescription
31:14Reserved--Reserved
13ALERT_CNTR_CLR_OKR0x0Indicates that a passing window may clear alert failure counters.
12BOOT_PHASE_DONER0x0Indicates successful completion of startup health testing and permits entropy output.
11ERRRW1C0x0Latches an illegal state or health-test counter integrity error. Write one or reset the block to clear.
10ALERTRW1C0x0Latches entry into the persistent-failure alert path, which halts entropy output. Write one or reset the block to clear.
9IDLER0x0Indicates that the state machine is idle.
8:0STATER0x0Current sparse-encoded state-machine state.

GENERATOR_0_HEALTH_STATUS

Table 30. entropy_source.GENERATOR_0_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 0 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_1_HEALTH_STATUS

Table 31. entropy_source.GENERATOR_1_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 1 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_2_HEALTH_STATUS

Table 32. entropy_source.GENERATOR_2_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 2 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_3_HEALTH_STATUS

Table 33. entropy_source.GENERATOR_3_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 3 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_4_HEALTH_STATUS

Table 34. entropy_source.GENERATOR_4_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 4 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_5_HEALTH_STATUS

Table 35. entropy_source.GENERATOR_5_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 5 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_6_HEALTH_STATUS

Table 36. entropy_source.GENERATOR_6_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 6 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_7_HEALTH_STATUS

Table 37. entropy_source.GENERATOR_7_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 7 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_8_HEALTH_STATUS

Table 38. entropy_source.GENERATOR_8_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 8 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_9_HEALTH_STATUS

Table 39. entropy_source.GENERATOR_9_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 9 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_10_HEALTH_STATUS

Table 40. entropy_source.GENERATOR_10_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 10 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_11_HEALTH_STATUS

Table 41. entropy_source.GENERATOR_11_HEALTH_STATUS fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0STATUSRW1C0x0Generator 11 failure bits use the HEALTH_TEST_STATUS allocation.

GENERATOR_0_SAMPLE_CLK_CONFIG

Table 42. entropy_source.GENERATOR_0_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x0Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_1_SAMPLE_CLK_CONFIG

Table 43. entropy_source.GENERATOR_1_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x0Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_2_SAMPLE_CLK_CONFIG

Table 44. entropy_source.GENERATOR_2_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x1Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_3_SAMPLE_CLK_CONFIG

Table 45. entropy_source.GENERATOR_3_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x1Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_4_SAMPLE_CLK_CONFIG

Table 46. entropy_source.GENERATOR_4_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x2Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_5_SAMPLE_CLK_CONFIG

Table 47. entropy_source.GENERATOR_5_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x2Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_6_SAMPLE_CLK_CONFIG

Table 48. entropy_source.GENERATOR_6_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x0Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_7_SAMPLE_CLK_CONFIG

Table 49. entropy_source.GENERATOR_7_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x0Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_8_SAMPLE_CLK_CONFIG

Table 50. entropy_source.GENERATOR_8_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x1Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_9_SAMPLE_CLK_CONFIG

Table 51. entropy_source.GENERATOR_9_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x1Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_10_SAMPLE_CLK_CONFIG

Table 52. entropy_source.GENERATOR_10_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x2Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

GENERATOR_11_SAMPLE_CLK_CONFIG

Table 53. entropy_source.GENERATOR_11_SAMPLE_CLK_CONFIG fields
BitsFieldAccessResetDescription
31:5Reserved--Reserved
4:0SAMPLE_CLK_DIVIDERW0x2Selects division by 1, 2, 4, 8, 16, or 32. FIPS_LOCK.LOCK prevents software changes.

HT_WATERMARK_NUM

Table 54. entropy_source.HT_WATERMARK_NUM fields
BitsFieldAccessResetDescription
31:4Reserved--Reserved
3:0WATERMARK_NUMRW0x0Selects the watermark source. Unsupported values select REPCNT_HI.

HT_WATERMARK

Table 55. entropy_source.HT_WATERMARK fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:0WATERMARK_VALUER0x0Current shared watermark value.

REPCNT_TOTAL_FAILS

Table 56. entropy_source.REPCNT_TOTAL_FAILS fields
BitsFieldAccessResetDescription
31:0FAIL_COUNTR0x0Total repetition-test failure pulses.

APT_HI_TOTAL_FAILS

Table 57. entropy_source.APT_HI_TOTAL_FAILS fields
BitsFieldAccessResetDescription
31:0FAIL_COUNTR0x0Total APT high-threshold failure pulses.

APT_LO_TOTAL_FAILS

Table 58. entropy_source.APT_LO_TOTAL_FAILS fields
BitsFieldAccessResetDescription
31:0FAIL_COUNTR0x0Total APT low-threshold failure pulses.

MARKOV_HI_TOTAL_FAILS

Table 59. entropy_source.MARKOV_HI_TOTAL_FAILS fields
BitsFieldAccessResetDescription
31:0FAIL_COUNTR0x0Total Markov high-threshold failure pulses.

MARKOV_LO_TOTAL_FAILS

Table 60. entropy_source.MARKOV_LO_TOTAL_FAILS fields
BitsFieldAccessResetDescription
31:0FAIL_COUNTR0x0Total Markov low-threshold failure pulses.

ALERT_SUMMARY_FAIL_COUNTS

Table 61. entropy_source.ALERT_SUMMARY_FAIL_COUNTS fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:0ANY_FAIL_COUNTR0x0Number of consecutive failing health-test windows.

ALERT_FAIL_COUNTS

Table 62. entropy_source.ALERT_FAIL_COUNTS fields
BitsFieldAccessResetDescription
31:20Reserved--Reserved
19:16REPCNT_FAIL_COUNTR0x0Saturating repetition-test failure count.
15:12MARKOV_HI_FAIL_COUNTR0x0Saturating Markov high-threshold failure count.
11:8MARKOV_LO_FAIL_COUNTR0x0Saturating Markov low-threshold failure count.
7:4APT_HI_FAIL_COUNTR0x0Saturating APT high-threshold failure count.
3:0APT_LO_FAIL_COUNTR0x0Saturating APT low-threshold failure count.

FIPS_LOCK

Table 63. entropy_source.FIPS_LOCK fields
BitsFieldAccessResetDescription
31:1Reserved--Reserved
0LOCKRW1S0x0Write one to set the configuration lock. Only hardware reset clears it.

ALERT_THRESHOLD

Table 64. entropy_source.ALERT_THRESHOLD fields
BitsFieldAccessResetDescription
31:16Reserved--Reserved
15:0THRESHOLDRW0x4Number of consecutive failing windows that triggers the alert; zero disables this trigger. FIPS_LOCK.LOCK prevents software changes.

MIN_ENTROPY_H

Table 65. entropy_source.MIN_ENTROPY_H fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:0HRW0xCAssessed min-entropy in bits per sample. FIPS_LOCK.LOCK prevents software changes.
Table 66. entropy_source.RECOMMENDED_THRESHOLDS fields
BitsFieldAccessResetDescription
31:16APT_LIMITR0x0Advisory APT high cutoff derived for a 1024-sample window.
15:0RCT_LIMITR0x0Advisory repetition-count cutoff C = 1 + ceil(20 / H).

BIW_OBS_CTRL

Table 67. entropy_source.BIW_OBS_CTRL fields
BitsFieldAccessResetDescription
31:1Reserved--Reserved
0RAW_ENABLERW0x0Enables capture after startup health testing completes. FIPS_LOCK.LOCK prevents software changes.

BIW_OBS_STATUS

Table 68. entropy_source.BIW_OBS_STATUS fields
BitsFieldAccessResetDescription
31:22Reserved--Reserved
21:16RPTRR0x0Current BIW observe FIFO read pointer.
15:14Reserved--Reserved
13:8WPTRR0x0Current BIW observe FIFO write pointer.
7Reserved--Reserved
6:0LEVELR0x0Number of valid 32-bit words in the BIW observe FIFO.

BIW_OBS_RDATA

Table 69. entropy_source.BIW_OBS_RDATA fields
BitsFieldAccessResetDescription
31:0RDATAR RMOD0x0Returns and removes the next BIW observe FIFO word.

NOISE_OBS_CTRL

Table 70. entropy_source.NOISE_OBS_CTRL fields
BitsFieldAccessResetDescription
31:8Reserved--Reserved
7:4LANE_SELRW0x0Selects generator lane 0 through 11; other values select lane 0. Changing lanes restarts packing and flushes buffered words.
3:2Reserved--Reserved
1FLUSHW 1P0x0Write one to discard buffered raw-noise words. Changing LANE_SEL also flushes the FIFO.
0RAW_ENABLERW0x0Enables LSB-first packing of selected-lane samples into 32-bit observe words. FIPS_LOCK.LOCK prevents software changes.

NOISE_OBS_STATUS

Table 71. entropy_source.NOISE_OBS_STATUS fields
BitsFieldAccessResetDescription
31:22Reserved--Reserved
21:16RPTRR0x0Current raw-noise observe FIFO read pointer.
15:14Reserved--Reserved
13:8WPTRR0x0Current raw-noise observe FIFO write pointer.
7Reserved--Reserved
6:0LEVELR0x0Number of valid 32-bit words in the raw-noise observe FIFO.

NOISE_OBS_RDATA

Table 72. entropy_source.NOISE_OBS_RDATA fields
BitsFieldAccessResetDescription
31:0RDATAR RMOD0x0Returns and removes 32 LSB-first pre-decorrelator samples from the selected lane.