addrmap OpenTitan_OneTimeProgrammableMemoryController {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="InterruptState";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } otp_operation_done[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } otp_error[1:1];
    } InterruptState @ 0x0;
    reg {
        name="InterruptEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } otp_operation_done[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } otp_error[1:1];
    } InterruptEnable @ 0x4;
    reg {
        name="InterruptTest";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } otp_operation_done[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } otp_error[1:1];
    } InterruptTest @ 0x8;
    reg {
        name="AlertTest";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } fatal_macro_error[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } fatal_check_error[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } fatal_bus_integ_error[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } fatal_prim_otp_alert[3:3];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } recov_prim_otp_alert[4:4];
    } AlertTest @ 0xc;
    reg {
        name="Status";
        regwidth=0x20;
            field {
                sw = r;
            } VENDOR_TEST_ERROR[0:0];
            field {
                sw = r;
            } CREATOR_SW_CFG_ERROR[1:1];
            field {
                sw = r;
            } OWNER_SW_CFG_ERROR[2:2];
            field {
                sw = r;
            } HW_CFG_ERROR[3:3];
            field {
                sw = r;
            } SECRET0_ERROR[4:4];
            field {
                sw = r;
            } SECRET1_ERROR[5:5];
            field {
                sw = r;
            } SECRET2_ERROR[6:6];
            field {
                sw = r;
            } LIFE_CYCLE_ERROR[7:7];
            field {
                sw = r;
            } DAI_ERROR[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LCI_ERROR[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TIMEOUT_ERROR[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LFSR_FSM_ERROR[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCRAMBLING_FSM_ERROR[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } KEY_DERIV_FSM_ERROR[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } KEY_DERIV_FSM_ERROR_[14:14];
            field {
                sw = r;
            } DAI_IDLE[15:15];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CHECK_PENDING[16:16];
    } Status @ 0x10;
    reg {
        name="ErrorCode";
        regwidth=0x20;
            field {
                sw = r;
            } ERR_CODE_0[2:0];
            field {
                sw = r;
            } ERR_CODE_1[5:3];
            field {
                sw = r;
            } ERR_CODE_2[8:6];
            field {
                sw = r;
            } ERR_CODE_3[11:9];
            field {
                sw = r;
            } ERR_CODE_4[14:12];
            field {
                sw = r;
            } ERR_CODE_5[17:15];
            field {
                sw = r;
            } ERR_CODE_6[20:18];
            field {
                sw = r;
            } ERR_CODE_7[23:21];
            field {
                sw = r;
            } ERR_CODE_8[26:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ERR_CODE_9[29:27];
    } ErrorCode @ 0x14;
    reg {
        name="DirectAccesssRegisterEnable";
        regwidth=0x20;
            field {
                sw = r;
                reset=1'b1;
            } DIRECT_ACCESS_REGWEN[0:0];
    } DirectAccesssRegisterEnable @ 0x18;
    reg {
        name="DirectAccessCommand";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } RD[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WR[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIGEST[2:2];
    } DirectAccessCommand @ 0x1c;
    reg {
        name="DirectAccessAddress";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } DIRECT_ACCESSS_ADDRESS[10:0];
    } DirectAccessAddress @ 0x20;
    reg {
        name="DirectAccessWriteData_0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIRECT_ACCESS_WDATA_0[31:0];
    } DirectAccessWriteData_0 @ 0x24;
    reg {
        name="DirectAccessWriteData_1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIRECT_ACCESS_WDATA_1[31:0];
    } DirectAccessWriteData_1 @ 0x28;
    reg {
        name="DirectAccessReadData_0";
        regwidth=0x20;
            field {
                sw = r;
            } DIRECT_ACCESS_RDATA_0[31:0];
    } DirectAccessReadData_0 @ 0x2c;
    reg {
        name="DirectAccessReadData_1";
        regwidth=0x20;
            field {
                sw = r;
            } DIRECT_ACCESS_RDATA_1[31:0];
    } DirectAccessReadData_1 @ 0x30;
    reg {
        name="CheckTriggerRegisterWriteEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CHECK_TRIGGER_REGWEN[0:0];
    } CheckTriggerRegisterWriteEnable @ 0x34;
    reg {
        name="CheckTrigger";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } INREGRITY[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CONSISTENCY[1:1];
    } CheckTrigger @ 0x38;
    reg {
        name="CheckRegistersWriteEnable";
        regwidth=0x20;
            field {
                sw = rw;
                onwrite = wzc;
                reset=1'b1;
            } CHECK_REGWEN[0:0];
    } CheckRegistersWriteEnable @ 0x3c;
    reg {
        name="CheckTimeout";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CHECK_TIMEOUT[31:0];
    } CheckTimeout @ 0x40;
    reg {
        name="IntegrityCheckPeriod";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } INTEGRITY_CHECK_PERIOD[31:0];
    } IntegrityCheckPeriod @ 0x44;
    reg {
        name="ConsistencyCheckPeriod";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CONSISTENCY_CHECK_PERIOD[31:0];
    } ConsistencyCheckPeriod @ 0x48;
    reg {
        name="VendorTestReadLock";
        regwidth=0x20;
            field {
                sw = w;
                onwrite = wzc;
                reset=1'b1;
            } VENDOR_TEST_READ_LOCK[0:0];
    } VendorTestReadLock @ 0x4c;
    reg {
        name="CreatorSoftwareConfigReadLock";
        regwidth=0x20;
            field {
                sw = w;
                onwrite = wzc;
                reset=1'b1;
            } VENDOR_TEST_READ_LOCK[0:0];
    } CreatorSoftwareConfigReadLock @ 0x50;
    reg {
        name="OwnerSoftwareConfigReadLock";
        regwidth=0x20;
            field {
                sw = w;
                onwrite = wzc;
                reset=1'b1;
            } VENDOR_TEST_READ_LOCK[0:0];
    } OwnerSoftwareConfigReadLock @ 0x54;
    reg {
        name="VendorTestDigest0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } VENDOR_TEST_DIGEST_0[31:0];
    } VendorTestDigest0 @ 0x58;
    reg {
        name="VendorTestDigest1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } VENDOR_TEST_DIGEST_1[31:0];
    } VendorTestDigest1 @ 0x5c;
    reg {
        name="CreatorSoftwareConfigDigest0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CREATOR_SW_CFG_DIGEST_0[31:0];
    } CreatorSoftwareConfigDigest0 @ 0x60;
    reg {
        name="CreatorSoftwareConfigDigest1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CREATOR_SW_CFG_DIGEST_1[31:0];
    } CreatorSoftwareConfigDigest1 @ 0x64;
    reg {
        name="OwnerSoftwareConfigDigest0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OWNER_SW_CFG_DIGEST_0[31:0];
    } OwnerSoftwareConfigDigest0 @ 0x68;
    reg {
        name="OwnerSoftwareConfigDigest1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OWNER_SW_CFG_DIGEST_1[31:0];
    } OwnerSoftwareConfigDigest1 @ 0x6c;
    reg {
        name="HardwareConfigDigest0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HW_CFG_DIGEST_0[31:0];
    } HardwareConfigDigest0 @ 0x70;
    reg {
        name="HardwareConfigDigest1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HW_CFG_DIGEST_1[31:0];
    } HardwareConfigDigest1 @ 0x74;
    reg {
        name="Secret0Digest0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECRET0_DIGEST0[31:0];
    } Secret0Digest0 @ 0x78;
    reg {
        name="Secret0Digest1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECRET0_DIGEST1[31:0];
    } Secret0Digest1 @ 0x7c;
    reg {
        name="Secret1Digest0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECRET1_DIGEST0[31:0];
    } Secret1Digest0 @ 0x80;
    reg {
        name="Secret1Digest1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECRET1_DIGEST1[31:0];
    } Secret1Digest1 @ 0x84;
    reg {
        name="Secret2Digest0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECRET2_DIGEST0[31:0];
    } Secret2Digest0 @ 0x88;
    reg {
        name="Secret2Digest1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECRET2_DIGEST1[31:0];
    } Secret2Digest1 @ 0x8c;
    reg {
        name="SoftwareConfiguredWindowStart";
        regwidth=0x20;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[31:0];
    } SoftwareConfiguredWindowStart @ 0x1000;
} Registers_addrmap;


};