addrmap OpenTitan_SpiHost {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="InterruptState";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
                onwrite = woclr;
            } error[0:0];
            field {
                sw = rw;
                onwrite = woclr;
            } spi_event[1:1];
    } InterruptState @ 0x0;
    reg {
        name="InterruptEnable";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } error[0:0];
            field {
                sw = rw;
            } spi_event[1:1];
    } InterruptEnable @ 0x4;
    reg {
        name="InterruptTest";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } error[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } spi_event[1:1];
    } InterruptTest @ 0x8;
    reg {
        name="AlertTest";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } fatal_fault[0:0];
    } AlertTest @ 0xc;
    reg {
        name="Control";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                sw = rw;
                reset=8'b1111111;
            } RX_WATERMARK[7:0];
            field {
                sw = rw;
            } TX_WATERMARK[15:8];
            field {
                sw = rw;
            } OUTPUT_EN[29:29];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } SW_RST[30:30];
            field {
                sw = rw;
            } SPIEN[31:31];
    } Control @ 0x10;
    reg {
        name="Status";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXQD[7:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXQD[15:8];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } CMDQD[19:16];
            field {
                sw = r;
            } RXWM[20:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } BYTEORDER[22:22];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXSTALL[23:23];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXEMPTY[24:24];
            field {
                sw = r;
            } RXFULL[25:25];
            field {
                sw = r;
            } TXWM[26:26];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TXSTALL[27:27];
            field {
                sw = r;
            } TXEMPTY[28:28];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXFULL[29:29];
            field {
                sw = r;
            } ACTIVE[30:30];
            field {
                sw = r;
            } READY[31:31];
    } Status @ 0x14;
    reg {
        name="Configopts";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CLKDIV_0[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CSNIDLE_0[19:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CSNTRAIL_0[23:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CSNLEAD_0[27:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } FULLCYC_0[29:29];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CPHA_0[30:30];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CPOL_0[31:31];
    } Configopts @ 0x18;
    reg {
        name="ChipSelectID";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } CSID[31:0];
    } ChipSelectID @ 0x1c;
    reg {
        name="Command";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = w;
            } LEN[8:0];
            field {
                sw = rw;
            } CSAAT[9:9];
            field {
                sw = w;
            } SPEED[11:10];
            field {
                sw = w;
            } DIRECTION[13:12];
    } Command @ 0x20;
    reg {
        name="Rxdata";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } SPIReceiveData[31:0];
    } Rxdata @ 0x24;
    reg {
        name="Txdata";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPITransmitData[31:0];
    } Txdata @ 0x28;
    reg {
        name="ErrorEnable";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } CMDBUSY[0:0];
            field {
                sw = rw;
                reset=1'b1;
            } OVERFLOW[1:1];
            field {
                sw = rw;
                reset=1'b1;
            } UNDERFLOW[2:2];
            field {
                sw = rw;
                reset=1'b1;
            } CMDINVAL[3:3];
            field {
                sw = rw;
                reset=1'b1;
            } CSIDINVAL[4:4];
    } ErrorEnable @ 0x2c;
    reg {
        name="ErrorStatus";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
                onwrite = woclr;
            } CMDBUSY[0:0];
            field {
                sw = rw;
                onwrite = woclr;
            } OVERFLOW[1:1];
            field {
                sw = rw;
                onwrite = woclr;
            } UNDERFLOW[2:2];
            field {
                sw = rw;
                onwrite = woclr;
            } CMDINVAL[3:3];
            field {
                sw = rw;
                onwrite = woclr;
            } CSIDINVAL[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ACCESSINVAL[5:5];
    } ErrorStatus @ 0x30;
    reg {
        name="EventEnable";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } RXFULL[0:0];
            field {
                sw = rw;
            } TXEMPTY[1:1];
            field {
                sw = rw;
            } RXWM[2:2];
            field {
                sw = rw;
            } TXWM[3:3];
            field {
                sw = rw;
            } READY[4:4];
            field {
                sw = rw;
            } IDLE[5:5];
    } EventEnable @ 0x34;
} Registers_addrmap;


};