addrmap OpenTitan_EntropySource {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="InterruptState";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = woclr;
            } es_entropy_valid[0:0];
            field {
                sw = rw;
                onwrite = woclr;
            } es_health_test_failed[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
                onwrite = woclr;
            } es_observe_fifo_ready[2:2];
            field {
                sw = rw;
                onwrite = woclr;
            } es_fatal_err[3:3];
    } InterruptState @ 0x0;
    reg {
        name="InterruptEnable";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } es_entropy_valid[0:0];
            field {
                sw = rw;
            } es_health_test_failed[1:1];
            field {
                sw = rw;
            } es_observe_fifo_ready[2:2];
            field {
                sw = rw;
            } es_fatal_err[3:3];
    } InterruptEnable @ 0x4;
    reg {
        name="InterruptTest";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } es_entropy_valid[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } es_health_test_failed[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } es_observe_fifo_ready[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } es_fatal_err[3:3];
    } InterruptTest @ 0x8;
    reg {
        name="AlertTest";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } recov_alert[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } fatal_alert[1:1];
    } AlertTest @ 0xc;
    reg {
        name="RegisterWriteEnableForModuleEnable";
        regwidth=0x20;
            field {
                sw = rw;
                onwrite = wzc;
                reset=1'b1;
            } ME_REGWEN[0:0];
    } RegisterWriteEnableForModuleEnable @ 0x10;
    reg {
        name="RegisterWriteEnableForControlAndThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } SW_REGUPD[0:0];
    } RegisterWriteEnableForControlAndThresholds @ 0x14;
    reg {
        name="RegisterWriteEnableForAllControls";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } REGWEN[0:0];
    } RegisterWriteEnableForAllControls @ 0x18;
    reg {
        name="Revision";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=8'b11;
            } ABI_REVISION[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=8'b11;
            } HW_REVISION[15:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=8'b1;
            } CHIP_TYPE[23:16];
    } Revision @ 0x1c;
    reg {
        name="ModuleEnable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
                reset=4'b1001;
            } MODULE_ENABLE[3:0];
    } ModuleEnable @ 0x20;
    reg {
        name="Configuration";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=4'b1001;
            } FIPS_ENABLE[3:0];
            field {
                sw = rw;
                reset=4'b1001;
            } ENTROPY_DATA_REG_ENABLE[7:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=4'b1001;
            } THRESHOLD_SCOPE[15:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=4'b1001;
            } RNG_BIT_ENABLE[23:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RNG_BIT_SEL[25:24];
    } Configuration @ 0x24;
    reg {
        name="EntropyControl";
        regwidth=0x20;
            field {
                sw = rw;
                reset=4'b1001;
            } ES_ROUTE[3:0];
            field {
                sw = rw;
                reset=4'b1001;
            } ES_TYPE[7:4];
    } EntropyControl @ 0x28;
    reg {
        name="EntropyDataBits";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } ENTROPY_DATA[31:0];
    } EntropyDataBits @ 0x2c;
    reg {
        name="HealthTestWindows";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1000000000;
            } FIPS_WINDOW[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1100000;
            } BYPASS_WINDOW[31:16];
    } HealthTestWindows @ 0x30;
    reg {
        name="RepetitionCountTestThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } FIPS_THRESH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } BYPASS_THRESH[31:16];
    } RepetitionCountTestThresholds @ 0x34;
    reg {
        name="RepetitionCountSymbolTestThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } FIPS_THRESH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } BYPASS_THRESH[31:16];
    } RepetitionCountSymbolTestThresholds @ 0x38;
    reg {
        name="AdaptiveProportionTestHighThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } FIPS_THRESH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } BYPASS_THRESH[31:16];
    } AdaptiveProportionTestHighThresholds @ 0x3c;
    reg {
        name="AdaptiveProportionTestLowThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_THRESH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYPASS_THRESH[31:16];
    } AdaptiveProportionTestLowThresholds @ 0x40;
    reg {
        name="BucketTestThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } FIPS_THRESH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } BYPASS_THRESH[31:16];
    } BucketTestThresholds @ 0x44;
    reg {
        name="MarkovTestHighThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } FIPS_THRESH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } BYPASS_THRESH[31:16];
    } MarkovTestHighThresholds @ 0x48;
    reg {
        name="MarkovTestLowThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_THRESH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYPASS_THRESH[31:16];
    } MarkovTestLowThresholds @ 0x4c;
    reg {
        name="ExternalHealthTestHighThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } FIPS_THRESH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } BYPASS_THRESH[31:16];
    } ExternalHealthTestHighThresholds @ 0x50;
    reg {
        name="ExternalHealthTestLowThresholds";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_THRESH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYPASS_THRESH[31:16];
    } ExternalHealthTestLowThresholds @ 0x54;
    reg {
        name="RepetitionCountTestHighWatermarks";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_WATERMARK[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYPASS_WATERMARK[31:16];
    } RepetitionCountTestHighWatermarks @ 0x58;
    reg {
        name="RepetitionCountSymbolTestHighWatermarks";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_WATERMARK[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYPASS_WATERMARK[31:16];
    } RepetitionCountSymbolTestHighWatermarks @ 0x5c;
    reg {
        name="AdaptiveProportionTestHighWatermarks";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_WATERMARK[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYPASS_WATERMARK[31:16];
    } AdaptiveProportionTestHighWatermarks @ 0x60;
    reg {
        name="AdaptiveProportionTestLowWatermarks";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } FIPS_WATERMARK[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } BYPASS_WATERMARK[31:16];
    } AdaptiveProportionTestLowWatermarks @ 0x64;
    reg {
        name="ExternalHealthTestHighWatermarks";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_WATERMARK[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYPASS_WATERMARK[31:16];
    } ExternalHealthTestHighWatermarks @ 0x68;
    reg {
        name="ExternalHealthTestLowWatermarks";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } FIPS_WATERMARK[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } BYPASS_WATERMARK[31:16];
    } ExternalHealthTestLowWatermarks @ 0x6c;
    reg {
        name="BucketTestHighWatermarks";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_WATERMARK[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYPASS_WATERMARK[31:16];
    } BucketTestHighWatermarks @ 0x70;
    reg {
        name="MarkovTestHighWatermarks";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_WATERMARK[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYPASS_WATERMARK[31:16];
    } MarkovTestHighWatermarks @ 0x74;
    reg {
        name="MarkovTestLowWatermarks";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } FIPS_WATERMARK[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111111;
            } BYPASS_WATERMARK[31:16];
    } MarkovTestLowWatermarks @ 0x78;
    reg {
        name="RepetitionCountTestFailureCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } REPCNT_TOTAL_FAILS[31:0];
    } RepetitionCountTestFailureCounter @ 0x7c;
    reg {
        name="RepetitionCountSymbolTestFailureCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } REPCNTS_TOTAL_FAILS[31:0];
    } RepetitionCountSymbolTestFailureCounter @ 0x80;
    reg {
        name="AdaptiveProportionHighTestFailureCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ADAPTP_HI_TOTAL_FAILS[31:0];
    } AdaptiveProportionHighTestFailureCounter @ 0x84;
    reg {
        name="AdaptiveProportionLowTestFailureCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ADAPTP_LO_TOTAL_FAILS[31:0];
    } AdaptiveProportionLowTestFailureCounter @ 0x88;
    reg {
        name="BucketTestFailureCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BUCKET_TOTAL_FAILS[31:0];
    } BucketTestFailureCounter @ 0x8c;
    reg {
        name="MarkovHighTestFailureCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MARKOV_HI_TOTAL_FAILS[31:0];
    } MarkovHighTestFailureCounter @ 0x90;
    reg {
        name="MarkovLowTestFailureCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MARKOV_LO_TOTAL_FAILS[31:0];
    } MarkovLowTestFailureCounter @ 0x94;
    reg {
        name="ExternalHealthTestHighThresholdFailureCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EXTHT_HI_TOTAL_FAILS[31:0];
    } ExternalHealthTestHighThresholdFailureCounter @ 0x98;
    reg {
        name="ExternalHealthTestLowThresholdFailureCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EXTHT_LO_TOTAL_FAILS[31:0];
    } ExternalHealthTestLowThresholdFailureCounter @ 0x9c;
    reg {
        name="AlertThreshold";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b10;
            } ALERT_THRESHOLD[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=16'b1111111111111101;
            } ALERT_THRESHOLD_INV[31:16];
    } AlertThreshold @ 0xa0;
    reg {
        name="AlertSummaryFailureCounts";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ANY_FAIL_COUNT[15:0];
    } AlertSummaryFailureCounts @ 0xa4;
    reg {
        name="AlertFailureCounts";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } REPCNT_FAIL_COUNT[7:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ADAPTP_HI_FAIL_COUNT[11:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ADAPTP_LO_FAIL_COUNT[15:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BUCKET_FAIL_COUNT[19:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MARKOV_HI_FAIL_COUNT[23:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MARKOV_LO_FAIL_COUNT[27:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } REPCNTS_FAIL_COUNT[31:28];
    } AlertFailureCounts @ 0xa8;
    reg {
        name="ExternalHealthTestAlertFailureCounts";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EXTHT_HI_FAIL_COUNT[3:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EXTHT_LO_FAIL_COUNT[7:4];
    } ExternalHealthTestAlertFailureCounts @ 0xac;
    reg {
        name="FirmwareOverrideControl";
        regwidth=0x20;
            field {
                sw = rw;
                reset=4'b1001;
            } FW_OV_MODE[3:0];
            field {
                sw = rw;
                reset=4'b1001;
            } FW_OV_ENTROPY_INSERT[7:4];
    } FirmwareOverrideControl @ 0xb0;
    reg {
        name="FirmwareOverrideSHA3BlockStartControl";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
                reset=4'b1001;
            } FW_OV_INSERT_START[3:0];
    } FirmwareOverrideSHA3BlockStartControl @ 0xb4;
    reg {
        name="FirmwareOverrideFIFOWriteFullStatus";
        regwidth=0x20;
            field {
                sw = r;
            } FW_OV_WR_FIFO_FULL[0:0];
    } FirmwareOverrideFIFOWriteFullStatus @ 0xb8;
    reg {
        name="FirmwareOverrideObserveFIFOOverflowStatus";
        regwidth=0x20;
            field {
                sw = rw;
                onwrite = wzc;
            } FW_OV_RD_FIFO_OVERFLOW[0:0];
    } FirmwareOverrideObserveFIFOOverflowStatus @ 0xbc;
    reg {
        name="FirmwareOverrideObserveFIFORead";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } FW_OV_RD_DATA[31:0];
    } FirmwareOverrideObserveFIFORead @ 0xc0;
    reg {
        name="FirmwareOverrideFIFOWrite";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = w;
            } FW_OV_WR_DATA[31:0];
    } FirmwareOverrideFIFOWrite @ 0xc4;
    reg {
        name="ObserveFIFOThreshold";
        regwidth=0x20;
            field {
                sw = rw;
                reset=7'b100000;
            } OBSERVE_FIFO_THRESH[6:0];
    } ObserveFIFOThreshold @ 0xc8;
    reg {
        name="ObserveFIFODepth";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } OBSERVE_FIFO_DEPTH[6:0];
    } ObserveFIFODepth @ 0xcc;
    reg {
        name="DebugStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENTROPY_FIFO_DEPTH[2:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SHA3_FSM[5:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SHA3_BLOCK_PR[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SHA3_SQUEEZING[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SHA3_ABSORBED[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SHA3_ERR[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } MAIN_SM_IDLE[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MAIN_SM_BOOT_DONE[17:17];
    } DebugStatus @ 0xd0;
    reg {
        name="RecoverableAlertStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIPS_ENABLE_FIELD_ALERT[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENTROPY_DATA_REG_EN_FIELD_ALERT[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MODULE_ENABLE_FIELD_ALERT[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } THRESHOLD_SCOPE_FIELD_ALERT[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RNG_BIT_ENABLE_FIELD_ALERT[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FW_OV_SHA3_START_FIELD_ALERT[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FW_OV_MODE_FIELD_ALERT[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FW_OV_ENTROPY_INSERT_FIELD_ALERT[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES_ROUTE_FIELD_ALERT[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES_TYPE_FIELD_ALERT[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES_MAIN_SM_ALERT[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES_BUS_CMP_ALERT[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES_THRESH_CFG_ALERT[14:14];
    } RecoverableAlertStatus @ 0xd4;
    reg {
        name="HardwareDetectionOfErrorConditionsStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SFIFO_ESRNG_ERR[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SFIFO_OBSERVE_ERR[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SFIFO_ESFINAL_ERR[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES_ACK_SM_ERR[20:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES_MAIN_SM_ERR[21:21];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES_CNTR_ERR[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIFO_WRITE_ERR[28:28];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIFO_READ_ERR[29:29];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIFO_STATE_ERR[30:30];
    } HardwareDetectionOfErrorConditionsStatus @ 0xd8;
    reg {
        name="TestErrorConditions";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ERR_CODE_TEST[4:0];
    } TestErrorConditions @ 0xdc;
    reg {
        name="MainStateMachineStateDebug";
        regwidth=0x20;
            field {
                sw = r;
                reset=9'b11110101;
            } MAIN_SM_STATE[8:0];
    } MainStateMachineStateDebug @ 0xe0;
} Registers_addrmap;


};