addrmap VirtIOMMIO {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="MagicValue";
        regwidth=0x20;
            field {
                sw = r;
                reset=32'b1110100011100100110100101110110;
            } magic_value[31:0];
    } MagicValue @ 0x0;
    reg {
        name="DeviceVersion";
        regwidth=0x20;
            field {
                sw = r;
                reset=32'b10;
            } dev_version[31:0];
    } DeviceVersion @ 0x4;
    reg {
        name="DeviceID";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } dev_id[31:0];
    } DeviceID @ 0x8;
    reg {
        name="VendorID";
        regwidth=0x20;
            field {
                sw = r;
                reset=16'b1101011110100;
            } vendor_id[15:0];
    } VendorID @ 0xc;
    reg {
        name="DeviceFeatures";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } features[31:0];
    } DeviceFeatures @ 0x10;
    reg {
        name="DeviceFeaturesSelected";
        regwidth=0x20;
            field {
                sw = w;
            } features_sel[0:0];
    } DeviceFeaturesSelected @ 0x14;
    reg {
        name="DriverFeatures";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } guestbits[31:0];
    } DriverFeatures @ 0x20;
    reg {
        name="DriverFeaturesSelected";
        regwidth=0x20;
            field {
                sw = w;
            } guest_sel[0:0];
    } DriverFeaturesSelected @ 0x24;
    reg {
        name="QueueSel";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } queue_sel[31:0];
    } QueueSel @ 0x30;
    reg {
        name="QueueNumMax";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } queue_num_max[31:0];
    } QueueNumMax @ 0x34;
    reg {
        name="QueueNum";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } queue_num[31:0];
    } QueueNum @ 0x38;
    reg {
        name="QueueReady";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } queue_ready[0:0];
    } QueueReady @ 0x44;
    reg {
        name="QueueNotify";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } queue_notifications[31:0];
    } QueueNotify @ 0x50;
    reg {
        name="InterruptStatus";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } has_used_buffer[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } config_has_changed[1:1];
    } InterruptStatus @ 0x60;
    reg {
        name="InterruptACK";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = w;
                onwrite = woclr;
            } has_used_buffer[0:0];
            field {
                sw = w;
                onwrite = woclr;
            } config_has_changed[1:1];
    } InterruptACK @ 0x64;
    reg {
        name="Status";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } status_acknowledge[0:0];
            field {
                sw = rw;
            } status_driver[1:1];
            field {
                sw = rw;
            } status_driver_ok[2:2];
            field {
                sw = rw;
            } status_features_ok[3:3];
            field {
                sw = rw;
            } status_device_needs_reset[6:6];
            field {
                sw = rw;
            } status_failed[7:7];
    } Status @ 0x70;
    reg {
        name="QueueDescLow";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } queue_desc_low[31:0];
    } QueueDescLow @ 0x80;
    reg {
        name="QueueDescHigh";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } queue_desc_high[31:0];
    } QueueDescHigh @ 0x84;
    reg {
        name="QueueDriverLow";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } queue_driver_low[31:0];
    } QueueDriverLow @ 0x90;
    reg {
        name="QueueDriverHigh";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } queue_driver_high[31:0];
    } QueueDriverHigh @ 0x94;
    reg {
        name="QueueDeviceLow";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } queue_device_low[31:0];
    } QueueDeviceLow @ 0xa0;
    reg {
        name="QueueDeviceHigh";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } queue_device_high[31:0];
    } QueueDeviceHigh @ 0xa4;
    reg {
        name="SHMSel";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } shm_sel[31:0];
    } SHMSel @ 0xac;
    reg {
        name="SHMLenLow";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } shm_len_low[31:0];
    } SHMLenLow @ 0xb0;
    reg {
        name="SHMLenHigh";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } shm_len_high[31:0];
    } SHMLenHigh @ 0xb4;
    reg {
        name="SHMBaseLow";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } shm_base_low[31:0];
    } SHMBaseLow @ 0xb8;
    reg {
        name="SHMBaseHigh";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } shm_base_high[31:0];
    } SHMBaseHigh @ 0xbc;
    reg {
        name="QueueReset";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } queue_reset[0:0];
    } QueueReset @ 0xc0;
    reg {
        name="ConfigGeneration";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } config_generation[7:0];
    } ConfigGeneration @ 0xfc;
} MMIORegisters_addrmap;


};