addrmap SAMD21_I2C {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="ControlA";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } SWRST[0:0];
            field {
                sw = rw;
            } ENABLE[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Change.";
                sw = rw;
            } MODE[4:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RUNSTDBY[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } PINOUT[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SDAHOLD[21:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MEXTTOEN[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SEXTTOEN[23:23];
            field {
                desc = "This field has the following custom Renode callbacks: Change.";
                sw = rw;
            } SPEED[25:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLSM[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } INACTOUT[29:28];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LOWTOUTEN[30:30];
    } ControlA @ 0x0;
    reg {
        name="ControlB";
        regwidth=0x20;
            field {
                sw = rw;
            } SMEN[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GCMD___QCEN[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AACKEN[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AMODE[15:14];
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } CMD[17:16];
            field {
                sw = rw;
            } ACKACT[18:18];
    } ControlB @ 0x4;
    reg {
        name="BaudRate";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BAUD[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BAUDLOW[15:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HSBAUD[23:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HSBAUDLOW[31:24];
    } BaudRate @ 0xc;
    reg {
        name="InterruptEnableClear";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x8;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } AMATCH___MB[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } PREC___SB[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } ERROR[7:7];
    } InterruptEnableClear @ 0x14;
    reg {
        name="InterruptEnableSet";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x8;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } AMATCH___MB[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } PREC___SB[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } ERROR[7:7];
    } InterruptEnableSet @ 0x16;
    reg {
        name="InterruptFlagStatusAndClear";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x8;
            field {
                sw = rw;
                onwrite = woclr;
            } AMATCH___MB[0:0];
            field {
                sw = rw;
                onwrite = woclr;
            } PREC___SB[1:1];
            field {
                sw = rw;
                onwrite = woclr;
            } ERROR[7:7];
    } InterruptFlagStatusAndClear @ 0x18;
    reg {
        name="Status";
        regwidth=0x10;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BUSERR[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } COLL___ARBLOST[1:1];
            field {
                sw = rw;
            } RXNACK[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIR[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SR___BUSSTATE[5:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LOWTOUT[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CLKHOLD[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MEXTTOUT[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SEXTTOUT[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HS___LENERR[10:10];
    } Status @ 0x1a;
    reg {
        name="SynchronizationBusy";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SWRST[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENABLE[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SYSOP[2:2];
    } SynchronizationBusy @ 0x1c;
    reg {
        name="AddressRegister";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } ADDR[10:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LENEN[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HS[14:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TENBITEN[15:15];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LEN[23:16];
    } AddressRegister @ 0x24;
    reg {
        name="DataRegister0";
        regwidth=0x8;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } DATA[7:0];
    } DataRegister0 @ 0x28;
    reg {
        name="DataRegister1";
        regwidth=0x8;
            field {
                desc = "This is a dummy r/w field, generated just to show the register in specs";
                sw = rw;
            } DUMMY[7:0];
    } DataRegister1 @ 0x29;
    reg {
        name="DebugControl";
        regwidth=0x8;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DBGSTOP[0:0];
    } DebugControl @ 0x30;
} Registers_addrmap;


};