addrmap AndesATCSPI200 {

addrmap {
    desc = "Generated by RenodeModelsAnalyzer";
    reg {
        name="IDAndRevision";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RevMinor_Minor_Revision_Number[3:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RevMajor_Major_Revision_Number[7:4];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } ID_ID_number[31:8];
    } IDAndRevision @ 0x0;
    reg {
        name="TransferFormat";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CPHA_Clock_Phase[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CPOL_Clock_Polarity[1:1];
            field {
                sw = rw;
            } SlvMode_Master_Slave_mode_selection[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } LSB_Transfer_data_with_LSB_first[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MOSIBiDir_Bi_directional_MOSI_in_regular_mode[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DataMerge_Enable_Data_Merge_mode[7:7];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DataLen_Length_of_each_data_unit_in_bits[12:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AddrLen_Address_length_in_bytes[17:16];
    } TransferFormat @ 0x10;
    reg {
        name="DirectIO";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CS_I_Status_of_the_SPI_CS_chip_select_signal[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLK_I_Status_of_the_SPI_SCLK_signal[1:1];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MOSI_I_Status_of_the_SPI_MOSI_signal[2:2];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MISO_I_Status_of_the_SPI_MISO_signal[3:3];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WP_I_Status_of_the_SPI_Flash_write_protect_signal[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HOLD_I_Status_of_the_SPI_Flash_hold_signal[5:5];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } CS_O_Output_value_for_the_SPI_CS_chip_select_signal[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLK_O_Output_value_for_the_SPI_SCLK_signal[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MOSI_O_Output_value_for_the_SPI_MOSI_signal[10:10];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MISO_O_Output_value_for_the_SPI_MISO_signal[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } WP_O_Output_value_for_the_SPI_Flash_write_protect_signal[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
                reset=1'b1;
            } HOLD_O_Output_value_for_the_SPI_Flash_hold_signal[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CS_OE_Output_enable_for_SPI_CS_chip_select_signal[16:16];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLK_OE_Output_enable_for_the_SPI_SCLK_signal[17:17];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MOSI_OE_Output_enable_for_the_SPI_MOSI_signal[18:18];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MISO_OE_Output_enable_fo_the_SPI_MISO_signal[19:19];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WP_OE_Output_enable_for_the_SPI_Flash_write_protect_signal[20:20];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } HOLD_OE_Output_enable_for_the_SPI_Flash_hold_signal[21:21];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DirectIOEn_Enable_Direct_IO[24:24];
    } DirectIO @ 0x14;
    reg {
        name="WriteTransferCount";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } Transfer_count_for_write_transaction_SPI_data[31:0];
    } WriteTransferCount @ 0x18;
    reg {
        name="ReadTransferCount";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } Transfer_count_for_read_transaction_SPI_data[31:0];
    } ReadTransferCount @ 0x1c;
    reg {
        name="TransferControl";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RdTranCnt_Transfer_count_for_read_data[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DummyCnt_Dummy_data_count[10:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TokenValue_Token_value_M_Mode_only[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } WrTranCnt_Transfer_count_write_data[20:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TokenEn_Token_transfer_enable[21:21];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DualQuad_SPI_data_phase_format[23:22];
            field {
                sw = rw;
            } TransMode_Transfer_mode[27:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AddrFmt_SPI_address_phase_format_M_Mode_only[28:28];
            field {
                sw = rw;
            } AddrEn_SPI_address_phase_enable_M_Mode_only[29:29];
            field {
                sw = rw;
            } CmdEn_SPI_command_phase_enable_M_Mode_only[30:30];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SlvDataOnly_Data_only_slave[31:31];
    } TransferControl @ 0x20;
    reg {
        name="Command";
        desc = "This register has the following custom Renode callbacks: Write";
        regwidth=0x20;
            field {
                sw = rw;
            } CMD_SPI_command[7:0];
    } Command @ 0x24;
    reg {
        name="Address";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = rw;
            } ADDR_SPI_Address[31:0];
    } Address @ 0x28;
    reg {
        name="Data";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write, Provider.";
                sw = rw;
            } DATA_SPI_data[7:0];
    } Data @ 0x2c;
    reg {
        name="Control";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } SPIRST_SPI_reset[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } RXFIFORST_Receive_FIFO_reset[1:1];
            field {
                desc = "This field has the following custom Renode callbacks: Write.";
                sw = w;
            } TXFIFORST_Transmit_FIFO_reset[2:2];
            field {
                sw = rw;
            } RXDMAEN_RX_DMA_enable[3:3];
            field {
                sw = rw;
            } TXDMAEN_Tx_DMA_enable[4:4];
            field {
                sw = rw;
            } RXTHRES_RX_FIFO_Threshold[15:8];
            field {
                sw = rw;
            } TXTHRES_TX_FIFO_Threshold[23:16];
    } Control @ 0x30;
    reg {
        name="Status";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SPIActive_SPI_register_programming_is_in_progress[0:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXNUM5_0_Number_of_valid_entries_in_the_Receive_FIFO[12:8];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXEMPTY_Receive_FIFO_Empty_flag[14:14];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RXFULL_Receive_FIFO_Full_flag[15:15];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXNUM5_0_Number_of_valid_entries_in_the_Transmit_FIFO[20:16];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXEMPTY_Transmit_FIFO_Empty_flag[22:22];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TXFULL_Transmit_FIFO_Full_flag[23:23];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXNUM7_6_Number_of_valid_entries_in_the_Receive_FIFO[25:24];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TXNUM7_6_Number_of_valid_entries_in_the_Transmit_FIFO[29:28];
    } Status @ 0x34;
    reg {
        name="InterruptEnable";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXFIFOORIntEn_Enable_the_SPI_Receive_FIFO_Overrun_interrupt[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TXFIFOURIntEn_Enable_the_SPI_Transmit_FIFO_Underrun_interrupt[1:1];
            field {
                sw = rw;
            } RXFIFOIntEn_Enable_the_SPI_Receive_FIFO_Threshold_interrupt[2:2];
            field {
                sw = rw;
            } TXFIFOIntEn_Enable_the_SPI_Transmit_FIFO_Threshold_interrupt[3:3];
            field {
                sw = rw;
            } EndIntEn_Enable_End_of_SPI_Transfer_interrupt[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SlvCmdEn_Enable_the_Slave_Command_Interrupt[5:5];
    } InterruptEnable @ 0x38;
    reg {
        name="InterruptStatus";
        desc = "This register has the following custom Renode callbacks: Change";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } RXFIFOORInt_RX_FIFO_Overrun_interrupt[0:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } TXFIFOURInt_TX_FIFO_Underrun_interrupt[1:1];
            field {
                sw = rw;
                onwrite = woclr;
            } RXFIFOInt_RX_FIFO_Threshold_interrupt[2:2];
            field {
                sw = rw;
                onwrite = woclr;
            } TXFIFOInt_TX_FIFO_Threshold_interrupt[3:3];
            field {
                sw = rw;
                onwrite = woclr;
            } EndInt_End_of_SPI_Transfer_interrupt[4:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SlvCmd_Slave_Command_Interrupt[5:5];
    } InterruptStatus @ 0x3c;
    reg {
        name="TimingRegister";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } SCLK_DIV_CLK_frequency_ratio_between_clock_source_and_interface_SCLK[7:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CHST_Minimum_time_that_SPI_CS_should_stay_high[11:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } CS2SCLK_Minimum_time_between_edges_of_SPI_CS_and_SCLK[13:12];
    } TimingRegister @ 0x40;
    reg {
        name="MemoryAccessControl";
        regwidth=0x20;
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MemRdCmd_Selects_the_SPI_command_for_serving_the_memory_mapped_reads_on_the_AHB_EILM_bus[3:0];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } MemCtrlChg_Detect_change_on_0x40_ir_0x50_registers[8:8];
    } MemoryAccessControl @ 0x50;
    reg {
        name="SlaveStatus";
        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];
    } SlaveStatus @ 0x60;
    reg {
        name="SlaveDataCount";
        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];
    } SlaveDataCount @ 0x64;
    reg {
        name="Configuration";
        regwidth=0x20;
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } RxFIFOSize_Depth_of_RX_FIFO[3:0];
            field {
                desc = "This field has the following custom Renode callbacks: Provider.";
                sw = r;
            } TxFIFOSize_Depth_of_TX_FIFO[7:4];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DualSPI_Support_for_Dual_I_O_SPI[8:8];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } QuadSPI_Support_for_Quad_I_O_SPI[9:9];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } DirectIO_Support_for_Direct_SPI_IO[11:11];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } AHBMem_Support_for_memory_mapped_access_through_AHB_bus[12:12];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } EILMMem_Support_for_memory_mapped_access_through_EILM_bus[13:13];
            field {
                desc = "The field is a Tag.";
                sw = rw;
            } Slave_Support_for_SPI_Slave_mode[14:14];
    } Configuration @ 0x7c;
} Registers_addrmap;


};