addrmap STM32F4_FlashController {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="AccessControl";
        regwidth=0x20;
            field {
                sw = rw;
            } LATENCY[3:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PRFTEN[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ICEN[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DCEN[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ICRST[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DCRST[12:12];
    } AccessControl @ 0x0;
    reg {
        name="Key";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } FLASH_KEYR[31:0];
    } Key @ 0x4;
    reg {
        name="OptionKey";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } FLASH_OPTKEYR[31:0];
    } OptionKey @ 0x8;
    reg {
        name="Status";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EOP[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OPERR[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WRPERR[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PGAERR[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PGPERR[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PGSERR[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RDERR[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BSY[16:16];
    } Status @ 0xc;
    reg {
        name="Control";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PG[0:0];
            field {
                sw = rw;
            } SER[1:1];
            field {
                sw = rw;
            } MER[2:2];
            field {
                sw = rw;
            } SNB[6:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PSIZE[9:8];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
                onwrite = woset;
            } STRT[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EOPIE[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ERRIE[25:25];
            field {
                desc = "This field has the following custom Renode callbacks: Change, Provider.";
                sw = rw;
                onwrite = woset;
            } LOCK[31:31];
    } Control @ 0x10;
    reg {
        name="OptionControl";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Change, Provider.";
                sw = rw;
                onwrite = woset;
                reset=1'b1;
            } OPTLOCK[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Change.";
                sw = rw;
                onwrite = woset;
            } OPTSTRT[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=2'b11;
            } BOR_LEV[3:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=2'b11;
            } USER[6:5];
            field {
                sw = rw;
                reset=8'b10101010;
            } RDP[15:8];
            field {
                sw = rw;
                reset=12'b111111111111;
            } nWRP[27:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPRMOD[31:31];
    } OptionControl @ 0x14;
} Registers_addrmap;
addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="ReadProtectionAndUser";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=2'b11;
            } BOR_LEV[3:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } WDG_SW[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } nRST_STOP[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } nRST_STDBY[7:7];
            field {
                sw = rw;
                reset=8'b10101010;
            } RDP[15:8];
    } ReadProtectionAndUser @ 0x0;
    reg {
        name="WriteProtection";
        regwidth=0x20;
            field {
                sw = rw;
                reset=12'b111111111111;
            } nWRPi[11:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPRMOD[15:15];
    } WriteProtection @ 0x8;
} OptionBytesRegisters_addrmap;


};