addrmap OpenTitan_KMAC {

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;
            } kmac_done[0:0];
            field {
                sw = rw;
                onwrite = woclr;
            } fifo_empty[1:1];
            field {
                sw = rw;
                onwrite = woclr;
            } kmac_err[2:2];
    } InterruptState @ 0x0;
    reg {
        name="InterruptEnable";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } kmac_done[0:0];
            field {
                sw = rw;
            } fifo_empty[1:1];
            field {
                sw = rw;
            } kmac_err[2:2];
    } 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;
            } kmac_done[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } fifo_empty[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } kmac_err[2:2];
    } 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_fault[1:1];
    } AlertTest @ 0xc;
    reg {
        name="ConfigurationWriteEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } en[0:0];
    } ConfigurationWriteEnable @ 0x10;
    reg {
        name="Configuration";
        regwidth=0x20;
            field {
                sw = rw;
            } kmac_en[0:0];
            field {
                sw = rw;
            } kstrength[3:1];
            field {
                sw = rw;
            } mode[5:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } msg_endianness[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } state_endianness[9:9];
            field {
                sw = rw;
            } sideload[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } entropy_mode[17:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } entropy_fast_process[19:19];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } msg_mask[20:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } entropy_ready[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } err_processed[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } en_unsupported_modestrength[26:26];
    } Configuration @ 0x14;
    reg {
        name="Command";
        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;
            } cmd[5:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } entropy_req[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } hash_cnt_clr[9:9];
    } Command @ 0x18;
    reg {
        name="Status";
        regwidth=0x20;
            field {
                sw = rw;
                reset=1'b1;
            } sha3_idle[0:0];
            field {
                sw = rw;
            } sha3_absorb[1:1];
            field {
                sw = rw;
            } sha3_squeeze[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } fifo_depth[12:8];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
                reset=1'b1;
            } fifo_empty[14:14];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } fifo_full[15:15];
    } Status @ 0x1c;
    reg {
        name="EntropyTimerPeriods";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } prescaler[9:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } wait_timer[31:16];
    } EntropyTimerPeriods @ 0x20;
    reg {
        name="EntropyRefreshCounter";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } hash_cnt[9:0];
    } EntropyRefreshCounter @ 0x24;
    reg {
        name="EntropyRefreshThreshold";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } threshold[9:0];
    } EntropyRefreshThreshold @ 0x28;
    reg {
        name="EntropySeed0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } seed[31:0];
    } EntropySeed0 @ 0x2c;
    reg {
        name="EntropySeed1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } seed[31:0];
    } EntropySeed1 @ 0x30;
    reg {
        name="EntropySeed2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } seed[31:0];
    } EntropySeed2 @ 0x34;
    reg {
        name="EntropySeed3";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } seed[31:0];
    } EntropySeed3 @ 0x38;
    reg {
        name="EntropySeed4";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } seed[31:0];
    } EntropySeed4 @ 0x3c;
    reg {
        name="KeyShare0_0";
        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];
    } KeyShare0_0 @ 0x40;
    reg {
        name="KeyShare0_1";
        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];
    } KeyShare0_1 @ 0x44;
    reg {
        name="KeyShare0_2";
        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];
    } KeyShare0_2 @ 0x48;
    reg {
        name="KeyShare0_3";
        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];
    } KeyShare0_3 @ 0x4c;
    reg {
        name="KeyShare0_4";
        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];
    } KeyShare0_4 @ 0x50;
    reg {
        name="KeyShare0_5";
        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];
    } KeyShare0_5 @ 0x54;
    reg {
        name="KeyShare0_6";
        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];
    } KeyShare0_6 @ 0x58;
    reg {
        name="KeyShare0_7";
        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];
    } KeyShare0_7 @ 0x5c;
    reg {
        name="KeyShare0_8";
        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];
    } KeyShare0_8 @ 0x60;
    reg {
        name="KeyShare0_9";
        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];
    } KeyShare0_9 @ 0x64;
    reg {
        name="KeyShare0_10";
        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];
    } KeyShare0_10 @ 0x68;
    reg {
        name="KeyShare0_11";
        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];
    } KeyShare0_11 @ 0x6c;
    reg {
        name="KeyShare0_12";
        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];
    } KeyShare0_12 @ 0x70;
    reg {
        name="KeyShare0_13";
        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];
    } KeyShare0_13 @ 0x74;
    reg {
        name="KeyShare0_14";
        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];
    } KeyShare0_14 @ 0x78;
    reg {
        name="KeyShare0_15";
        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];
    } KeyShare0_15 @ 0x7c;
    reg {
        name="KeyShare1_0";
        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];
    } KeyShare1_0 @ 0x80;
    reg {
        name="KeyShare1_1";
        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];
    } KeyShare1_1 @ 0x84;
    reg {
        name="KeyShare1_2";
        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];
    } KeyShare1_2 @ 0x88;
    reg {
        name="KeyShare1_3";
        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];
    } KeyShare1_3 @ 0x8c;
    reg {
        name="KeyShare1_4";
        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];
    } KeyShare1_4 @ 0x90;
    reg {
        name="KeyShare1_5";
        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];
    } KeyShare1_5 @ 0x94;
    reg {
        name="KeyShare1_6";
        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];
    } KeyShare1_6 @ 0x98;
    reg {
        name="KeyShare1_7";
        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];
    } KeyShare1_7 @ 0x9c;
    reg {
        name="KeyShare1_8";
        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];
    } KeyShare1_8 @ 0xa0;
    reg {
        name="KeyShare1_9";
        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];
    } KeyShare1_9 @ 0xa4;
    reg {
        name="KeyShare1_10";
        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];
    } KeyShare1_10 @ 0xa8;
    reg {
        name="KeyShare1_11";
        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];
    } KeyShare1_11 @ 0xac;
    reg {
        name="KeyShare1_12";
        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];
    } KeyShare1_12 @ 0xb0;
    reg {
        name="KeyShare1_13";
        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];
    } KeyShare1_13 @ 0xb4;
    reg {
        name="KeyShare1_14";
        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];
    } KeyShare1_14 @ 0xb8;
    reg {
        name="KeyShare1_15";
        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];
    } KeyShare1_15 @ 0xbc;
    reg {
        name="KeyLength";
        regwidth=0x20;
            field {
                sw = rw;
            } len[2:0];
    } KeyLength @ 0xc0;
    reg {
        name="Prefix0";
        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];
    } Prefix0 @ 0xc4;
    reg {
        name="Prefix1";
        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];
    } Prefix1 @ 0xc8;
    reg {
        name="Prefix2";
        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];
    } Prefix2 @ 0xcc;
    reg {
        name="Prefix3";
        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];
    } Prefix3 @ 0xd0;
    reg {
        name="Prefix4";
        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];
    } Prefix4 @ 0xd4;
    reg {
        name="Prefix5";
        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];
    } Prefix5 @ 0xd8;
    reg {
        name="Prefix6";
        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];
    } Prefix6 @ 0xdc;
    reg {
        name="Prefix7";
        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];
    } Prefix7 @ 0xe0;
    reg {
        name="Prefix8";
        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];
    } Prefix8 @ 0xe4;
    reg {
        name="Prefix9";
        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];
    } Prefix9 @ 0xe8;
    reg {
        name="Prefix10";
        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];
    } Prefix10 @ 0xec;
    reg {
        name="ErrorCode";
        regwidth=0x20;
            field {
                sw = rw;
            } err_code[31:0];
    } ErrorCode @ 0xf0;
    reg {
        name="State";
        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];
    } State @ 0x400;
    reg {
        name="StateMask";
        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];
    } StateMask @ 0x500;
    reg {
        name="Fifo";
        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];
    } Fifo @ 0x800;
} Registers_addrmap;


};