addrmap AmbiqApollo4_IOMaster {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="OutgoingFifoAccessPort";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } No_name_1[31:0];
    } OutgoingFifoAccessPort [8]@ 0x0 += 4;
    reg {
        name="IncomingFifoAccessPort";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } No_name_2[31:0];
    } IncomingFifoAccessPort [8]@ 0x20 += 4;
    reg {
        name="FifoSizeAndRemainingSlotsOpenValues";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } FIFO0SIZ[7:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } FIFO0REM[15:8];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } FIFO1SIZ[23:16];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } FIFO1REM[31:24];
    } FifoSizeAndRemainingSlotsOpenValues @ 0x100;
    reg {
        name="FifoThresholdConfiguration";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                sw = rw;
            } FIFORTHR[5:0];
            field {
                sw = rw;
            } FIFOWTHR[13:8];
    } FifoThresholdConfiguration @ 0x104;
    reg {
        name="FifoPop";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = r;
            } FIFODOUT[31:0];
    } FifoPop @ 0x108;
    reg {
        name="FifoPush";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } FIFODIN[31:0];
    } FifoPush @ 0x10c;
    reg {
        name="FifoControl";
        regwidth=0x20;
            field {
                sw = rw;
            } POPWR[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
                reset=1'b1;
            } FIFORSTN[1:1];
    } FifoControl @ 0x110;
    reg {
        name="FifoPointers";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } FIFOWPTR[3:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } FIFORPTR[11:8];
    } FifoPointers @ 0x114;
    reg {
        name="IOClockConfiguration";
        regwidth=0x20;
            field {
                sw = rw;
            } IOCLKEN[0:0];
            field {
                sw = rw;
            } FSEL[10:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DIV3[11:11];
            field {
                sw = rw;
            } DIVEN[12:12];
            field {
                sw = rw;
            } LOWPER[23:16];
            field {
                sw = rw;
            } TOTPER[31:24];
    } IOClockConfiguration @ 0x118;
    reg {
        name="SubmoduleControl";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } SMOD0EN[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } SMOD0TYPE[3:1];
            field {
                sw = rw;
            } SMOD1EN[4:4];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } SMOD1TYPE[7:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SMOD2EN[8:8];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } SMOD2TYPE[11:9];
    } SubmoduleControl @ 0x11c;
    reg {
        name="CommandAndOffset";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } CMD[3:0];
            field {
                sw = rw;
            } OFFSETCNT[6:4];
            field {
                sw = rw;
            } CONT[7:7];
            field {
                sw = rw;
            } TSIZE[19:8];
            field {
                sw = rw;
            } CMDSEL[21:20];
            field {
                sw = rw;
            } OFFSETLO[31:24];
    } CommandAndOffset @ 0x120;
    reg {
        name="DcxControlAndCeUsageSelection";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DCXSEL[3:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DCXEN[4:4];
    } DcxControlAndCeUsageSelection @ 0x124;
    reg {
        name="HighOrderBytesBfOffsetForIOTransaction";
        regwidth=0x20;
            field {
                sw = rw;
            } OFFSETHI[31:0];
    } HighOrderBytesBfOffsetForIOTransaction @ 0x128;
    reg {
        name="CommandStatus";
        regwidth=0x20;
            field {
                sw = r;
            } CCMD[4:0];
            field {
                sw = r;
            } CMDSTAT[7:5];
            field {
                sw = r;
            } CTSIZE[19:8];
    } CommandStatus @ 0x12c;
    reg {
        name="IOMasterInterruptsEnable";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                sw = rw;
            } INTENi[14:0];
    } IOMasterInterruptsEnable @ 0x200;
    reg {
        name="IOMasterInterruptsStatus";
        regwidth=0x20;
            field {
                sw = r;
            } INTSTATi[14:0];
    } IOMasterInterruptsStatus @ 0x204;
    reg {
        name="IOMasterInterruptsClear";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } INTCLRi[14:0];
    } IOMasterInterruptsClear @ 0x208;
    reg {
        name="IOMasterInterruptsSet";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } INTSETi[14:0];
    } IOMasterInterruptsSet @ 0x20c;
    reg {
        name="DmaTriggerEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DCMDCMPEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DTHREN[1:1];
    } DmaTriggerEnable @ 0x210;
    reg {
        name="DmaTriggerStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DCMDCMP[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DTHR[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DTOTCMP[2:2];
    } DmaTriggerStatus @ 0x214;
    reg {
        name="DmaConfiguration";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DMAEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DMADIR[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DMAPRI[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DPWROFF[9:9];
    } DmaConfiguration @ 0x218;
    reg {
        name="DmaTotalTransferCount";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TOTCOUNT[11:0];
    } DmaTotalTransferCount @ 0x21c;
    reg {
        name="DmaTargetAddress";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TARGADDR[28:0];
    } DmaTargetAddress @ 0x220;
    reg {
        name="DmaStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DMATIP[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DMACPL[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DMAERR[2:2];
    } DmaStatus @ 0x224;
    reg {
        name="CommandQueueConfiguration";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQPRI[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MSPIFLGSEL[3:2];
    } CommandQueueConfiguration @ 0x228;
    reg {
        name="CommandQueueTargetReadAddress";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQADDR[28:2];
    } CommandQueueTargetReadAddress @ 0x22c;
    reg {
        name="CommandQueueStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQTIP[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQPAUSED[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQERR[2:2];
    } CommandQueueStatus @ 0x230;
    reg {
        name="CommandQueueFlag";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQFLAGS[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQIRQMASK[31:16];
    } CommandQueueFlag @ 0x234;
    reg {
        name="CommandQueueFlagSetClear";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQFSET[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQFTGL[15:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQFCLR[23:16];
    } CommandQueueFlagSetClear @ 0x238;
    reg {
        name="CommandQueuePauseEnable";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQPEN[15:0];
    } CommandQueuePauseEnable @ 0x23c;
    reg {
        name="CommandQueueCurrentIndexValue";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQCURIDX[7:0];
    } CommandQueueCurrentIndexValue @ 0x240;
    reg {
        name="CommandQueueEndIndexValue";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CQENDIDX[7:0];
    } CommandQueueEndIndexValue @ 0x244;
    reg {
        name="IOModuleStatus";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ERR[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } CMDACT[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } IDLEST[2:2];
    } IOModuleStatus @ 0x248;
    reg {
        name="SpiModuleMasterConfiguration";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPOL[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPHA[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FULLDUP[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WTFC[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RDFC[17:17];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MOSIINV[18:18];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WTFCIRQ[20:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } WTFCPOL[21:21];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RDFCPOL[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPILSB[23:23];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DINDLY[26:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DOUTDLY[29:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MSPIRST[30:30];
    } SpiModuleMasterConfiguration @ 0x280;
    reg {
        name="I2CMasterConfiguration";
        regwidth=0x20;
            field {
                sw = rw;
            } ADDRSZ[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } I2CLSB[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ARBEN[2:2];
            field {
                sw = rw;
            } SDADLY[5:4];
            field {
                sw = rw;
            } MI2CRST[6:6];
            field {
                sw = rw;
            } SCLENDLY[11:8];
            field {
                sw = rw;
            } SDAENDLY[15:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SMPCNT[23:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } STRDIS[24:24];
    } I2CMasterConfiguration @ 0x2c0;
    reg {
        name="I2CDeviceConfiguration";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } DEVADDR[9:0];
    } I2CDeviceConfiguration @ 0x2c4;
    reg {
        name="I2SControl";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } I2SEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXTXN[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CLKMS[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SE[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CHANSIZE[8:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SAMPLESIZE[13:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BOFFSET[18:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CHANCNT[21:19];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LSBFIRST[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CLKGAP[23:23];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CTRLSPARE[31:24];
    } I2SControl @ 0x300;
    reg {
        name="I2SClockControl";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ASRCEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ASRCCLKSEL[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } I2SCLKSEL[3:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ASEL[6:4];
    } I2SClockControl @ 0x304;
    reg {
        name="I2SFrameSyncControl";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FSLEN[4:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FSPOL[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FSEDGE[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FSOFFSET[11:8];
    } I2SFrameSyncControl @ 0x308;
    reg {
        name="IOModuleDebug";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DBGEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } IOCLKON[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } APBCLKON[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DBGDATA[31:3];
    } IOModuleDebug @ 0x388;
} Registers_addrmap;


};