Optimize matmul CRC-only path
This commit is contained in:
@@ -52,7 +52,7 @@
|
||||
00000011100000000110000000001101
|
||||
00000100000000000000000110101100
|
||||
00011100000000000000000000101100
|
||||
00000010101010001011000110001100
|
||||
00000010101001111011000110001100
|
||||
00011100000000000001000000001101
|
||||
00000010101111001001000110101101
|
||||
00011100000000000001000000001110
|
||||
@@ -94,7 +94,7 @@
|
||||
00000000000101010000000000001110
|
||||
00101001000000000001000110101110
|
||||
00011100000000000000000000001100
|
||||
00000010100010100001000110001100
|
||||
00000010100010010001000110001100
|
||||
00000100000000000011000000101100
|
||||
00000011100000000000010000001101
|
||||
00000100000000010001000000101101
|
||||
@@ -158,27 +158,20 @@
|
||||
00101000000000000000000111101100
|
||||
01011111111111111110000110000000
|
||||
00010101011111101010000000001100
|
||||
00000011100000000100000110001111
|
||||
00101001100000000000000111100000
|
||||
00000010100000000101100000010010
|
||||
00000011100000000100000110010000
|
||||
00101001100000000000001000000000
|
||||
00000010100000000101100000001110
|
||||
00000011100000000001000110001101
|
||||
00101001100000000000000110110010
|
||||
00010100001110001000000000010001
|
||||
00000011100000001000000110010000
|
||||
00010100001110001001001110001110
|
||||
00101001100000000000001000010001
|
||||
00000011100100000000000111001110
|
||||
00000011100000001001000110000101
|
||||
00101001100000000000000110101110
|
||||
00010100001110001000000000000100
|
||||
00010100000000000000000000101111
|
||||
00101001100000000000000010101110
|
||||
00000011100000001010000110000100
|
||||
00000011100000001000000110010100
|
||||
00101001100000000000001010000100
|
||||
00000011100000001010000110010011
|
||||
00000011100011100010000111101111
|
||||
00101001100000000000000010001111
|
||||
00000011100000001011000110010011
|
||||
00000010100000100000000000010100
|
||||
00101001100000000000001001110100
|
||||
00000011100000001100000110010001
|
||||
00000010100000110000000000010010
|
||||
00101001100000000000001001101111
|
||||
00000011100000001011000110010001
|
||||
00000010100000100000000000010010
|
||||
00000010100001000000000000010000
|
||||
00101001100000000000001000110010
|
||||
00010101011111101010000000001110
|
||||
@@ -193,7 +186,7 @@
|
||||
00010101011111100000000000010000
|
||||
00000010100000010011010000001100
|
||||
00011100000000000001000000001111
|
||||
00000010101101000010000111101111
|
||||
00000010101101001001000111101111
|
||||
00000011100000000001011000001101
|
||||
00101001100000000011000001101100
|
||||
00101010000000000011000001101110
|
||||
@@ -209,7 +202,6 @@
|
||||
00000010100000000010010000010011
|
||||
00000010101111111111000000010010
|
||||
00000011100000000001011000001101
|
||||
00000011010000000000000000000000
|
||||
00000000000101111011101000101100
|
||||
00000011010000000011110110001100
|
||||
00000010100000010101110110001111
|
||||
@@ -222,9 +214,9 @@
|
||||
00000010101111111111000111001110
|
||||
01011111111111111101100111010010
|
||||
00010101011111100000000000010000
|
||||
00000010100000000011010000001100
|
||||
00000010100000000010100000001100
|
||||
00011100000000000001000000001111
|
||||
00000010101100100111000111101111
|
||||
00000010101100101111000111101111
|
||||
00000011100000000001011000001101
|
||||
00101001100000000011000001101100
|
||||
00101010000000000011000001101110
|
||||
@@ -246,14 +238,6 @@
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000010101111100001000001100011
|
||||
00101001100000011110000001100001
|
||||
00101001100000011101000001100010
|
||||
@@ -705,15 +689,15 @@
|
||||
01001101010101000100000101001101
|
||||
01010011010111110100110001010101
|
||||
01010100010100100100000101010100
|
||||
00000000000000000000101000001101
|
||||
00000000000000000000000000001010
|
||||
01001101010101000100000101001101
|
||||
01000011010111110100110001010101
|
||||
00110010001100110100001101010010
|
||||
00000000000000000000000000111101
|
||||
01000001010011010000101000001101
|
||||
01001100010101010100110101010100
|
||||
01001110010011110100010001011111
|
||||
00000000000010100000110101000101
|
||||
01010100010000010100110100001010
|
||||
01011111010011000101010101001101
|
||||
01000101010011100100111101000100
|
||||
00000000000000000000000000001010
|
||||
10111111000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
00000000000000000000000000000000
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* user-sample - CIC-IEC 2026 Stage 3 Evaluation Program
|
||||
*
|
||||
* Matmul AXI-master path.
|
||||
* Matmul AXI-master CRC-only path.
|
||||
*/
|
||||
|
||||
#include <dma.h>
|
||||
@@ -41,12 +41,8 @@ unsigned long UART_BASE = 0xbf000000;
|
||||
#define EXTRAM_BASE_UNCACHED (0xA0000000 | (EXTRAM_BASE_PHYS & 0x1FFFFFFF))
|
||||
|
||||
#define SRC_BASE_WORDS 0
|
||||
#define DST_BASE_WORDS (SRC_BASE_WORDS + MATMUL_GROUP_NUM * 32)
|
||||
#define RESULT_WORDS (MATMUL_GROUP_NUM * 48)
|
||||
|
||||
/* ExtRAM Physical Addresses for DMA */
|
||||
/* ExtRAM physical address for matrix inputs. */
|
||||
#define EXTRAM_PHYS_AB(g) (EXTRAM_BASE_PHYS + (SRC_BASE_WORDS * 4) + (g) * 128)
|
||||
#define EXTRAM_PHYS_C(g) (EXTRAM_BASE_PHYS + (DST_BASE_WORDS * 4) + (g) * 192)
|
||||
|
||||
/* ─── MATMUL IP registers (Ping-Pong Memory Map) ──────────────────── */
|
||||
#define MATMUL_BASE_PHYS 0x1f500000
|
||||
@@ -55,10 +51,8 @@ unsigned long UART_BASE = 0xbf000000;
|
||||
#define MATMUL_CTRL (MATMUL_BASE_UNCACHED + 0x000)
|
||||
#define MATMUL_STATUS (MATMUL_BASE_UNCACHED + 0x004)
|
||||
#define MATMUL_DMA_SRC_BASE (MATMUL_BASE_UNCACHED + 0x020)
|
||||
#define MATMUL_DMA_DST_BASE (MATMUL_BASE_UNCACHED + 0x024)
|
||||
#define MATMUL_DMA_GROUPS (MATMUL_BASE_UNCACHED + 0x028)
|
||||
#define MATMUL_DMA_SRC_STRIDE (MATMUL_BASE_UNCACHED + 0x02C)
|
||||
#define MATMUL_DMA_DST_STRIDE (MATMUL_BASE_UNCACHED + 0x030)
|
||||
|
||||
#define CTRL_START_B0 0x1
|
||||
#define CTRL_START_B1 0x2
|
||||
@@ -92,10 +86,8 @@ int main(void)
|
||||
*(volatile unsigned int *)MATMUL_CRC = 0;
|
||||
*mat_status = STATUS_DMA_DONE | STATUS_DONE | STATUS_ERROR;
|
||||
*(volatile unsigned int *)MATMUL_DMA_SRC_BASE = EXTRAM_PHYS_AB(0);
|
||||
*(volatile unsigned int *)MATMUL_DMA_DST_BASE = EXTRAM_PHYS_C(0);
|
||||
*(volatile unsigned int *)MATMUL_DMA_GROUPS = MATMUL_GROUP_NUM;
|
||||
*(volatile unsigned int *)MATMUL_DMA_SRC_STRIDE = 128;
|
||||
*(volatile unsigned int *)MATMUL_DMA_DST_STRIDE = 192;
|
||||
*mat_ctrl = CTRL_DMA_START;
|
||||
while (!(*mat_status & STATUS_DMA_DONE)) {}
|
||||
*mat_status = STATUS_DMA_DONE;
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user