addrmap MPFS_SPI {

/* Some conversion errors detected, this might mean that the peripheral's registers structure in this file is incomplete.
 * Please refer to logs and comments in the file for more information.
 * 
 * Field "CTRL0" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 * Field "CTRL1" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 * Field "CTRL2" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 * Field "CTRL3" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
 */

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="Control";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
                reset=1'b1;
            } RESET[31:31];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } OENOFF[30:30];
            field {
                desc = "This field has the following custom Renode callbacks: Change.";
                sw = rw;
            } BIGFIFO[29:29];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CLKMODE[28:28];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FRAMEURUN[27:27];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPS[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPH[25:25];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPO[24:24];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
                reset=16'b1;
            } FRAMECNT[23:8];
            field {
                sw = rw;
            } INTTXTURUN[7:7];
            field {
                sw = rw;
            } INTRCVOVFLOW[6:6];
            field {
                sw = rw;
            } INTTXDATA[5:5];
            field {
                sw = rw;
            } INTRXDATA[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MODE[3:2];
            field {
                sw = rw;
                reset=1'b1;
            } MASTER[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Change.";
                sw = rw;
            } ENABLE[0:0];
            /* Conversion error: Field "CTRL0" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
                reset=8'b10;
            } CTRL0[7:0];
            */
            /* Conversion error: Field "CTRL1" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
                reset=8'b10;
            } CTRL1[7:0];
            */
            /* Conversion error: Field "CTRL2" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
                reset=8'b10;
            } CTRL2[7:0];
            */
            /* Conversion error: Field "CTRL3" overlaps another field at the same offset (0x0) and will be skipped, as it is illegal in SystemRDL.
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
                reset=8'b10;
            } CTRL3[7:0];
            */
    } Control @ 0x0;
    reg {
        name="FrameSize";
        regwidth=0x20;
            field {
                sw = rw;
                reset=6'b100;
            } FRAMESIZE[5:0];
    } FrameSize @ 0x4;
    reg {
        name="Status";
        regwidth=0x20;
            field {
                sw = r;
            } TXDATASENT[0:0];
            field {
                sw = r;
            } RXDATARCVD[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXOVERFLOW[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXUNDERRUN[3:3];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXFIFOFULL[4:4];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXFIFOFULLNEXT[5:5];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
                reset=1'b1;
            } RXFIFOEMPTY[6:6];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXFIFOEMPTYNEXT[7:7];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXFIFOFULL[8:8];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXFIFOFULLNEXT[9:9];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
                reset=1'b1;
            } TXFIFOEMPTY[10:10];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXFIFOEMPTYNEXT[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FRAMESTART[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } SSEL[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ACTIVE[14:14];
    } Status @ 0x8;
    reg {
        name="InterruptClear";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } TXDONE[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } RXDONE[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } RXOVERFLOW[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } TXUNDERRUN[3:3];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } CMDINT[4:4];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
                onwrite = woclr;
            } SSEND[5:5];
    } InterruptClear @ 0xc;
    reg {
        name="ReceiveData";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXDATA[31:0];
    } ReceiveData @ 0x10;
    reg {
        name="TransmitData";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } TXDATA[31:0];
    } TransmitData @ 0x14;
    reg {
        name="ClockRate";
        regwidth=0x20;
            field {
                sw = rw;
            } CLKRATE[7:0];
    } ClockRate @ 0x18;
    reg {
        name="SlaveSelect";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } SSEL[7:0];
    } SlaveSelect @ 0x1c;
    reg {
        name="InterruptMasked";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } No_name_1[5:0];
    } InterruptMasked @ 0x20;
    reg {
        name="InterruptRaw";
        regwidth=0x20;
            field {
                sw = rw;
            } TXDONE[0:0];
            field {
                sw = rw;
            } RXDONE[1:1];
            field {
                sw = rw;
            } RXOVERFLOW[2:2];
            field {
                sw = rw;
            } TXUNDERRUN[3:3];
            field {
                sw = rw;
            } CMDINT[4:4];
            field {
                sw = rw;
            } SSEND[5:5];
    } InterruptRaw @ 0x24;
    reg {
        name="ControlBitsForEnhancedModes";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AUTOSTATUS[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AUTOPOLL[1:1];
            field {
                sw = rw;
            } DISFRMCNT[2:2];
            field {
                sw = rw;
            } INTEN_CMD[4:4];
            field {
                sw = rw;
            } INTEN_SSEND[5:5];
    } ControlBitsForEnhancedModes @ 0x28;
    reg {
        name="CommandRegister";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = r;
            } AUTOFILL[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AUTOEMPTY[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = r;
            } RXFIFORST[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = r;
            } TXFIFORST[3:3];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = r;
            } CLRFRAMECNT[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AUTOSTALL[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TXNOW[6:6];
    } CommandRegister @ 0x2c;
    reg {
        name="PacketSize";
        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];
    } PacketSize @ 0x30;
    reg {
        name="CommandSize";
        regwidth=0x20;
            field {
                sw = rw;
            } CMDSIZE[5:0];
    } CommandSize @ 0x34;
    reg {
        name="SlaveHardwareStatus";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } HWSTATUS[7:0];
    } SlaveHardwareStatus @ 0x38;
    reg {
        name="Status8";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FIRSTFRAME[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } DONE[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXEMPTY[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXFULL[3:3];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXOVFLOW[4:4];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXUNDERRUN[5:5];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } SSEL[6:6];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ACTIVE[7:7];
    } Status8 @ 0x3c;
    reg {
        name="AliasedControlRegister0";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } CTRL0[7:0];
    } AliasedControlRegister0 @ 0x40;
    reg {
        name="AliasedControlRegister1";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } CTRL1[7:0];
    } AliasedControlRegister1 @ 0x44;
    reg {
        name="AliasedControlRegister2";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } CTRL2[7:0];
    } AliasedControlRegister2 @ 0x48;
    reg {
        name="AliasedControlRegister3";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } CTRL3[7:0];
    } AliasedControlRegister3 @ 0x4c;
} Registers_addrmap;


};