addrmap OpenTitan_I2C {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="InterruptState";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                sw = rw;
                onwrite = woclr;
            } fmt_watermark[0:0];
            field {
                sw = rw;
                onwrite = woclr;
            } rx_watermark[1:1];
            field {
                sw = rw;
                onwrite = woclr;
            } fmt_overflow[2:2];
            field {
                sw = rw;
                onwrite = woclr;
            } rx_overflow[3:3];
            field {
                sw = rw;
                onwrite = woclr;
            } nak[4:4];
            field {
                sw = rw;
                onwrite = woclr;
            } scl_interference[5:5];
            field {
                sw = rw;
                onwrite = woclr;
            } sda_interference[6:6];
            field {
                sw = rw;
                onwrite = woclr;
            } stretch_timeout[7:7];
            field {
                sw = rw;
                onwrite = woclr;
            } sda_unstable[8:8];
            field {
                sw = rw;
                onwrite = woclr;
            } trans_complete[9:9];
            field {
                sw = rw;
                onwrite = woclr;
            } tx_empty[10:10];
            field {
                sw = rw;
                onwrite = woclr;
            } tx_nonempty[11:11];
            field {
                sw = rw;
                onwrite = woclr;
            } tx_overflow[12:12];
            field {
                sw = rw;
                onwrite = woclr;
            } acq_overflow[13:13];
            field {
                sw = rw;
                onwrite = woclr;
            } ack_stop[14:14];
            field {
                sw = rw;
                onwrite = woclr;
            } host_timeout[15:15];
    } InterruptState @ 0x0;
    reg {
        name="InterruptEnable";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                sw = rw;
            } fmt_watermark[0:0];
            field {
                sw = rw;
            } rx_watermark[1:1];
            field {
                sw = rw;
            } fmt_overflow[2:2];
            field {
                sw = rw;
            } rx_overflow[3:3];
            field {
                sw = rw;
            } nak[4:4];
            field {
                sw = rw;
            } scl_interference[5:5];
            field {
                sw = rw;
            } sda_interference[6:6];
            field {
                sw = rw;
            } stretch_timeout[7:7];
            field {
                sw = rw;
            } sda_unstable[8:8];
            field {
                sw = rw;
            } trans_complete[9:9];
            field {
                sw = rw;
            } tx_empty[10:10];
            field {
                sw = rw;
            } tx_nonempty[11:11];
            field {
                sw = rw;
            } tx_overflow[12:12];
            field {
                sw = rw;
            } acq_overflow[13:13];
            field {
                sw = rw;
            } ack_stop[14:14];
            field {
                sw = rw;
            } host_timeout[15:15];
    } InterruptEnable @ 0x4;
    reg {
        name="InterruptTest";
        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;
            } fmt_watermark[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } rx_watermark[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } fmt_overflow[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } rx_overflow[3:3];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } nak[4:4];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } scl_interference[5:5];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } sda_interference[6:6];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } stretch_timeout[7:7];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } sda_unstable[8:8];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } trans_complete[9:9];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } tx_empty[10:10];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } tx_nonempty[11:11];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } tx_overflow[12:12];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } acq_overflow[13:13];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } ack_stop[14:14];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } host_timeout[15:15];
    } 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: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } ENABLEHOST[0:0];
            field {
                sw = rw;
            } ENABLETARGET[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LLPBK[2:2];
    } Control @ 0x10;
    reg {
        name="Status";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } FMTFULL[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXFULL[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
                reset=1'b1;
            } FMTEMPTY[2:2];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
                reset=1'b1;
            } HOSTIDLE[3:3];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
                reset=1'b1;
            } TARGETIDLE[4:4];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
                reset=1'b1;
            } RXEMPTY[5:5];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXFULL[6:6];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } ACQFULL[7:7];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXEMPTY[8:8];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } ACQEMPTY[9:9];
    } Status @ 0x14;
    reg {
        name="ReadData";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RDATA[7:0];
    } ReadData @ 0x18;
    reg {
        name="FormatData";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } FBYTE[7:0];
            field {
                sw = rw;
            } START[8:8];
            field {
                sw = rw;
            } STOP[9:9];
            field {
                sw = rw;
            } READ[10:10];
            field {
                sw = rw;
            } RCONT[11:11];
            field {
                sw = rw;
            } NAKOK[12:12];
    } FormatData @ 0x1c;
    reg {
        name="FifoControl";
        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;
            } RXRST[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } FMTRST[1:1];
            field {
                sw = rw;
            } RXILVL[4:2];
            field {
                sw = rw;
            } FMTILVL_FIELD[6:5];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } ACQRST[7:7];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } TXRST[8:8];
    } FifoControl @ 0x20;
    reg {
        name="FifoStatus";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } FMTLVL[6:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXLVL[14:8];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXLVL[22:16];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } ACQLVL[30:24];
    } FifoStatus @ 0x24;
    reg {
        name="OverrideControl";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TXOVRDEN[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLVAL[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SDAVAL[2:2];
    } OverrideControl @ 0x28;
    reg {
        name="OversampledValues";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCL_RX[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SDA_RX[31:16];
    } OversampledValues @ 0x2c;
    reg {
        name="Timing0";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } THIGH[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TLOW[31:16];
    } Timing0 @ 0x30;
    reg {
        name="Timing1";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } T_R[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } T_F[31:16];
    } Timing1 @ 0x34;
    reg {
        name="Timing2";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TSU_STA[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } THD_STA[31:16];
    } Timing2 @ 0x38;
    reg {
        name="Timing3";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TSU_DAT[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } THD_DAT[31:16];
    } Timing3 @ 0x3c;
    reg {
        name="Timing4";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TSU_STO[15:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } T_BUF[31:16];
    } Timing4 @ 0x40;
    reg {
        name="ClockStrechingTimeout";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } VAL[30:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EN[31:31];
    } ClockStrechingTimeout @ 0x44;
    reg {
        name="TargetId";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ADDRESS0[6:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MASK0[13:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } ADDRESS1[20:14];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MASK1[27:21];
    } TargetId @ 0x48;
    reg {
        name="AcquiredData";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } ABYTE_and_SIGNAL[9:0];
    } AcquiredData @ 0x4c;
    reg {
        name="TransmitData";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } TXDATA[7:0];
    } TransmitData @ 0x50;
    reg {
        name="TargetClockStretching";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } I2C_STRETCH_CTRL_EN_ADDR_TX[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } I2C_STRETCH_CTRL_EN_ADDR_ACQ[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } I2C_STRETCH_CTRL_STOP_TX[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } I2C_STRETCH_CTRL_STOP_ACQ[3:3];
    } TargetClockStretching @ 0x54;
    reg {
        name="HostClockGenerationTimeout";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HOST_TIMEOUT_CTRL[31:0];
    } HostClockGenerationTimeout @ 0x58;
} Registers_addrmap;


};