addrmap OpenTitan_KeyManager {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="InterruptState";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
                onwrite = woclr;
            } op_done[0:0];
    } InterruptState @ 0x0;
    reg {
        name="InterruptEnable";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } op_done[0:0];
    } 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;
            } op_done[0:0];
    } InterruptTest @ 0x8;
    reg {
        name="AlertTest";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } recov_operation_err[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } fatal_fault_err[1:1];
    } AlertTest @ 0xc;
    reg {
        name="ConfigurationWriteEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } EN[0:0];
    } ConfigurationWriteEnable @ 0x10;
    reg {
        name="OperationControls";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } START[0:0];
            field {
                sw = rw;
            } OPERATION[6:4];
            field {
                sw = rw;
            } CDI_SEL[7:7];
            field {
                sw = rw;
            } DEST_SEL[14:12];
    } OperationControls @ 0x14;
    reg {
        name="SideloadClear";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } VAL[2:0];
    } SideloadClear @ 0x18;
    reg {
        name="ReseedIntervalWriteEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } EN[0:0];
    } ReseedIntervalWriteEnable @ 0x1c;
    reg {
        name="ReseedInterval";
        regwidth=0x20;
            field {
                sw = rw;
                reset=32'b100000000;
            } VAL[31:0];
    } ReseedInterval @ 0x20;
    reg {
        name="SoftwareBindingWriteEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } EN[0:0];
    } SoftwareBindingWriteEnable @ 0x24;
    reg {
        name="SealingSoftwareBinding0";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } VAL_idx[31:0];
    } SealingSoftwareBinding0 [8]@ 0x28 += 4;
    reg {
        name="AttestationSoftwareBinding0";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } VAL_idx[31:0];
    } AttestationSoftwareBinding0 [8]@ 0x48 += 4;
    reg {
        name="Salt0";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } VAL_idx[31:0];
    } Salt0 [8]@ 0x68 += 4;
    reg {
        name="KeyVersion";
        regwidth=0x20;
            field {
                sw = rw;
            } VAL[31:0];
    } KeyVersion @ 0x88;
    reg {
        name="MaxCreatorKeyVersionWriteEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } EN[0:0];
    } MaxCreatorKeyVersionWriteEnable @ 0x8c;
    reg {
        name="MaxCreatorKeyVersion";
        regwidth=0x20;
            field {
                sw = rw;
            } VAL[31:0];
    } MaxCreatorKeyVersion @ 0x90;
    reg {
        name="MaxOwnerIntermediateKeyVersionWriteEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } EN[0:0];
    } MaxOwnerIntermediateKeyVersionWriteEnable @ 0x94;
    reg {
        name="MaxOwnerIntermediateKeyVersion";
        regwidth=0x20;
            field {
                sw = rw;
            } VAL[31:0];
    } MaxOwnerIntermediateKeyVersion @ 0x98;
    reg {
        name="MaxOwnerKeyVersionWriteEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } EN[0:0];
    } MaxOwnerKeyVersionWriteEnable @ 0x9c;
    reg {
        name="MaxOwnerKeyVersion";
        regwidth=0x20;
            field {
                sw = rw;
            } VAL[31:0];
    } MaxOwnerKeyVersion @ 0xa0;
    reg {
        name="SoftwareShare0Output0";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare0Output0 @ 0xa4;
    reg {
        name="SoftwareShare0Output1";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare0Output1 @ 0xa8;
    reg {
        name="SoftwareShare0Output2";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare0Output2 @ 0xac;
    reg {
        name="SoftwareShare0Output3";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare0Output3 @ 0xb0;
    reg {
        name="SoftwareShare0Output4";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare0Output4 @ 0xb4;
    reg {
        name="SoftwareShare0Output5";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare0Output5 @ 0xb8;
    reg {
        name="SoftwareShare0Output6";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare0Output6 @ 0xbc;
    reg {
        name="SoftwareShare0Output7";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare0Output7 @ 0xc0;
    reg {
        name="SoftwareShare1Output0";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare1Output0 @ 0xc4;
    reg {
        name="SoftwareShare1Output1";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare1Output1 @ 0xc8;
    reg {
        name="SoftwareShare1Output2";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare1Output2 @ 0xcc;
    reg {
        name="SoftwareShare1Output3";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare1Output3 @ 0xd0;
    reg {
        name="SoftwareShare1Output4";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare1Output4 @ 0xd4;
    reg {
        name="SoftwareShare1Output5";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare1Output5 @ 0xd8;
    reg {
        name="SoftwareShare1Output6";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare1Output6 @ 0xdc;
    reg {
        name="SoftwareShare1Output7";
        desc = "Could not determine register's width, guessed 8 bits.";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } SoftwareShare1Output7 @ 0xe0;
    reg {
        name="WorkingState";
        regwidth=0x20;
            field {
                sw = r;
            } STATE[2:0];
    } WorkingState @ 0xe4;
    reg {
        name="Status";
        regwidth=0x20;
            field {
                sw = rw;
                onwrite = woclr;
            } STATE[1:0];
    } Status @ 0xe8;
    reg {
        name="ErrorCode";
        regwidth=0x20;
            field {
                sw = rw;
                onwrite = woclr;
            } INVALID_OP[0:0];
            field {
                sw = rw;
                onwrite = woclr;
            } INVALID_KMAC_INPUT[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } INVALID_SHADOW_UPDATE[2:2];
    } ErrorCode @ 0xec;
    reg {
        name="FaultStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CMDA[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } KMAC_FSM[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } KMAC_OPKMAC[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } KMAC_OUTKMAC[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } REGFILE_INTG[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SHADOW[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CTRL_FSM_INTG[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CTRL_FSM_CNT[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RESEED_CNT[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SIDE_CTRL_FSM[9:9];
    } FaultStatus @ 0xf0;
} Registers_addrmap;


};