addrmap SAM4S_ADC {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="Control";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } SWRST[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } START[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } AUTOCAL[3:3];
    } Control @ 0x0;
    reg {
        name="Mode";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TRGEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TRGSEL[3:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SLEEP[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FWUP[6:6];
            field {
                sw = rw;
            } FREERUN[7:7];
            field {
                desc = "This field has the following custom Renode callbacks: Change, Provider.";
                sw = rw;
            } PRESCAL[15:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } STARTUP[19:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SETTLING[21:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ANACH[23:23];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TRACKTIM[27:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TRANSFER[29:28];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USEQ[31:31];
    } Mode @ 0x4;
    reg {
        name="Sequence1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH1[3:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH2[7:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH3[11:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH4[15:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH5[19:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH6[23:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH7[27:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH8[31:28];
    } Sequence1 @ 0x8;
    reg {
        name="Sequence2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH9[3:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH10[7:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH11[11:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH12[15:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH13[19:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH14[23:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } USCH15[27:24];
    } Sequence2 @ 0xc;
    reg {
        name="ChannelEnable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woset;
            } ADC_CHER[15:0];
    } ChannelEnable @ 0x10;
    reg {
        name="ChannelDisable";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } ADC_CHDR[15:0];
    } ChannelDisable @ 0x14;
    reg {
        name="ChannelStatus";
        regwidth=0x20;
            field {
                sw = r;
            } ADC_CHSR[15:0];
    } ChannelStatus @ 0x18;
    reg {
        name="LastConvertedData";
        desc = "This register has the following custom Renode callbacks: Read";
        regwidth=0x20;
            field {
                sw = rw;
            } LDATA[11:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CHNB[15:12];
    } LastConvertedData @ 0x20;
    reg {
        name="InterruptEnable";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woset;
            } EOC[15:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woset;
            } EOCAL[23:23];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woset;
            } DRDY[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GOVRE[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } COMPE[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENDRX[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXBFUF[28:28];
    } InterruptEnable @ 0x24;
    reg {
        name="InterruptDisable";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woset;
            } EOC[15:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woset;
            } EOCAL[23:23];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woset;
            } DRDY[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GOVRE[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } COMPE[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENDRX[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXBFUF[28:28];
    } InterruptDisable @ 0x28;
    reg {
        name="InterruptMask";
        regwidth=0x20;
            field {
                sw = r;
            } EOC[15:0];
            field {
                sw = r;
            } EOCAL[23:23];
            field {
                sw = r;
            } DRDY[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GOVRE[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } COMPE[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENDRX[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXBFUF[28:28];
    } InterruptMask @ 0x2c;
    reg {
        name="InterruptStatus";
        regwidth=0x20;
            field {
                sw = r;
            } EOC[15:0];
            field {
                sw = r;
                onread = rclr;
            } EOCAL[23:23];
            field {
                sw = r;
            } DRDY[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GOVRE[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } COMPE[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ENDRX[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXBFUF[28:28];
    } InterruptStatus @ 0x30;
    reg {
        name="OverrunStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE0[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE1[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE2[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE3[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE4[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE5[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE6[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE7[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE8[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE9[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE10[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE11[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE12[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE13[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE14[14:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OVRE15[15:15];
    } OverrunStatus @ 0x3c;
    reg {
        name="ExtendedMode";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CMPMODE[1:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CMPSEL[7:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CMPALL[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TAG[24:24];
    } ExtendedMode @ 0x40;
    reg {
        name="CompareWindow";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LOWTHRES[11:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HIGHTHRES[27:16];
    } CompareWindow @ 0x44;
    reg {
        name="ChannelGain";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN0[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN1[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN2[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN3[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN4[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN5[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN6[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN7[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN8[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN9[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN10[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN11[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN12[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN13[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN14[14:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } GAIN15[15:15];
    } ChannelGain @ 0x48;
    reg {
        name="ChannelOffset";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF0[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF1[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF2[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF3[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF4[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF5[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF6[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF7[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF8[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF9[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF10[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF11[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF12[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF13[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF14[14:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OFF15[15:15];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF0[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF1[17:17];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF2[18:18];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF3[19:19];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF4[20:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF5[21:21];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF6[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF7[23:23];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF8[24:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF9[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF10[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF11[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF12[28:28];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF13[29:29];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF14[30:30];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIFF15[31:31];
    } ChannelOffset @ 0x4c;
    reg {
        name="ChannelData0";
        desc = "This register has the following custom Renode callbacks: Read";
        regwidth=0x20;
            field {
                sw = rw;
            } ADC_CDRindex[11:0];
    } ChannelData0 [16]@ 0x50 += 4;
    reg {
        name="AnalogControl";
        regwidth=0x20;
            field {
                sw = rw;
            } TSON[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IBCTL[31:8];
    } AnalogControl @ 0x94;
    reg {
        name="WriteProtectMode";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WPEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WPKEY[31:8];
    } WriteProtectMode @ 0xe4;
    reg {
        name="WriteProtectStatus";
        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];
    } WriteProtectStatus @ 0xe8;
    reg {
        name="ReceivePointer";
        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];
    } ReceivePointer @ 0x100;
    reg {
        name="ReceiveCounter";
        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];
    } ReceiveCounter @ 0x104;
    reg {
        name="ReceiveNextPointer";
        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];
    } ReceiveNextPointer @ 0x110;
    reg {
        name="ReceiveNextCounter";
        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];
    } ReceiveNextCounter @ 0x114;
    reg {
        name="TransferControl";
        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];
    } TransferControl @ 0x120;
    reg {
        name="TransferStatus";
        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];
    } TransferStatus @ 0x124;
} Registers_addrmap;


};