addrmap STM32WBA_FlashController {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="AccessControl";
        regwidth=0x20;
            field {
                sw = rw;
                reset=4'b1;
            } LATENCY[3:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PRFTEN[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LPM[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PDREQ[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SLEEP_PD[14:14];
    } AccessControl @ 0x0;
    reg {
        name="NonSecureKey";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } NSKEY[31:0];
    } NonSecureKey @ 0x8;
    reg {
        name="SecureKey";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECKEY[31:0];
    } SecureKey @ 0xc;
    reg {
        name="OptionKey";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OPTKEY[31:0];
    } OptionKey @ 0x10;
    reg {
        name="PowerDownKey";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PDKEY[31:0];
    } PowerDownKey @ 0x18;
    reg {
        name="NonSecureStatus";
        regwidth=0x20;
            field {
                sw = w;
                onwrite = woclr;
            } EOP[0:0];
            field {
                sw = w;
                onwrite = woclr;
            } OPERR[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PROGERR[3:3];
            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;
            } SIZERR[6:6];
            field {
                sw = w;
                onwrite = woclr;
            } PGSERR[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OPTWERR[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BSY[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WDW[17:17];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OEM1LOCK[18:18];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OEM2LOCK[19:19];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PD[20:20];
    } NonSecureStatus @ 0x20;
    reg {
        name="SecureStatus";
        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;
            } PROGERR[3:3];
            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;
            } SIZERR[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PGSERR[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BSY[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WDW[17:17];
    } SecureStatus @ 0x24;
    reg {
        name="NonSecureControl1";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PG[0:0];
            field {
                sw = rw;
            } PER[1:1];
            field {
                sw = rw;
            } MER[2:2];
            field {
                sw = rw;
            } PNB[9:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BWR[14:14];
            field {
                sw = rw;
            } STRT[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OPTSTRT[17:17];
            field {
                sw = rw;
            } EOPIE[24:24];
            field {
                sw = rw;
            } ERRIE[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OBL_LAUNCH[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OPTLOCK[30:30];
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = r;
            } LOCK[31:31];
    } NonSecureControl1 @ 0x28;
    reg {
        name="SecureControl1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PG[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PER[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MER[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PNB[9:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BWR[14:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } 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 = "The field is a Tag.";
                sw = rw;
            } INV[29:29];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LOCK[31:31];
    } SecureControl1 @ 0x2c;
    reg {
        name="Ecc";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ADDR_ECC[19:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SYSF_ECC[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ECCIE[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ECCC[30:30];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ECCD[31:31];
    } Ecc @ 0x30;
    reg {
        name="Opsr";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ADDR_OP[19:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SYSF_OP[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CODE_OP[31:29];
    } Opsr @ 0x34;
    reg {
        name="NonSecureControl2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PS[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES[1:1];
    } NonSecureControl2 @ 0x38;
    reg {
        name="SecureControl2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PS[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ES[1:1];
    } SecureControl2 @ 0x3c;
    reg {
        name="OptionControl";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RDP[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BOR_LEV[10:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } NRST_STOP[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } NRST_STDBY[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SRAM1_RST[15:15];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IWDG_SW[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IWDG_STOP[17:17];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IWDG_STDBY[18:18];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WWDG_SW[19:19];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SRAM2_PE[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SRAM2_RST[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } NSWBOOT0[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } NBOOT0[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TZEN[31:31];
    } OptionControl @ 0x40;
    reg {
        name="NonSecureBootAddress0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } NSBOOTADD0[31:7];
    } NonSecureBootAddress0 @ 0x44;
    reg {
        name="NonSecureBootAddress1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } NSBOOTADD1[31:7];
    } NonSecureBootAddress1 @ 0x48;
    reg {
        name="SecureBootAddress0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BOOT_LOCK[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECBOOTADD0[31:7];
    } SecureBootAddress0 @ 0x4c;
    reg {
        name="SecureWatermark11";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECWM_PSTRT[6:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECWM_PEND[22:16];
    } SecureWatermark11 @ 0x50;
    reg {
        name="SecureWatermark12";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HDP_PEND[22:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HDPEN[31:31];
    } SecureWatermark12 @ 0x54;
    reg {
        name="WrpAreaAAddress";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WRPA_PSTRT[6:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WRPA_PEND[22:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } UNLOCK[31:31];
    } WrpAreaAAddress @ 0x58;
    reg {
        name="WrpAreaBAddress";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WRPB_PSTRT[6:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WRPB_PEND[22:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } UNLOCK[31:31];
    } WrpAreaBAddress @ 0x5c;
    reg {
        name="Oem1Key1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OEM1KEY[31:0];
    } Oem1Key1 @ 0x70;
    reg {
        name="Oem1Key2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OEM1KEY[31:0];
    } Oem1Key2 @ 0x74;
    reg {
        name="Oem2Key1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OEM2KEY[31:0];
    } Oem2Key1 @ 0x78;
    reg {
        name="Oem2Key2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OEM2KEY[31:0];
    } Oem2Key2 @ 0x7c;
    reg {
        name="SecureBlockBank1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECBB[31:0];
    } SecureBlockBank1 @ 0x80;
    reg {
        name="SecureBlockBank2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECBB[31:0];
    } SecureBlockBank2 @ 0x84;
    reg {
        name="SecureBlockBank3";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECBB[31:0];
    } SecureBlockBank3 @ 0x88;
    reg {
        name="SecureBlockBank4";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SECBB[31:0];
    } SecureBlockBank4 @ 0x8c;
    reg {
        name="SecureHdpControl";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HDP_ACCDIS[0:0];
    } SecureHdpControl @ 0xc0;
    reg {
        name="PrivilegeConfiguration";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPRIV[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } NSPRIV[1:1];
    } PrivilegeConfiguration @ 0xc4;
    reg {
        name="PrivilegeBlockBank1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PRIVBB[31:0];
    } PrivilegeBlockBank1 @ 0xd0;
    reg {
        name="PrivilegeBlockBank2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PRIVBB[31:0];
    } PrivilegeBlockBank2 @ 0xd4;
    reg {
        name="PrivilegeBlockBank3";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PRIVBB[31:0];
    } PrivilegeBlockBank3 @ 0xd8;
    reg {
        name="PrivilegeBlockBank4";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PRIVBB[31:0];
    } PrivilegeBlockBank4 @ 0xdc;
} Registers_addrmap;


};