addrmap OpenTitan_GPIO {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="InterruptState";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
                onwrite = woclr;
            } INTR_STATE[31:0];
    } InterruptState @ 0x0;
    reg {
        name="InterruptEnable";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } INTR_ENABLE[31:0];
    } 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;
            } INTR_TEST[31:0];
    } 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="Input";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } DATA_IN[31:0];
    } Input @ 0x10;
    reg {
        name="Output";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } DIRECT_OUT[31:0];
    } Output @ 0x14;
    reg {
        name="OutputMaskedLower";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } MASKED_OUT_LOWER_data[15:0];
            field {
                sw = w;
            } MASKED_OUT_LOWER_mask[31:16];
    } OutputMaskedLower @ 0x18;
    reg {
        name="OutputMaskedUpper";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } MASKED_OUT_UPPER_data[15:0];
            field {
                sw = w;
            } MASKED_OUT_UPPER_mask[31:16];
    } OutputMaskedUpper @ 0x1c;
    reg {
        name="OutputEnable";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } DIRECT_OE[31:0];
    } OutputEnable @ 0x20;
    reg {
        name="OutputEnableMaskedLower";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } MASKED_OE_LOWER_data[15:0];
            field {
                sw = w;
            } MASKED_OE_LOWER_mask[31:16];
    } OutputEnableMaskedLower @ 0x24;
    reg {
        name="OutputEnableMaskedUpper";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = rw;
            } MASKED_OE_UPPER_data[15:0];
            field {
                sw = w;
            } MASKED_OE_UPPER_mask[31:16];
    } OutputEnableMaskedUpper @ 0x28;
    reg {
        name="InterruptEnableRising";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } INTR_CTRL_EN_RISING[31:0];
    } InterruptEnableRising @ 0x2c;
    reg {
        name="InterruptEnableFalling";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } INTR_CTRL_EN_FALLING[31:0];
    } InterruptEnableFalling @ 0x30;
    reg {
        name="InterruptEnableHigh";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } INTR_CTRL_EN_LVLHIGH[31:0];
    } InterruptEnableHigh @ 0x34;
    reg {
        name="InterruptEnableLow";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } INTR_CTRL_EN_LVLLOW[31:0];
    } InterruptEnableLow @ 0x38;
    reg {
        name="InputFilter";
        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];
    } InputFilter @ 0x3c;
} Registers_addrmap;


};