2025-12-17 15:55:25 +08:00

166 lines
5.6 KiB
Python

# keywords (in lower case)
__WORDS__ = \
{
'usb' : '0x00',
'uart' : '0x01',
'i2c' : '0x02',
'spi' : '0x03',
}
__CMDS__ = \
{
'0' : 'CMD_NONE',
'1' : 'CMD_MEM_READ',
'2' : 'CMD_MEM_WRITE',
'3' : 'CMD_DATA',
'4' : 'CMD_ACK',
'5' : 'CMD_STS_CLR',
'6' : 'CMD_CHK_ERR',
'7' : 'CMD_TEST_ECHO',
}
__MEM_SCPU_ADDR__ = \
{
'SIRAM' : 0x10100000,
'SDRAM' : 0x10200000,
'NIRAM' : 0x28000000,
'NDRAM' : 0x2FFF0000,
'NPURAM' : 0x30000000,
'DDR' : 0x60000000,
}
__MEM_NCPU_ADDR__ = \
{
'SIRAM' : 0x10100000,
'SDRAM' : 0x20200000,
'NIRAM' : 0x00000000,
'NDRAM' : 0x0FFF0000,
'NPURAM' : 0x30000000,
'DDR' : 0x60000000,
}
__MEM_SIZE__ = \
{
'SIRAM' : 0x00018000, #96KB
'SDRAM' : 0x00018000, #96KB
'NIRAM' : 0x00010000, #64KB
'NDRAM' : 0x00010000, #64KB
'NPURAM' : 0x00080000, #512KB
'DDR' : 0x02000000, #32MB
}
__MODEL_ID__ = \
{
'TinyYolo' : 1,
'ResNet50' : 2,
'MobileNetV2' : 3,
}
def get_mem_name(dict, value):
keys = dict.keys()
for i in dict:
if(dict[i] == value):
return i
return None
#####################
## NPU Registers ##
#####################
#register attribute
NPU_BASE = 0x30FF0000
NPU_REGS = \
{
'ADDR_NPU_CODE' : NPU_BASE + 0x0000,
'ADDR_NPU_CLEN' : NPU_BASE + 0x0004,
'ADDR_NPU_RUN' : NPU_BASE + 0x0008,
'ADDR_NPU_ELEN' : NPU_BASE + 0x000C,
'ADDR_NPU_VER' : NPU_BASE + 0x0010,
'ADDR_NPU_MODE' : NPU_BASE + 0x0014,
'ADDR_NPU_DMA' : NPU_BASE + 0x0018,
'ADDR_NPU_RDMA0_SRC0' : NPU_BASE + 0x001C,
'ADDR_NPU_RDMA0_SRC1' : NPU_BASE + 0x0020,
'ADDR_NPU_RDMA0_SRC2' : NPU_BASE + 0x0024,
'ADDR_NPU_RDMA0_DST' : NPU_BASE + 0x0028,
'ADDR_NPU_RDMA0_BLK' : NPU_BASE + 0x002C,
'ADDR_NPU_RDMA1_SRC0' : NPU_BASE + 0x0030,
'ADDR_NPU_RDMA1_SRC1' : NPU_BASE + 0x0034,
'ADDR_NPU_RDMA1_SRC2' : NPU_BASE + 0x0038,
'ADDR_NPU_RDMA1_DST' : NPU_BASE + 0x003C,
'ADDR_NPU_RDMA1_BLK' : NPU_BASE + 0x0040,
'ADDR_NPU_RDMA2_SRC0' : NPU_BASE + 0x0044,
'ADDR_NPU_RDMA2_SRC1' : NPU_BASE + 0x0048,
'ADDR_NPU_RDMA2_SRC2' : NPU_BASE + 0x004C,
'ADDR_NPU_RDMA2_DST' : NPU_BASE + 0x0050,
'ADDR_NPU_RDMA2_BLK' : NPU_BASE + 0x0054,
'ADDR_NPU_GETW0' : NPU_BASE + 0x0058,
'ADDR_NPU_GETW1' : NPU_BASE + 0x005C,
'ADDR_NPU_GETW2' : NPU_BASE + 0x0060,
'ADDR_NPU_WDMA0_SRC' : NPU_BASE + 0x0064,
'ADDR_NPU_WDMA0_DST0' : NPU_BASE + 0x0068,
'ADDR_NPU_WDMA0_DST1' : NPU_BASE + 0x006C,
'ADDR_NPU_WDMA0_DST2' : NPU_BASE + 0x0070,
'ADDR_NPU_WDMA0_BLK' : NPU_BASE + 0x0074,
'ADDR_NPU_WDMA1_SRC' : NPU_BASE + 0x0078,
'ADDR_NPU_WDMA1_DST0' : NPU_BASE + 0x007C,
'ADDR_NPU_WDMA1_DST1' : NPU_BASE + 0x0080,
'ADDR_NPU_WDMA1_DST2' : NPU_BASE + 0x0084,
'ADDR_NPU_WDMA1_BLK' : NPU_BASE + 0x0088,
'ADDR_NPU_NMEM_FM0' : NPU_BASE + 0x008C,
'ADDR_NPU_NMEM_FM1' : NPU_BASE + 0x0090,
'ADDR_NPU_NMEM_FM2' : NPU_BASE + 0x0094,
'ADDR_NPU_NMEM_PS0' : NPU_BASE + 0x0098,
'ADDR_NPU_NMEM_PS1' : NPU_BASE + 0x009C,
'ADDR_NPU_NMEM_PS2' : NPU_BASE + 0x00A0,
'ADDR_NPU_NMEM_ST0' : NPU_BASE + 0x00A4,
'ADDR_NPU_NMEM_ST1' : NPU_BASE + 0x00A8,
'ADDR_NPU_NMEM_ST2' : NPU_BASE + 0x00AC,
'ADDR_NPU_NMEM_RDMA0' : NPU_BASE + 0x00B0,
'ADDR_NPU_NMEM_RDMA1' : NPU_BASE + 0x00B4,
'ADDR_NPU_NMEM_RDMA2' : NPU_BASE + 0x00B8,
'ADDR_NPU_NMEM_WDMA0' : NPU_BASE + 0x00BC,
'ADDR_NPU_NMEM_WDMA1' : NPU_BASE + 0x00C0,
'ADDR_NPU_NMEM_WDMA2' : NPU_BASE + 0x00C4,
'ADDR_NPU_NMEM_WT' : NPU_BASE + 0x00C8,
'ADDR_NPU_NMEM_LB' : NPU_BASE + 0x00CC,
'ADDR_NPU_CONV' : NPU_BASE + 0x00D0,
'ADDR_NPU_FMAP0' : NPU_BASE + 0x00D4,
'ADDR_NPU_FMAP1' : NPU_BASE + 0x00D8,
'ADDR_NPU_ZPAD' : NPU_BASE + 0x00DC,
'ADDR_NPU_NEXT0' : NPU_BASE + 0x00E0,
'ADDR_NPU_NEXT1' : NPU_BASE + 0x00E4,
'ADDR_NPU_NEXT2' : NPU_BASE + 0x00E8,
'ADDR_NPU_LWT' : NPU_BASE + 0x00EC,
'ADDR_NPU_ACC' : NPU_BASE + 0x00F0,
'ADDR_NPU_PSUM' : NPU_BASE + 0x00F4,
'ADDR_NPU_CUSTOM' : NPU_BASE + 0x00F8,
'ADDR_NPU_STORE' : NPU_BASE + 0x00FC,
'ADDR_NPU_TRIM' : NPU_BASE + 0x0100,
'ADDR_NPU_RESHAPE' : NPU_BASE + 0x0104,
'ADDR_NPU_PCONV' : NPU_BASE + 0x0108,
'ADDR_NPU_BN' : NPU_BASE + 0x010C,
'ADDR_NPU_RELU' : NPU_BASE + 0x0110,
'ADDR_NPU_RELU6' : NPU_BASE + 0x0114,
'ADDR_NPU_POOL' : NPU_BASE + 0x0118,
'ADDR_NPU_GAP' : NPU_BASE + 0x011C,
'ADDR_NPU_FORMAT' : NPU_BASE + 0x0120,
'ADDR_NPU_RESIZE' : NPU_BASE + 0x0124,
'ADDR_NPU_RESIZE_SRC' : NPU_BASE + 0x0128,
'ADDR_NPU_RESIZE_DST' : NPU_BASE + 0x012C,
'ADDR_NPU_RESIZE_RATIO' : NPU_BASE + 0x0130,
'ADDR_NPU_CHAN' : NPU_BASE + 0x0134,
'ADDR_NPU_INTEN' : NPU_BASE + 0x0138,
'ADDR_NPU_INT' : NPU_BASE + 0x013C,
'ADDR_NPU_DBG0' : NPU_BASE + 0x0140,
'ADDR_NPU_DBG1' : NPU_BASE + 0x0144,
'ADDR_NPU_REGM' : NPU_BASE + 0x0148,
'ADDR_NPU_DUMMY_0' : NPU_BASE + 0x014C,
'ADDR_NPU_DUMMY_1' : NPU_BASE + 0x0150,
'ADDR_NPU_DUMMY_2' : NPU_BASE + 0x0154,
}