#ifndef __MEMORY_MAP_H__
#define __MEMORY_MAP_H__
#include <iostream>
#include <systemc.h>
#define SLAVE_BASE_ADDR_00 0x00000000
#define SLAVE_BASE_ADDR_01 0x01000000
#define SLAVE_BASE_ADDR_02 0x02000000
#define SLAVE_BASE_ADDR_03 0x03000000
#define SLAVE_BASE_ADDR_04 0x40000000
#define SLAVE_BASE_ADDR_05 0x50000000
#define SLAVE_BASE_ADDR_06 0x60000000
#define SLAVE_BASE_ADDR_07 0x70000000
#define SLAVE_BASE_ADDR_08 0x80000000
#define SLAVE_BASE_ADDR_09 0x90000000
#define SLAVE_BASE_ADDR_10 0x10000000
#define SLAVE_BASE_ADDR_11 0x11000000
#define SLAVE_BASE_ADDR_12 0x12000000
#define SLAVE_BASE_ADDR_13 0x13000000
#define SLAVE_BASE_ADDR_14 0x14000000
#define SLAVE_BASE_ADDR_15 0x15000000
#define SLAVE_ADDR_SIZE_00 0x01000000
#define SLAVE_ADDR_SIZE_01 0x01000000
#define SLAVE_ADDR_SIZE_02 0x01000000
#define SLAVE_ADDR_SIZE_03 0x01000000
#define SLAVE_ADDR_SIZE_04 0x01000000
#define SLAVE_ADDR_SIZE_05 0x01000000
#define SLAVE_ADDR_SIZE_06 0x01000000
#define SLAVE_ADDR_SIZE_07 0x01000000
#define SLAVE_ADDR_SIZE_08 0x01000000
#define SLAVE_ADDR_SIZE_09 0x01000000
#define SLAVE_ADDR_SIZE_10 0x01000000
#define SLAVE_ADDR_SIZE_11 0x01000000
#define SLAVE_ADDR_SIZE_12 0x01000000
#define SLAVE_ADDR_SIZE_13 0x01000000
#define SLAVE_ADDR_SIZE_14 0x01000000
#define SLAVE_ADDR_SIZE_15 0x01000000
#define DMAC_OFF_STATE 0x00
#define DMAC_OFF_INTERRUPT 0x04
#define DMAC_OFF_INT_ENABLE 0x08
#define DMAC_OFF_SRC_ADDR 0x0C
#define DMAC_OFF_DST_ADDR 0x10
#define DMAC_OFF_DATASIZE 0x14
#define DMAC_OFF_OPSTART 0x18
#define DATA_SIZE_1BYTE 0b000
#define DATA_SIZE_2BYTE 0b001
#define DATA_SIZE_4BYTE 0b010
#define BURST_FIXED 0b00
#define BURST_INCRESE 0b01
#define BURST_LEN_01 0x0
#define BURST_LEN_02 0x1
#define BURST_LEN_03 0x2
#define BURST_LEN_04 0x3
#define BURST_LEN_05 0x4
#define BURST_LEN_06 0x5
#define BURST_LEN_07 0x6
#define BURST_LEN_08 0x7
#define BURST_LEN_09 0x8
#define BURST_LEN_10 0x9
#define BURST_LEN_11 0xA
#define BURST_LEN_12 0xB
#define BURST_LEN_13 0xC
#define BURST_LEN_14 0xD
#define BURST_LEN_15 0xE
#define BURST_LEN_16 0xF
#define FRAME_BUFF_BASE SLAVE_BASE_ADDR_00
#define RESULT_BUFF_BASE SLAVE_BASE_ADDR_01
#define RESULT_BUFF_SIZE SLAVE_ADDR_SIZE_01
#define DMAC_BASE SLAVE_BASE_ADDR_02
#define DMAC_SIZE SLAVE_ADDR_SIZE_02
#define BROT_BASE SLAVE_BASE_ADDR_03
#define BROT_SIZE SLAVE_ADDR_SIZE_03
#define BROT_REG_OFFSET_STATE 0x00
#define BROT_REG_OFFSET_INTERRUPT 0x04
#define BROT_REG_OFFSET_INT_ENABLE 0x08
#define BROT_REG_OFFSET_PX 0x0C
#define BROT_REG_OFFSET_PY 0x10
#define BROT_REG_OFFSET_DX 0x14
#define BROT_REG_OFFSET_OPSTART 0x18
#define BROT_REG_OFFSET_COL00 0x1C
#define BROT_REG_OFFSET_COL15 0x58
#endif