summaryrefslogtreecommitdiff
path: root/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10
diff options
context:
space:
mode:
Diffstat (limited to 'python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10')
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_dma_csr_discovery_rom.mif519
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_dma_param.svh153
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_interface_profiling_counters.mif2055
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_ip.qsf289
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_pe_array_system_de5a_area_A10.sv274
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_top_de5a_area_A10.sv1717
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_top_wrapper_de5a_area_A10.sv483
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/generated_files.tcl6
-rw-r--r--python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/interface_param.tcl6
9 files changed, 5502 insertions, 0 deletions
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_dma_csr_discovery_rom.mif b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_dma_csr_discovery_rom.mif
new file mode 100644
index 0000000..ba0bbd3
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_dma_csr_discovery_rom.mif
@@ -0,0 +1,519 @@
+DEPTH = 512;
+WIDTH = 32;
+ADDRESS_RADIX = HEX;
+DATA_RADIX = HEX;
+CONTENT
+BEGIN
+0: 416a23d2;
+1: 2e37a760;
+2: 0;
+3: 0;
+4: 34323032;
+5: 352f332e;
+6: 32;
+7: 0;
+8: 0;
+9: 0;
+a: 0;
+b: 0;
+c: 61356564;
+d: 6572615f;
+e: 61;
+f: 0;
+10: 0;
+11: 0;
+12: 0;
+13: 0;
+14: 0;
+15: 0;
+16: 0;
+17: 0;
+18: 0;
+19: 0;
+1a: 0;
+1b: 0;
+1c: 0;
+1d: 0;
+1e: 0;
+1f: 0;
+20: 0;
+21: 0;
+22: 0;
+23: 0;
+24: 0;
+25: 0;
+26: 0;
+27: 0;
+28: 0;
+29: 0;
+2a: 0;
+2b: 0;
+2c: 0;
+2d: 0;
+2e: 0;
+2f: 0;
+30: 0;
+31: 0;
+32: 0;
+33: 0;
+34: 0;
+35: 0;
+36: 0;
+37: 0;
+38: 0;
+39: 0;
+3a: 0;
+3b: 0;
+3c: 0;
+3d: 0;
+3e: 0;
+3f: 0;
+40: 0;
+41: 0;
+42: 0;
+43: 0;
+44: 0;
+45: 0;
+46: 0;
+47: 0;
+48: 0;
+49: 0;
+4a: 0;
+4b: 0;
+4c: 0;
+4d: 0;
+4e: 0;
+4f: 0;
+50: 0;
+51: 0;
+52: 0;
+53: 0;
+54: 0;
+55: 0;
+56: 0;
+57: 0;
+58: 0;
+59: 0;
+5a: 0;
+5b: 0;
+5c: 0;
+5d: 0;
+5e: 0;
+5f: 0;
+60: 0;
+61: 0;
+62: 0;
+63: 0;
+64: 0;
+65: 0;
+66: 0;
+67: 0;
+68: 0;
+69: 0;
+6a: 0;
+6b: 0;
+6c: 0;
+6d: 0;
+6e: 0;
+6f: 0;
+70: 0;
+71: 0;
+72: 0;
+73: 0;
+74: 0;
+75: 0;
+76: 0;
+77: 0;
+78: 0;
+79: 0;
+7a: 0;
+7b: 0;
+7c: 0;
+7d: 0;
+7e: 0;
+7f: 0;
+80: 0;
+81: 0;
+82: 0;
+83: 0;
+84: 0;
+85: 0;
+86: 0;
+87: 0;
+88: 0;
+89: 0;
+8a: 0;
+8b: 0;
+8c: 0;
+8d: 0;
+8e: 0;
+8f: 0;
+90: 0;
+91: 0;
+92: 0;
+93: 0;
+94: 0;
+95: 0;
+96: 0;
+97: 0;
+98: 0;
+99: 0;
+9a: 0;
+9b: 0;
+9c: 0;
+9d: 0;
+9e: 0;
+9f: 0;
+a0: 0;
+a1: 0;
+a2: 0;
+a3: 0;
+a4: 0;
+a5: 0;
+a6: 0;
+a7: 0;
+a8: 0;
+a9: 0;
+aa: 0;
+ab: 0;
+ac: 0;
+ad: 0;
+ae: 0;
+af: 0;
+b0: 0;
+b1: 0;
+b2: 0;
+b3: 0;
+b4: 0;
+b5: 0;
+b6: 0;
+b7: 0;
+b8: 0;
+b9: 0;
+ba: 0;
+bb: 0;
+bc: 0;
+bd: 0;
+be: 0;
+bf: 0;
+c0: 0;
+c1: 0;
+c2: 0;
+c3: 0;
+c4: 0;
+c5: 0;
+c6: 0;
+c7: 0;
+c8: 0;
+c9: 0;
+ca: 0;
+cb: 0;
+cc: 0;
+cd: 0;
+ce: 0;
+cf: 0;
+d0: 0;
+d1: 0;
+d2: 0;
+d3: 0;
+d4: 0;
+d5: 0;
+d6: 0;
+d7: 0;
+d8: 0;
+d9: 0;
+da: 0;
+db: 0;
+dc: 0;
+dd: 0;
+de: 0;
+df: 0;
+e0: 0;
+e1: 0;
+e2: 0;
+e3: 0;
+e4: 0;
+e5: 0;
+e6: 0;
+e7: 0;
+e8: 0;
+e9: 0;
+ea: 0;
+eb: 0;
+ec: 0;
+ed: 0;
+ee: 0;
+ef: 0;
+f0: 0;
+f1: 0;
+f2: 0;
+f3: 0;
+f4: 0;
+f5: 0;
+f6: 0;
+f7: 0;
+f8: 0;
+f9: 0;
+fa: 0;
+fb: 0;
+fc: 0;
+fd: 0;
+fe: 0;
+ff: 0;
+100: 0;
+101: 0;
+102: 0;
+103: 0;
+104: 0;
+105: 0;
+106: 0;
+107: 0;
+108: 0;
+109: 0;
+10a: 0;
+10b: 0;
+10c: 0;
+10d: 0;
+10e: 0;
+10f: 0;
+110: 0;
+111: 0;
+112: 0;
+113: 0;
+114: 0;
+115: 0;
+116: 0;
+117: 0;
+118: 0;
+119: 0;
+11a: 0;
+11b: 0;
+11c: 0;
+11d: 0;
+11e: 0;
+11f: 0;
+120: 0;
+121: 0;
+122: 0;
+123: 0;
+124: 0;
+125: 0;
+126: 0;
+127: 0;
+128: 0;
+129: 0;
+12a: 0;
+12b: 0;
+12c: 0;
+12d: 0;
+12e: 0;
+12f: 0;
+130: 0;
+131: 0;
+132: 0;
+133: 0;
+134: 0;
+135: 0;
+136: 0;
+137: 0;
+138: 0;
+139: 0;
+13a: 0;
+13b: 0;
+13c: 0;
+13d: 0;
+13e: 0;
+13f: 0;
+140: 0;
+141: 0;
+142: 0;
+143: 0;
+144: 0;
+145: 0;
+146: 0;
+147: 0;
+148: 0;
+149: 0;
+14a: 0;
+14b: 0;
+14c: 0;
+14d: 0;
+14e: 0;
+14f: 0;
+150: 0;
+151: 0;
+152: 0;
+153: 0;
+154: 0;
+155: 0;
+156: 0;
+157: 0;
+158: 0;
+159: 0;
+15a: 0;
+15b: 0;
+15c: 0;
+15d: 0;
+15e: 0;
+15f: 0;
+160: 0;
+161: 0;
+162: 0;
+163: 0;
+164: 0;
+165: 0;
+166: 0;
+167: 0;
+168: 0;
+169: 0;
+16a: 0;
+16b: 0;
+16c: 0;
+16d: 0;
+16e: 0;
+16f: 0;
+170: 0;
+171: 0;
+172: 0;
+173: 0;
+174: 0;
+175: 0;
+176: 0;
+177: 0;
+178: 0;
+179: 0;
+17a: 0;
+17b: 0;
+17c: 0;
+17d: 0;
+17e: 0;
+17f: 0;
+180: 0;
+181: 0;
+182: 0;
+183: 0;
+184: 0;
+185: 0;
+186: 0;
+187: 0;
+188: 0;
+189: 0;
+18a: 0;
+18b: 0;
+18c: 0;
+18d: 0;
+18e: 0;
+18f: 0;
+190: 0;
+191: 0;
+192: 0;
+193: 0;
+194: 0;
+195: 0;
+196: 0;
+197: 0;
+198: 0;
+199: 0;
+19a: 0;
+19b: 0;
+19c: 0;
+19d: 0;
+19e: 0;
+19f: 0;
+1a0: 0;
+1a1: 0;
+1a2: 0;
+1a3: 0;
+1a4: 0;
+1a5: 0;
+1a6: 0;
+1a7: 0;
+1a8: 0;
+1a9: 0;
+1aa: 0;
+1ab: 0;
+1ac: 0;
+1ad: 0;
+1ae: 0;
+1af: 0;
+1b0: 0;
+1b1: 0;
+1b2: 0;
+1b3: 0;
+1b4: 0;
+1b5: 0;
+1b6: 0;
+1b7: 0;
+1b8: 0;
+1b9: 0;
+1ba: 0;
+1bb: 0;
+1bc: 0;
+1bd: 0;
+1be: 0;
+1bf: 0;
+1c0: 0;
+1c1: 0;
+1c2: 0;
+1c3: 0;
+1c4: 0;
+1c5: 0;
+1c6: 0;
+1c7: 0;
+1c8: 0;
+1c9: 0;
+1ca: 0;
+1cb: 0;
+1cc: 0;
+1cd: 0;
+1ce: 0;
+1cf: 0;
+1d0: 0;
+1d1: 0;
+1d2: 0;
+1d3: 0;
+1d4: 0;
+1d5: 0;
+1d6: 0;
+1d7: 0;
+1d8: 0;
+1d9: 0;
+1da: 0;
+1db: 0;
+1dc: 0;
+1dd: 0;
+1de: 0;
+1df: 0;
+1e0: 0;
+1e1: 0;
+1e2: 0;
+1e3: 0;
+1e4: 0;
+1e5: 0;
+1e6: 0;
+1e7: 0;
+1e8: 0;
+1e9: 0;
+1ea: 0;
+1eb: 0;
+1ec: 0;
+1ed: 0;
+1ee: 0;
+1ef: 0;
+1f0: 0;
+1f1: 0;
+1f2: 0;
+1f3: 0;
+1f4: 0;
+1f5: 0;
+1f6: 0;
+1f7: 0;
+1f8: 0;
+1f9: 0;
+1fa: 0;
+1fb: 0;
+1fc: 0;
+1fd: 0;
+1fe: 0;
+1ff: 0;
+END;
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_dma_param.svh b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_dma_param.svh
new file mode 100644
index 0000000..166ae44
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_dma_param.svh
@@ -0,0 +1,153 @@
+`ifndef DLA_DMA_PARAM_SVH
+`define DLA_DMA_PARAM_SVH
+ localparam string DEVICE = "A10";
+ localparam int C_CSR_AXI_ADDR_WIDTH = 11;
+ localparam int C_CSR_AXI_DATA_WIDTH = 32;
+ localparam int C_DDR_AXI_ADDR_WIDTH = 32;
+ localparam int C_DDR_AXI_BURST_WIDTH = 4;
+ localparam int C_DDR_AXI_DATA_WIDTH = 512;
+ localparam int C_DDR_AXI_THREAD_ID_WIDTH = 2;
+ localparam int CONFIG_DATA_BYTES = 4;
+ localparam int CONFIG_READER_DATA_BYTES = 8;
+ localparam int FILTER_READER_DATA_BYTES = 64;
+ localparam int FEATURE_READER_DATA_BYTES = 8;
+ localparam int FEATURE_WRITER_DATA_BYTES = 8;
+ localparam int CONFIG_NUM_MODULES = 11;
+ localparam int MODULE_ID_WIDTH = 8;
+ localparam int CONFIG_CHANNEL_WIDTH = 32;
+ localparam int CONFIG_CACHE_DEPTH = 256;
+ localparam int CONFIG_NETWORK_QUANTIZE_DEPTHS [255:0] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,512,64,32};
+ localparam bit CONFIG_NETWORK_CROSS_CLOCK [255:1] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1};
+ localparam bit CONFIG_NETWORK_CROSS_CLOCK_AXI [255:1] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+ localparam int CONFIG_NETWORK_FIFO_MIN_DEPTH [255:1] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256,256,256,256,256,256,256,256,256,256};
+ localparam int CONFIG_NETWORK_NUM_PIPELINE_STAGES [255:1] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1};
+ localparam int CONFIG_ID_PADDING = 0;
+ localparam int CONFIG_ID_FILTER_READER = 1;
+ localparam int CONFIG_ID_INPUT_FEEDER_MUX = 2;
+ localparam int CONFIG_ID_INPUT_FEEDER_WRITER = 3;
+ localparam int CONFIG_ID_INPUT_FEEDER_IN = 4;
+ localparam int CONFIG_ID_INPUT_FEEDER_READER = 5;
+ localparam int CONFIG_ID_INPUT_FEEDER_OUT = 6;
+ localparam int CONFIG_ID_FEATURE_WRITER = 7;
+ localparam int CONFIG_ID_FEATURE_READER = 8;
+ localparam int CONFIG_ID_XBAR = 9;
+ localparam int CONFIG_ID_ACTIVATION = 10;
+ localparam int CONFIG_ID_POOL = 11;
+ localparam bit ENABLE_DEBUG = 0;
+ localparam bit ENABLE_INPUT_STREAMING = 0;
+ localparam int AXI_ISTREAM_DATA_WIDTH = 128;
+ localparam int AXI_ISTREAM_FIFO_DEPTH = 32;
+ localparam bit ENABLE_ON_CHIP_PARAMETERS = 0;
+ localparam bit ENABLE_MIXED_PRECISION = 0;
+ localparam int KVEC_OVER_CVEC = 4;
+ localparam int SB_ADDR_WIDTH = 13;
+ localparam int STREAM_BUFFER_DEPTH = 5120;
+ localparam bit[927:0] PE_ARRAY_PARAM_BITS = 928'h000000010000000800000001000000020000000700000007000000050000000f000000050000000f00000004000000040000000200000001000000010000000000000001000000000000000400000001000000040000001000000005000000040000000000000000000000000000000000000000;
+ localparam int PE_ARRAY_EXIT_FIFO_DEPTH = 1024;
+ localparam int SCRATCHPAD_FILTER_DEPTH = 512;
+ localparam int SCRATCHPAD_BIAS_SCALE_DEPTH = 512;
+ localparam int SCRATCHPAD_NUM_FILTER_PORTS = 8;
+ localparam int SCRATCHPAD_NUM_BIAS_SCALE_PORTS = 16;
+ localparam int SCRATCHPAD_MEGABLOCK_WIDTH = 34;
+ localparam int SCRATCHPAD_NUM_FILTER_BLOCKS_PER_MEGABLOCK = 1;
+ localparam int SCRATCHPAD_NUM_BIAS_SCALE_BLOCKS_PER_MEGABLOCK = 2;
+ localparam int MAX_XBAR_INPUT_INTERFACES = 4;
+ localparam int MAX_XBAR_OUTPUT_INTERFACES = 4;
+ localparam int AUX_XBAR_INPUT_COUNTER_WIDTH = 24;
+ localparam int AUX_XBAR_OUTPUT_COUNTER_WIDTH = 24;
+ localparam bit ENABLE_ACTIVATION = 1;
+ localparam bit ENABLE_DEPTHWISE = 0;
+ localparam int XBAR_ID_DEPTHWISE = -1;
+ localparam int CONFIG_ID_DEPTHWISE = -1;
+ localparam bit ENABLE_DEPTHWISE_FILTER_BIAS = 0;
+ localparam int XBAR_ID_DEPTHWISE_FILTER_BIAS = -1;
+ localparam int CONFIG_ID_DEPTHWISE_FILTER_BIAS = -1;
+ localparam bit ENABLE_POOL = 1;
+ localparam bit ENABLE_SOFTMAX = 0;
+ localparam int XBAR_ID_SOFTMAX = -1;
+ localparam int CONFIG_ID_SOFTMAX = -1;
+ localparam int CONFIG_ID_OUTPUT_STREAMER = -1;
+ localparam int CONFIG_ID_OUTPUT_STREAMER_FLUSH = -1;
+ localparam int CONFIG_ID_WRITER_STREAMER_SEL = -1;
+ localparam int CONFIG_ID_LAYOUT_TRANSFORM = -1;
+ localparam int XBAR_ID_POOL = 2;
+ localparam int XBAR_ID_ACTIVATION = 1;
+ localparam int XBAR_ID_XBAR_OUT_PORT = 0;
+ localparam int XBAR_ID_PE_ARRAY = 0;
+ localparam int NUMBER_OF_KERNELS = 2;
+ localparam int AUX_MODULE_SELECT_ID_WIDTH = 4;
+ localparam bit XBAR_KERNEL_BYPASS_FEATURE_ENABLE = 0;
+ localparam bit AUX_KERNEL_BYPASSABLE [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0};
+ localparam int AUX_XBAR_MUX_OUTPUT_PIPELINE_STAGES [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0};
+ localparam int AUX_XBAR_NONSTALLABLE_OUTPUT_PIPELINE_STAGES [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0};
+ localparam int AUX_XBAR_OUTPUT_BP_FIFO_ENABLE [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0};
+ localparam int AUX_XBAR_OUTPUT_BP_FIFO_DEPTH [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0};
+ localparam int AUX_XBAR_OUTPUT_WIDTH = 64;
+ localparam int AUX_OUTPUT_DATA_WIDTHS [16:0] = '{0:64,1:64,2:64,3:64,4:64,5:64,6:64,7:64,8:64,9:64,10:64,11:64,12:64,13:64,14:64,15:64,16:64,default : 0};
+ localparam int AUX_INPUT_DATA_WIDTHS [16:0] = '{0:64,1:64,2:64,3:64,4:64,5:64,6:64,7:64,8:64,9:64,10:64,11:64,12:64,13:64,14:64,15:64,16:64,default : 0};
+ localparam int AUX_MAX_DATABUS_WIDTH = 64;
+ localparam int XBAR_KERNEL_CV_FEATURE_ENABLE = 1;
+ localparam int AUX_KERNEL_CONNECTIVITY_VECTOR [16:0] [16:0] = '{0: '{0:1,1:1,2:1,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},1: '{0:1,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},2: '{0:1,1:1,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},3: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},4: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},5: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},6: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},7: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},8: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},9: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},10: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},11: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},12: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},13: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},14: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},15: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},16: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0}};
+ localparam int ACTIVATION_K_VECTOR = 4;
+ localparam bit ACTIVATION_ENABLE_DSP_MULT = 0;
+ localparam bit ACTIVATION_ENABLE_DSP_CONV = 0;
+ localparam int ACTIVATION_GROUP_DELAY = 0;
+ localparam int ACTIVATION_TYPE = 1;
+ localparam int ACTIVATION_PARAM_CACHE_DEPTH = 3580;
+ localparam int POOL_K_VECTOR = 1;
+ localparam int POOL_GROUP_DELAY = 0;
+ localparam int POOL_TYPE = 0;
+ localparam int POOL_CONFIG_ID_WIDTH = 1;
+ localparam int POOL_MAX_WINDOW_HEIGHT = 3;
+ localparam int POOL_MAX_WINDOW_WIDTH = 3;
+ localparam int POOL_MAX_STRIDE_VERTICAL = 4;
+ localparam int POOL_MAX_STRIDE_HORIZONTAL = 4;
+ localparam int POOL_PIPELINE_REG_NUM = 1;
+ localparam int DEPTHWISE_K_VECTOR = 0;
+ localparam int DEPTHWISE_GROUP_DELAY = 0;
+ localparam int DEPTHWISE_TYPE = 0;
+ localparam int DEPTHWISE_CONFIG_ID_WIDTH = 1;
+ localparam int DEPTHWISE_MAX_WINDOW_HEIGHT = 3;
+ localparam int DEPTHWISE_MAX_WINDOW_WIDTH = 3;
+ localparam int DEPTHWISE_MAX_STRIDE_VERTICAL = 4;
+ localparam int DEPTHWISE_MAX_STRIDE_HORIZONTAL = 4;
+ localparam int DEPTHWISE_PIPELINE_REG_NUM = 1;
+ localparam int DEPTHWISE_MAX_DILATION_VERTICAL = 1;
+ localparam int DEPTHWISE_MAX_DILATION_HORIZONTAL = 1;
+ localparam int DETHWISE_VECTOR_FEATURE_WIDTH = 16;
+ localparam int DETHWISE_VECTOR_FILTER_WIDTH = 16;
+ localparam int DETHWISE_VECTOR_BIAS_WIDTH = 32;
+ localparam int DETHWISE_VECTOR_DOT_SIZE = 10;
+ localparam int SOFTMAX_K_VECTOR = 1;
+ localparam int SOFTMAX_GROUP_DELAY = 1;
+ localparam int SOFTMAX_CONFIG_ID_WIDTH = 8;
+ localparam int SOFTMAX_MAX_NUM_CHANNELS = 2048;
+ localparam int AUX_MAX_TILE_HEIGHT = 128;
+ localparam int AUX_MAX_TILE_WIDTH = 128;
+ localparam int AUX_MAX_TILE_CHANNELS = 14320;
+ localparam int LAYOUT_TRANSFORM_ENABLE = 0;
+ localparam int LAYOUT_TRANSFORM_MAX_FEATURE_CHANNELS = 3;
+ localparam int LAYOUT_TRANSFORM_MAX_FEATURE_HEIGHT = 28;
+ localparam int LAYOUT_TRANSFORM_MAX_FEATURE_WIDTH = 28;
+ localparam int LAYOUT_TRANSFORM_MAX_FEATURE_DEPTH = 1;
+ localparam int LAYOUT_TRANSFORM_MAX_STRIDE_WIDTH = 2;
+ localparam int LAYOUT_TRANSFORM_MAX_STRIDE_HEIGHT = 2;
+ localparam int LAYOUT_TRANSFORM_MAX_STRIDE_DEPTH = 1;
+ localparam int LAYOUT_TRANSFORM_MAX_PAD_FRONT = 1;
+ localparam int LAYOUT_TRANSFORM_MAX_PAD_LEFT = 2;
+ localparam int LAYOUT_TRANSFORM_MAX_PAD_TOP = 2;
+ localparam int LAYOUT_TRANSFORM_MAX_FILTER_HEIGHT = 2;
+ localparam int LAYOUT_TRANSFORM_MAX_FILTER_WIDTH = 2;
+ localparam int LAYOUT_TRANSFORM_MAX_FILTER_DEPTH = 1;
+ localparam int LAYOUT_TRANSFORM_MAX_DILATION_WIDTH = 2;
+ localparam int LAYOUT_TRANSFORM_MAX_DILATION_HEIGHT = 2;
+ localparam int LAYOUT_TRANSFORM_MAX_DILATION_DEPTH = 1;
+ localparam int LAYOUT_TRANSFORM_READER_BYTES = 16;
+ localparam int LAYOUT_TRANSFORM_DO_U8_CONV = 0;
+ localparam int ENABLE_OUTPUT_STREAMER = 0;
+ localparam int AXI_OSTREAM_DATA_WIDTH = 128;
+ localparam int AXI_OSTREAM_ID_WIDTH = 8;
+ localparam int AXI_OSTREAM_DEST_WIDTH = 8;
+ localparam int AXI_OSTREAM_FIFO_DEPTH = 512;
+ localparam int DISABLE_DDR = 0;
+`endif // DLA_DMA_PARAM_SVH
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_interface_profiling_counters.mif b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_interface_profiling_counters.mif
new file mode 100644
index 0000000..44af0e0
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_interface_profiling_counters.mif
@@ -0,0 +1,2055 @@
+DEPTH = 2048;
+WIDTH = 32;
+ADDRESS_RADIX = UNS;
+DATA_RADIX = UNS;
+CONTENT
+BEGIN
+0 : 12582916;
+1 : 1701987935;
+2 : 6650469;
+3 : 8388608;
+4 : 541150532;
+5 : 1126199156;
+6 : 1768320623;
+7 : 1635131495;
+8 : 6580588;
+9 : 8388612;
+10 : 541150532;
+11 : 1126199156;
+12 : 1768320623;
+13 : 1701978215;
+14 : 7955553;
+15 : 8388616;
+16 : 541150532;
+17 : 1126199156;
+18 : 1768320623;
+19 : 1920213095;
+20 : 1634954849;
+21 : 1869182051;
+22 : 29550;
+23 : 8388620;
+24 : 541150532;
+25 : 1126199156;
+26 : 1768320623;
+27 : 1920213095;
+28 : 1634954849;
+29 : 1869182051;
+30 : 29550;
+31 : 8388624;
+32 : 541150532;
+33 : 1126199156;
+34 : 1768320623;
+35 : 1633820775;
+36 : 1919970147;
+37 : 1970500453;
+38 : 25970;
+39 : 8388628;
+40 : 541150532;
+41 : 1126199156;
+42 : 1768320623;
+43 : 1633820775;
+44 : 1919970147;
+45 : 1970500453;
+46 : 25970;
+47 : 8388632;
+48 : 541150532;
+49 : 1126199156;
+50 : 1768320623;
+51 : 1953701991;
+52 : 1635152481;
+53 : 1852795252;
+54 : 0;
+55 : 8388636;
+56 : 541150532;
+57 : 1126199156;
+58 : 1768320623;
+59 : 1953701991;
+60 : 1635152481;
+61 : 1852795252;
+62 : 0;
+63 : 8388640;
+64 : 541150532;
+65 : 1176530804;
+66 : 1702128745;
+67 : 1635131506;
+68 : 6580588;
+69 : 8388644;
+70 : 541150532;
+71 : 1176530804;
+72 : 1702128745;
+73 : 1701978226;
+74 : 7955553;
+75 : 8388648;
+76 : 541150532;
+77 : 1176530804;
+78 : 1702128745;
+79 : 1920213106;
+80 : 1634954849;
+81 : 1869182051;
+82 : 29550;
+83 : 8388652;
+84 : 541150532;
+85 : 1176530804;
+86 : 1702128745;
+87 : 1920213106;
+88 : 1634954849;
+89 : 1869182051;
+90 : 29550;
+91 : 8388656;
+92 : 541150532;
+93 : 1176530804;
+94 : 1702128745;
+95 : 1633820786;
+96 : 1919970147;
+97 : 1970500453;
+98 : 25970;
+99 : 8388660;
+100 : 541150532;
+101 : 1176530804;
+102 : 1702128745;
+103 : 1633820786;
+104 : 1919970147;
+105 : 1970500453;
+106 : 25970;
+107 : 8388664;
+108 : 541150532;
+109 : 1176530804;
+110 : 1702128745;
+111 : 1953702002;
+112 : 1635152481;
+113 : 1852795252;
+114 : 0;
+115 : 8388668;
+116 : 541150532;
+117 : 1176530804;
+118 : 1702128745;
+119 : 1953702002;
+120 : 1635152481;
+121 : 1852795252;
+122 : 0;
+123 : 8388672;
+124 : 541150532;
+125 : 1226862452;
+126 : 1953853550;
+127 : 1701144096;
+128 : 544367972;
+129 : 1768710518;
+130 : 100;
+131 : 8388676;
+132 : 541150532;
+133 : 1226862452;
+134 : 1953853550;
+135 : 1701144096;
+136 : 544367972;
+137 : 1684104562;
+138 : 121;
+139 : 8388680;
+140 : 541150532;
+141 : 1226862452;
+142 : 1953853550;
+143 : 1701144096;
+144 : 544367972;
+145 : 1851880052;
+146 : 1952670067;
+147 : 1936617321;
+148 : 0;
+149 : 8388684;
+150 : 541150532;
+151 : 1226862452;
+152 : 1953853550;
+153 : 1701144096;
+154 : 544367972;
+155 : 1851880052;
+156 : 1952670067;
+157 : 1936617321;
+158 : 0;
+159 : 8388688;
+160 : 541150532;
+161 : 1226862452;
+162 : 1953853550;
+163 : 1701144096;
+164 : 544367972;
+165 : 1801675106;
+166 : 1936028272;
+167 : 1701999987;
+168 : 0;
+169 : 8388692;
+170 : 541150532;
+171 : 1226862452;
+172 : 1953853550;
+173 : 1701144096;
+174 : 544367972;
+175 : 1801675106;
+176 : 1936028272;
+177 : 1701999987;
+178 : 0;
+179 : 8388696;
+180 : 541150532;
+181 : 1226862452;
+182 : 1953853550;
+183 : 1701144096;
+184 : 544367972;
+185 : 1918989427;
+186 : 1769234806;
+187 : 28271;
+188 : 8388700;
+189 : 541150532;
+190 : 1226862452;
+191 : 1953853550;
+192 : 1701144096;
+193 : 544367972;
+194 : 1918989427;
+195 : 1769234806;
+196 : 28271;
+197 : 8388704;
+198 : 1718513475;
+199 : 1948280681;
+200 : 1850286191;
+201 : 544503152;
+202 : 1684366694;
+203 : 1763734117;
+204 : 1635131502;
+205 : 6580588;
+206 : 8388708;
+207 : 1718513475;
+208 : 1948280681;
+209 : 1850286191;
+210 : 544503152;
+211 : 1684366694;
+212 : 1763734117;
+213 : 1701978222;
+214 : 7955553;
+215 : 8388712;
+216 : 1718513475;
+217 : 1948280681;
+218 : 1850286191;
+219 : 544503152;
+220 : 1684366694;
+221 : 1763734117;
+222 : 1920213102;
+223 : 1634954849;
+224 : 1869182051;
+225 : 29550;
+226 : 8388716;
+227 : 1718513475;
+228 : 1948280681;
+229 : 1850286191;
+230 : 544503152;
+231 : 1684366694;
+232 : 1763734117;
+233 : 1920213102;
+234 : 1634954849;
+235 : 1869182051;
+236 : 29550;
+237 : 8388720;
+238 : 1718513475;
+239 : 1948280681;
+240 : 1850286191;
+241 : 544503152;
+242 : 1684366694;
+243 : 1763734117;
+244 : 1633820782;
+245 : 1919970147;
+246 : 1970500453;
+247 : 25970;
+248 : 8388724;
+249 : 1718513475;
+250 : 1948280681;
+251 : 1850286191;
+252 : 544503152;
+253 : 1684366694;
+254 : 1763734117;
+255 : 1633820782;
+256 : 1919970147;
+257 : 1970500453;
+258 : 25970;
+259 : 8388728;
+260 : 1718513475;
+261 : 1948280681;
+262 : 1850286191;
+263 : 544503152;
+264 : 1684366694;
+265 : 1763734117;
+266 : 1953701998;
+267 : 1635152481;
+268 : 1852795252;
+269 : 0;
+270 : 8388732;
+271 : 1718513475;
+272 : 1948280681;
+273 : 1850286191;
+274 : 544503152;
+275 : 1684366694;
+276 : 1763734117;
+277 : 1953701998;
+278 : 1635152481;
+279 : 1852795252;
+280 : 0;
+281 : 8388736;
+282 : 1718513475;
+283 : 1948280681;
+284 : 1850286191;
+285 : 544503152;
+286 : 1684366694;
+287 : 1864397413;
+288 : 1981838453;
+289 : 1684630625;
+290 : 0;
+291 : 8388740;
+292 : 1718513475;
+293 : 1948280681;
+294 : 1850286191;
+295 : 544503152;
+296 : 1684366694;
+297 : 1864397413;
+298 : 1914729589;
+299 : 2036621669;
+300 : 0;
+301 : 8388744;
+302 : 1718513475;
+303 : 1948280681;
+304 : 1850286191;
+305 : 544503152;
+306 : 1684366694;
+307 : 1864397413;
+308 : 1948284021;
+309 : 1936613746;
+310 : 1769235297;
+311 : 7564911;
+312 : 8388748;
+313 : 1718513475;
+314 : 1948280681;
+315 : 1850286191;
+316 : 544503152;
+317 : 1684366694;
+318 : 1864397413;
+319 : 1948284021;
+320 : 1936613746;
+321 : 1769235297;
+322 : 7564911;
+323 : 8388752;
+324 : 1718513475;
+325 : 1948280681;
+326 : 1850286191;
+327 : 544503152;
+328 : 1684366694;
+329 : 1864397413;
+330 : 1646294133;
+331 : 1886085985;
+332 : 1936942450;
+333 : 6648437;
+334 : 8388756;
+335 : 1718513475;
+336 : 1948280681;
+337 : 1850286191;
+338 : 544503152;
+339 : 1684366694;
+340 : 1864397413;
+341 : 1646294133;
+342 : 1886085985;
+343 : 1936942450;
+344 : 6648437;
+345 : 8388760;
+346 : 1718513475;
+347 : 1948280681;
+348 : 1850286191;
+349 : 544503152;
+350 : 1684366694;
+351 : 1864397413;
+352 : 1931506805;
+353 : 1987207540;
+354 : 1869182049;
+355 : 110;
+356 : 8388764;
+357 : 1718513475;
+358 : 1948280681;
+359 : 1850286191;
+360 : 544503152;
+361 : 1684366694;
+362 : 1864397413;
+363 : 1931506805;
+364 : 1987207540;
+365 : 1869182049;
+366 : 110;
+367 : 8388768;
+368 : 1718513475;
+369 : 1948280681;
+370 : 1649942639;
+371 : 1981837921;
+372 : 1684630625;
+373 : 0;
+374 : 8388772;
+375 : 1718513475;
+376 : 1948280681;
+377 : 1649942639;
+378 : 1914729057;
+379 : 2036621669;
+380 : 0;
+381 : 8388776;
+382 : 1718513475;
+383 : 1948280681;
+384 : 1649942639;
+385 : 1948283489;
+386 : 1936613746;
+387 : 1769235297;
+388 : 7564911;
+389 : 8388780;
+390 : 1718513475;
+391 : 1948280681;
+392 : 1649942639;
+393 : 1948283489;
+394 : 1936613746;
+395 : 1769235297;
+396 : 7564911;
+397 : 8388784;
+398 : 1718513475;
+399 : 1948280681;
+400 : 1649942639;
+401 : 1646293601;
+402 : 1886085985;
+403 : 1936942450;
+404 : 6648437;
+405 : 8388788;
+406 : 1718513475;
+407 : 1948280681;
+408 : 1649942639;
+409 : 1646293601;
+410 : 1886085985;
+411 : 1936942450;
+412 : 6648437;
+413 : 8388792;
+414 : 1718513475;
+415 : 1948280681;
+416 : 1649942639;
+417 : 1931506273;
+418 : 1987207540;
+419 : 1869182049;
+420 : 110;
+421 : 8388796;
+422 : 1718513475;
+423 : 1948280681;
+424 : 1649942639;
+425 : 1931506273;
+426 : 1987207540;
+427 : 1869182049;
+428 : 110;
+429 : 8388800;
+430 : 1718513475;
+431 : 1948280681;
+432 : 1665212527;
+433 : 1635150196;
+434 : 1852795252;
+435 : 1818326560;
+436 : 25705;
+437 : 8388804;
+438 : 1718513475;
+439 : 1948280681;
+440 : 1665212527;
+441 : 1635150196;
+442 : 1852795252;
+443 : 1634038304;
+444 : 31076;
+445 : 8388808;
+446 : 1718513475;
+447 : 1948280681;
+448 : 1665212527;
+449 : 1635150196;
+450 : 1852795252;
+451 : 1634890784;
+452 : 1667330926;
+453 : 1852795252;
+454 : 115;
+455 : 8388812;
+456 : 1718513475;
+457 : 1948280681;
+458 : 1665212527;
+459 : 1635150196;
+460 : 1852795252;
+461 : 1634890784;
+462 : 1667330926;
+463 : 1852795252;
+464 : 115;
+465 : 8388816;
+466 : 1718513475;
+467 : 1948280681;
+468 : 1665212527;
+469 : 1635150196;
+470 : 1852795252;
+471 : 1667326496;
+472 : 1701998699;
+473 : 1920299891;
+474 : 101;
+475 : 8388820;
+476 : 1718513475;
+477 : 1948280681;
+478 : 1665212527;
+479 : 1635150196;
+480 : 1852795252;
+481 : 1667326496;
+482 : 1701998699;
+483 : 1920299891;
+484 : 101;
+485 : 8388824;
+486 : 1718513475;
+487 : 1948280681;
+488 : 1665212527;
+489 : 1635150196;
+490 : 1852795252;
+491 : 1635021600;
+492 : 1952544370;
+493 : 7237481;
+494 : 8388828;
+495 : 1718513475;
+496 : 1948280681;
+497 : 1665212527;
+498 : 1635150196;
+499 : 1852795252;
+500 : 1635021600;
+501 : 1952544370;
+502 : 7237481;
+503 : 8388832;
+504 : 1718513475;
+505 : 1948280681;
+506 : 1867522159;
+507 : 1981836399;
+508 : 1684630625;
+509 : 0;
+510 : 8388836;
+511 : 1718513475;
+512 : 1948280681;
+513 : 1867522159;
+514 : 1914727535;
+515 : 2036621669;
+516 : 0;
+517 : 8388840;
+518 : 1718513475;
+519 : 1948280681;
+520 : 1867522159;
+521 : 1948281967;
+522 : 1936613746;
+523 : 1769235297;
+524 : 7564911;
+525 : 8388844;
+526 : 1718513475;
+527 : 1948280681;
+528 : 1867522159;
+529 : 1948281967;
+530 : 1936613746;
+531 : 1769235297;
+532 : 7564911;
+533 : 8388848;
+534 : 1718513475;
+535 : 1948280681;
+536 : 1867522159;
+537 : 1646292079;
+538 : 1886085985;
+539 : 1936942450;
+540 : 6648437;
+541 : 8388852;
+542 : 1718513475;
+543 : 1948280681;
+544 : 1867522159;
+545 : 1646292079;
+546 : 1886085985;
+547 : 1936942450;
+548 : 6648437;
+549 : 8388856;
+550 : 1718513475;
+551 : 1948280681;
+552 : 1867522159;
+553 : 1931504751;
+554 : 1987207540;
+555 : 1869182049;
+556 : 110;
+557 : 8388860;
+558 : 1718513475;
+559 : 1948280681;
+560 : 1867522159;
+561 : 1931504751;
+562 : 1987207540;
+563 : 1869182049;
+564 : 110;
+565 : 8388864;
+566 : 1718513475;
+567 : 1948280681;
+568 : 1867718767;
+569 : 1634563174;
+570 : 1635131512;
+571 : 6580588;
+572 : 8388868;
+573 : 1718513475;
+574 : 1948280681;
+575 : 1867718767;
+576 : 1634563174;
+577 : 1701978232;
+578 : 7955553;
+579 : 8388872;
+580 : 1718513475;
+581 : 1948280681;
+582 : 1867718767;
+583 : 1634563174;
+584 : 1920213112;
+585 : 1634954849;
+586 : 1869182051;
+587 : 29550;
+588 : 8388876;
+589 : 1718513475;
+590 : 1948280681;
+591 : 1867718767;
+592 : 1634563174;
+593 : 1920213112;
+594 : 1634954849;
+595 : 1869182051;
+596 : 29550;
+597 : 8388880;
+598 : 1718513475;
+599 : 1948280681;
+600 : 1867718767;
+601 : 1634563174;
+602 : 1633820792;
+603 : 1919970147;
+604 : 1970500453;
+605 : 25970;
+606 : 8388884;
+607 : 1718513475;
+608 : 1948280681;
+609 : 1867718767;
+610 : 1634563174;
+611 : 1633820792;
+612 : 1919970147;
+613 : 1970500453;
+614 : 25970;
+615 : 8388888;
+616 : 1718513475;
+617 : 1948280681;
+618 : 1867718767;
+619 : 1634563174;
+620 : 1953702008;
+621 : 1635152481;
+622 : 1852795252;
+623 : 0;
+624 : 8388892;
+625 : 1718513475;
+626 : 1948280681;
+627 : 1867718767;
+628 : 1634563174;
+629 : 1953702008;
+630 : 1635152481;
+631 : 1852795252;
+632 : 0;
+633 : 8388896;
+634 : 1970302537;
+635 : 1701191796;
+636 : 1919247461;
+637 : 544175136;
+638 : 1970365779;
+639 : 1701015141;
+640 : 1635131506;
+641 : 6580588;
+642 : 8388900;
+643 : 1970302537;
+644 : 1701191796;
+645 : 1919247461;
+646 : 544175136;
+647 : 1970365779;
+648 : 1701015141;
+649 : 1701978226;
+650 : 7955553;
+651 : 8388904;
+652 : 1970302537;
+653 : 1701191796;
+654 : 1919247461;
+655 : 544175136;
+656 : 1970365779;
+657 : 1701015141;
+658 : 1920213106;
+659 : 1634954849;
+660 : 1869182051;
+661 : 29550;
+662 : 8388908;
+663 : 1970302537;
+664 : 1701191796;
+665 : 1919247461;
+666 : 544175136;
+667 : 1970365779;
+668 : 1701015141;
+669 : 1920213106;
+670 : 1634954849;
+671 : 1869182051;
+672 : 29550;
+673 : 8388912;
+674 : 1970302537;
+675 : 1701191796;
+676 : 1919247461;
+677 : 544175136;
+678 : 1970365779;
+679 : 1701015141;
+680 : 1633820786;
+681 : 1919970147;
+682 : 1970500453;
+683 : 25970;
+684 : 8388916;
+685 : 1970302537;
+686 : 1701191796;
+687 : 1919247461;
+688 : 544175136;
+689 : 1970365779;
+690 : 1701015141;
+691 : 1633820786;
+692 : 1919970147;
+693 : 1970500453;
+694 : 25970;
+695 : 8388920;
+696 : 1970302537;
+697 : 1701191796;
+698 : 1919247461;
+699 : 544175136;
+700 : 1970365779;
+701 : 1701015141;
+702 : 1953702002;
+703 : 1635152481;
+704 : 1852795252;
+705 : 0;
+706 : 8388924;
+707 : 1970302537;
+708 : 1701191796;
+709 : 1919247461;
+710 : 544175136;
+711 : 1970365779;
+712 : 1701015141;
+713 : 1953702002;
+714 : 1635152481;
+715 : 1852795252;
+716 : 0;
+717 : 8388928;
+718 : 1629504848;
+719 : 2036429426;
+720 : 544175136;
+721 : 1918984792;
+722 : 1818326560;
+723 : 25705;
+724 : 8388932;
+725 : 1629504848;
+726 : 2036429426;
+727 : 544175136;
+728 : 1918984792;
+729 : 1634038304;
+730 : 31076;
+731 : 8388936;
+732 : 1629504848;
+733 : 2036429426;
+734 : 544175136;
+735 : 1918984792;
+736 : 1634890784;
+737 : 1667330926;
+738 : 1852795252;
+739 : 115;
+740 : 8388940;
+741 : 1629504848;
+742 : 2036429426;
+743 : 544175136;
+744 : 1918984792;
+745 : 1634890784;
+746 : 1667330926;
+747 : 1852795252;
+748 : 115;
+749 : 8388944;
+750 : 1629504848;
+751 : 2036429426;
+752 : 544175136;
+753 : 1918984792;
+754 : 1667326496;
+755 : 1701998699;
+756 : 1920299891;
+757 : 101;
+758 : 8388948;
+759 : 1629504848;
+760 : 2036429426;
+761 : 544175136;
+762 : 1918984792;
+763 : 1667326496;
+764 : 1701998699;
+765 : 1920299891;
+766 : 101;
+767 : 8388952;
+768 : 1629504848;
+769 : 2036429426;
+770 : 544175136;
+771 : 1918984792;
+772 : 1635021600;
+773 : 1952544370;
+774 : 7237481;
+775 : 8388956;
+776 : 1629504848;
+777 : 2036429426;
+778 : 544175136;
+779 : 1918984792;
+780 : 1635021600;
+781 : 1952544370;
+782 : 7237481;
+783 : 8388960;
+784 : 1918984792;
+785 : 544175136;
+786 : 1769235265;
+787 : 1769234806;
+788 : 1981836911;
+789 : 1684630625;
+790 : 0;
+791 : 8388964;
+792 : 1918984792;
+793 : 544175136;
+794 : 1769235265;
+795 : 1769234806;
+796 : 1914728047;
+797 : 2036621669;
+798 : 0;
+799 : 8388968;
+800 : 1918984792;
+801 : 544175136;
+802 : 1769235265;
+803 : 1769234806;
+804 : 1948282479;
+805 : 1936613746;
+806 : 1769235297;
+807 : 7564911;
+808 : 8388972;
+809 : 1918984792;
+810 : 544175136;
+811 : 1769235265;
+812 : 1769234806;
+813 : 1948282479;
+814 : 1936613746;
+815 : 1769235297;
+816 : 7564911;
+817 : 8388976;
+818 : 1918984792;
+819 : 544175136;
+820 : 1769235265;
+821 : 1769234806;
+822 : 1646292591;
+823 : 1886085985;
+824 : 1936942450;
+825 : 6648437;
+826 : 8388980;
+827 : 1918984792;
+828 : 544175136;
+829 : 1769235265;
+830 : 1769234806;
+831 : 1646292591;
+832 : 1886085985;
+833 : 1936942450;
+834 : 6648437;
+835 : 8388984;
+836 : 1918984792;
+837 : 544175136;
+838 : 1769235265;
+839 : 1769234806;
+840 : 1931505263;
+841 : 1987207540;
+842 : 1869182049;
+843 : 110;
+844 : 8388988;
+845 : 1918984792;
+846 : 544175136;
+847 : 1769235265;
+848 : 1769234806;
+849 : 1931505263;
+850 : 1987207540;
+851 : 1869182049;
+852 : 110;
+853 : 8388992;
+854 : 1769235265;
+855 : 1769234806;
+856 : 1948282479;
+857 : 1649942639;
+858 : 1981837921;
+859 : 1684630625;
+860 : 0;
+861 : 8388996;
+862 : 1769235265;
+863 : 1769234806;
+864 : 1948282479;
+865 : 1649942639;
+866 : 1914729057;
+867 : 2036621669;
+868 : 0;
+869 : 8389000;
+870 : 1769235265;
+871 : 1769234806;
+872 : 1948282479;
+873 : 1649942639;
+874 : 1948283489;
+875 : 1936613746;
+876 : 1769235297;
+877 : 7564911;
+878 : 8389004;
+879 : 1769235265;
+880 : 1769234806;
+881 : 1948282479;
+882 : 1649942639;
+883 : 1948283489;
+884 : 1936613746;
+885 : 1769235297;
+886 : 7564911;
+887 : 8389008;
+888 : 1769235265;
+889 : 1769234806;
+890 : 1948282479;
+891 : 1649942639;
+892 : 1646293601;
+893 : 1886085985;
+894 : 1936942450;
+895 : 6648437;
+896 : 8389012;
+897 : 1769235265;
+898 : 1769234806;
+899 : 1948282479;
+900 : 1649942639;
+901 : 1646293601;
+902 : 1886085985;
+903 : 1936942450;
+904 : 6648437;
+905 : 8389016;
+906 : 1769235265;
+907 : 1769234806;
+908 : 1948282479;
+909 : 1649942639;
+910 : 1931506273;
+911 : 1987207540;
+912 : 1869182049;
+913 : 110;
+914 : 8389020;
+915 : 1769235265;
+916 : 1769234806;
+917 : 1948282479;
+918 : 1649942639;
+919 : 1931506273;
+920 : 1987207540;
+921 : 1869182049;
+922 : 110;
+923 : 8389024;
+924 : 1918984792;
+925 : 544175136;
+926 : 1819242320;
+927 : 1818326560;
+928 : 25705;
+929 : 8389028;
+930 : 1918984792;
+931 : 544175136;
+932 : 1819242320;
+933 : 1634038304;
+934 : 31076;
+935 : 8389032;
+936 : 1918984792;
+937 : 544175136;
+938 : 1819242320;
+939 : 1634890784;
+940 : 1667330926;
+941 : 1852795252;
+942 : 115;
+943 : 8389036;
+944 : 1918984792;
+945 : 544175136;
+946 : 1819242320;
+947 : 1634890784;
+948 : 1667330926;
+949 : 1852795252;
+950 : 115;
+951 : 8389040;
+952 : 1918984792;
+953 : 544175136;
+954 : 1819242320;
+955 : 1667326496;
+956 : 1701998699;
+957 : 1920299891;
+958 : 101;
+959 : 8389044;
+960 : 1918984792;
+961 : 544175136;
+962 : 1819242320;
+963 : 1667326496;
+964 : 1701998699;
+965 : 1920299891;
+966 : 101;
+967 : 8389048;
+968 : 1918984792;
+969 : 544175136;
+970 : 1819242320;
+971 : 1635021600;
+972 : 1952544370;
+973 : 7237481;
+974 : 8389052;
+975 : 1918984792;
+976 : 544175136;
+977 : 1819242320;
+978 : 1635021600;
+979 : 1952544370;
+980 : 7237481;
+981 : 8389056;
+982 : 1819242320;
+983 : 544175136;
+984 : 1918984792;
+985 : 1818326560;
+986 : 25705;
+987 : 8389060;
+988 : 1819242320;
+989 : 544175136;
+990 : 1918984792;
+991 : 1634038304;
+992 : 31076;
+993 : 8389064;
+994 : 1819242320;
+995 : 544175136;
+996 : 1918984792;
+997 : 1634890784;
+998 : 1667330926;
+999 : 1852795252;
+1000 : 115;
+1001 : 8389068;
+1002 : 1819242320;
+1003 : 544175136;
+1004 : 1918984792;
+1005 : 1634890784;
+1006 : 1667330926;
+1007 : 1852795252;
+1008 : 115;
+1009 : 8389072;
+1010 : 1819242320;
+1011 : 544175136;
+1012 : 1918984792;
+1013 : 1667326496;
+1014 : 1701998699;
+1015 : 1920299891;
+1016 : 101;
+1017 : 8389076;
+1018 : 1819242320;
+1019 : 544175136;
+1020 : 1918984792;
+1021 : 1667326496;
+1022 : 1701998699;
+1023 : 1920299891;
+1024 : 101;
+1025 : 8389080;
+1026 : 1819242320;
+1027 : 544175136;
+1028 : 1918984792;
+1029 : 1635021600;
+1030 : 1952544370;
+1031 : 7237481;
+1032 : 8389084;
+1033 : 1819242320;
+1034 : 544175136;
+1035 : 1918984792;
+1036 : 1635021600;
+1037 : 1952544370;
+1038 : 7237481;
+1039 : 8389088;
+1040 : 1918984792;
+1041 : 544175136;
+1042 : 1952870227;
+1043 : 544760173;
+1044 : 1768710518;
+1045 : 100;
+1046 : 8389092;
+1047 : 1918984792;
+1048 : 544175136;
+1049 : 1952870227;
+1050 : 544760173;
+1051 : 1684104562;
+1052 : 121;
+1053 : 8389096;
+1054 : 1918984792;
+1055 : 544175136;
+1056 : 1952870227;
+1057 : 544760173;
+1058 : 1851880052;
+1059 : 1952670067;
+1060 : 1936617321;
+1061 : 0;
+1062 : 8389100;
+1063 : 1918984792;
+1064 : 544175136;
+1065 : 1952870227;
+1066 : 544760173;
+1067 : 1851880052;
+1068 : 1952670067;
+1069 : 1936617321;
+1070 : 0;
+1071 : 8389104;
+1072 : 1918984792;
+1073 : 544175136;
+1074 : 1952870227;
+1075 : 544760173;
+1076 : 1801675106;
+1077 : 1936028272;
+1078 : 1701999987;
+1079 : 0;
+1080 : 8389108;
+1081 : 1918984792;
+1082 : 544175136;
+1083 : 1952870227;
+1084 : 544760173;
+1085 : 1801675106;
+1086 : 1936028272;
+1087 : 1701999987;
+1088 : 0;
+1089 : 8389112;
+1090 : 1918984792;
+1091 : 544175136;
+1092 : 1952870227;
+1093 : 544760173;
+1094 : 1918989427;
+1095 : 1769234806;
+1096 : 28271;
+1097 : 8389116;
+1098 : 1918984792;
+1099 : 544175136;
+1100 : 1952870227;
+1101 : 544760173;
+1102 : 1918989427;
+1103 : 1769234806;
+1104 : 28271;
+1105 : 8389120;
+1106 : 1952870227;
+1107 : 544760173;
+1108 : 1478520692;
+1109 : 544366946;
+1110 : 1768710518;
+1111 : 100;
+1112 : 8389124;
+1113 : 1952870227;
+1114 : 544760173;
+1115 : 1478520692;
+1116 : 544366946;
+1117 : 1684104562;
+1118 : 121;
+1119 : 8389128;
+1120 : 1952870227;
+1121 : 544760173;
+1122 : 1478520692;
+1123 : 544366946;
+1124 : 1851880052;
+1125 : 1952670067;
+1126 : 1936617321;
+1127 : 0;
+1128 : 8389132;
+1129 : 1952870227;
+1130 : 544760173;
+1131 : 1478520692;
+1132 : 544366946;
+1133 : 1851880052;
+1134 : 1952670067;
+1135 : 1936617321;
+1136 : 0;
+1137 : 8389136;
+1138 : 1952870227;
+1139 : 544760173;
+1140 : 1478520692;
+1141 : 544366946;
+1142 : 1801675106;
+1143 : 1936028272;
+1144 : 1701999987;
+1145 : 0;
+1146 : 8389140;
+1147 : 1952870227;
+1148 : 544760173;
+1149 : 1478520692;
+1150 : 544366946;
+1151 : 1801675106;
+1152 : 1936028272;
+1153 : 1701999987;
+1154 : 0;
+1155 : 8389144;
+1156 : 1952870227;
+1157 : 544760173;
+1158 : 1478520692;
+1159 : 544366946;
+1160 : 1918989427;
+1161 : 1769234806;
+1162 : 28271;
+1163 : 8389148;
+1164 : 1952870227;
+1165 : 544760173;
+1166 : 1478520692;
+1167 : 544366946;
+1168 : 1918989427;
+1169 : 1769234806;
+1170 : 28271;
+1171 : 8389152;
+1172 : 1918984792;
+1173 : 544175136;
+1174 : 1970302537;
+1175 : 1701191796;
+1176 : 1919247461;
+1177 : 1818326560;
+1178 : 25705;
+1179 : 8389156;
+1180 : 1918984792;
+1181 : 544175136;
+1182 : 1970302537;
+1183 : 1701191796;
+1184 : 1919247461;
+1185 : 1634038304;
+1186 : 31076;
+1187 : 8389160;
+1188 : 1918984792;
+1189 : 544175136;
+1190 : 1970302537;
+1191 : 1701191796;
+1192 : 1919247461;
+1193 : 1634890784;
+1194 : 1667330926;
+1195 : 1852795252;
+1196 : 115;
+1197 : 8389164;
+1198 : 1918984792;
+1199 : 544175136;
+1200 : 1970302537;
+1201 : 1701191796;
+1202 : 1919247461;
+1203 : 1634890784;
+1204 : 1667330926;
+1205 : 1852795252;
+1206 : 115;
+1207 : 8389168;
+1208 : 1918984792;
+1209 : 544175136;
+1210 : 1970302537;
+1211 : 1701191796;
+1212 : 1919247461;
+1213 : 1667326496;
+1214 : 1701998699;
+1215 : 1920299891;
+1216 : 101;
+1217 : 8389172;
+1218 : 1918984792;
+1219 : 544175136;
+1220 : 1970302537;
+1221 : 1701191796;
+1222 : 1919247461;
+1223 : 1667326496;
+1224 : 1701998699;
+1225 : 1920299891;
+1226 : 101;
+1227 : 8389176;
+1228 : 1918984792;
+1229 : 544175136;
+1230 : 1970302537;
+1231 : 1701191796;
+1232 : 1919247461;
+1233 : 1635021600;
+1234 : 1952544370;
+1235 : 7237481;
+1236 : 8389180;
+1237 : 1918984792;
+1238 : 544175136;
+1239 : 1970302537;
+1240 : 1701191796;
+1241 : 1919247461;
+1242 : 1635021600;
+1243 : 1952544370;
+1244 : 7237481;
+1245 : 8389184;
+1246 : 1918984792;
+1247 : 544175136;
+1248 : 541150532;
+1249 : 1768710518;
+1250 : 100;
+1251 : 8389188;
+1252 : 1918984792;
+1253 : 544175136;
+1254 : 541150532;
+1255 : 1684104562;
+1256 : 121;
+1257 : 8389192;
+1258 : 1918984792;
+1259 : 544175136;
+1260 : 541150532;
+1261 : 1851880052;
+1262 : 1952670067;
+1263 : 1936617321;
+1264 : 0;
+1265 : 8389196;
+1266 : 1918984792;
+1267 : 544175136;
+1268 : 541150532;
+1269 : 1851880052;
+1270 : 1952670067;
+1271 : 1936617321;
+1272 : 0;
+1273 : 8389200;
+1274 : 1918984792;
+1275 : 544175136;
+1276 : 541150532;
+1277 : 1801675106;
+1278 : 1936028272;
+1279 : 1701999987;
+1280 : 0;
+1281 : 8389204;
+1282 : 1918984792;
+1283 : 544175136;
+1284 : 541150532;
+1285 : 1801675106;
+1286 : 1936028272;
+1287 : 1701999987;
+1288 : 0;
+1289 : 8389208;
+1290 : 1918984792;
+1291 : 544175136;
+1292 : 541150532;
+1293 : 1918989427;
+1294 : 1769234806;
+1295 : 28271;
+1296 : 8389212;
+1297 : 1918984792;
+1298 : 544175136;
+1299 : 541150532;
+1300 : 1918989427;
+1301 : 1769234806;
+1302 : 28271;
+1303 : 12582912;
+1304 : 1718506847;
+1305 : 2053465458;
+1306 : 101;
+1307 : 0;
+1308 : 0;
+1309 : 0;
+1310 : 0;
+1311 : 0;
+1312 : 0;
+1313 : 0;
+1314 : 0;
+1315 : 0;
+1316 : 0;
+1317 : 0;
+1318 : 0;
+1319 : 0;
+1320 : 0;
+1321 : 0;
+1322 : 0;
+1323 : 0;
+1324 : 0;
+1325 : 0;
+1326 : 0;
+1327 : 0;
+1328 : 0;
+1329 : 0;
+1330 : 0;
+1331 : 0;
+1332 : 0;
+1333 : 0;
+1334 : 0;
+1335 : 0;
+1336 : 0;
+1337 : 0;
+1338 : 0;
+1339 : 0;
+1340 : 0;
+1341 : 0;
+1342 : 0;
+1343 : 0;
+1344 : 0;
+1345 : 0;
+1346 : 0;
+1347 : 0;
+1348 : 0;
+1349 : 0;
+1350 : 0;
+1351 : 0;
+1352 : 0;
+1353 : 0;
+1354 : 0;
+1355 : 0;
+1356 : 0;
+1357 : 0;
+1358 : 0;
+1359 : 0;
+1360 : 0;
+1361 : 0;
+1362 : 0;
+1363 : 0;
+1364 : 0;
+1365 : 0;
+1366 : 0;
+1367 : 0;
+1368 : 0;
+1369 : 0;
+1370 : 0;
+1371 : 0;
+1372 : 0;
+1373 : 0;
+1374 : 0;
+1375 : 0;
+1376 : 0;
+1377 : 0;
+1378 : 0;
+1379 : 0;
+1380 : 0;
+1381 : 0;
+1382 : 0;
+1383 : 0;
+1384 : 0;
+1385 : 0;
+1386 : 0;
+1387 : 0;
+1388 : 0;
+1389 : 0;
+1390 : 0;
+1391 : 0;
+1392 : 0;
+1393 : 0;
+1394 : 0;
+1395 : 0;
+1396 : 0;
+1397 : 0;
+1398 : 0;
+1399 : 0;
+1400 : 0;
+1401 : 0;
+1402 : 0;
+1403 : 0;
+1404 : 0;
+1405 : 0;
+1406 : 0;
+1407 : 0;
+1408 : 0;
+1409 : 0;
+1410 : 0;
+1411 : 0;
+1412 : 0;
+1413 : 0;
+1414 : 0;
+1415 : 0;
+1416 : 0;
+1417 : 0;
+1418 : 0;
+1419 : 0;
+1420 : 0;
+1421 : 0;
+1422 : 0;
+1423 : 0;
+1424 : 0;
+1425 : 0;
+1426 : 0;
+1427 : 0;
+1428 : 0;
+1429 : 0;
+1430 : 0;
+1431 : 0;
+1432 : 0;
+1433 : 0;
+1434 : 0;
+1435 : 0;
+1436 : 0;
+1437 : 0;
+1438 : 0;
+1439 : 0;
+1440 : 0;
+1441 : 0;
+1442 : 0;
+1443 : 0;
+1444 : 0;
+1445 : 0;
+1446 : 0;
+1447 : 0;
+1448 : 0;
+1449 : 0;
+1450 : 0;
+1451 : 0;
+1452 : 0;
+1453 : 0;
+1454 : 0;
+1455 : 0;
+1456 : 0;
+1457 : 0;
+1458 : 0;
+1459 : 0;
+1460 : 0;
+1461 : 0;
+1462 : 0;
+1463 : 0;
+1464 : 0;
+1465 : 0;
+1466 : 0;
+1467 : 0;
+1468 : 0;
+1469 : 0;
+1470 : 0;
+1471 : 0;
+1472 : 0;
+1473 : 0;
+1474 : 0;
+1475 : 0;
+1476 : 0;
+1477 : 0;
+1478 : 0;
+1479 : 0;
+1480 : 0;
+1481 : 0;
+1482 : 0;
+1483 : 0;
+1484 : 0;
+1485 : 0;
+1486 : 0;
+1487 : 0;
+1488 : 0;
+1489 : 0;
+1490 : 0;
+1491 : 0;
+1492 : 0;
+1493 : 0;
+1494 : 0;
+1495 : 0;
+1496 : 0;
+1497 : 0;
+1498 : 0;
+1499 : 0;
+1500 : 0;
+1501 : 0;
+1502 : 0;
+1503 : 0;
+1504 : 0;
+1505 : 0;
+1506 : 0;
+1507 : 0;
+1508 : 0;
+1509 : 0;
+1510 : 0;
+1511 : 0;
+1512 : 0;
+1513 : 0;
+1514 : 0;
+1515 : 0;
+1516 : 0;
+1517 : 0;
+1518 : 0;
+1519 : 0;
+1520 : 0;
+1521 : 0;
+1522 : 0;
+1523 : 0;
+1524 : 0;
+1525 : 0;
+1526 : 0;
+1527 : 0;
+1528 : 0;
+1529 : 0;
+1530 : 0;
+1531 : 0;
+1532 : 0;
+1533 : 0;
+1534 : 0;
+1535 : 0;
+1536 : 0;
+1537 : 0;
+1538 : 0;
+1539 : 0;
+1540 : 0;
+1541 : 0;
+1542 : 0;
+1543 : 0;
+1544 : 0;
+1545 : 0;
+1546 : 0;
+1547 : 0;
+1548 : 0;
+1549 : 0;
+1550 : 0;
+1551 : 0;
+1552 : 0;
+1553 : 0;
+1554 : 0;
+1555 : 0;
+1556 : 0;
+1557 : 0;
+1558 : 0;
+1559 : 0;
+1560 : 0;
+1561 : 0;
+1562 : 0;
+1563 : 0;
+1564 : 0;
+1565 : 0;
+1566 : 0;
+1567 : 0;
+1568 : 0;
+1569 : 0;
+1570 : 0;
+1571 : 0;
+1572 : 0;
+1573 : 0;
+1574 : 0;
+1575 : 0;
+1576 : 0;
+1577 : 0;
+1578 : 0;
+1579 : 0;
+1580 : 0;
+1581 : 0;
+1582 : 0;
+1583 : 0;
+1584 : 0;
+1585 : 0;
+1586 : 0;
+1587 : 0;
+1588 : 0;
+1589 : 0;
+1590 : 0;
+1591 : 0;
+1592 : 0;
+1593 : 0;
+1594 : 0;
+1595 : 0;
+1596 : 0;
+1597 : 0;
+1598 : 0;
+1599 : 0;
+1600 : 0;
+1601 : 0;
+1602 : 0;
+1603 : 0;
+1604 : 0;
+1605 : 0;
+1606 : 0;
+1607 : 0;
+1608 : 0;
+1609 : 0;
+1610 : 0;
+1611 : 0;
+1612 : 0;
+1613 : 0;
+1614 : 0;
+1615 : 0;
+1616 : 0;
+1617 : 0;
+1618 : 0;
+1619 : 0;
+1620 : 0;
+1621 : 0;
+1622 : 0;
+1623 : 0;
+1624 : 0;
+1625 : 0;
+1626 : 0;
+1627 : 0;
+1628 : 0;
+1629 : 0;
+1630 : 0;
+1631 : 0;
+1632 : 0;
+1633 : 0;
+1634 : 0;
+1635 : 0;
+1636 : 0;
+1637 : 0;
+1638 : 0;
+1639 : 0;
+1640 : 0;
+1641 : 0;
+1642 : 0;
+1643 : 0;
+1644 : 0;
+1645 : 0;
+1646 : 0;
+1647 : 0;
+1648 : 0;
+1649 : 0;
+1650 : 0;
+1651 : 0;
+1652 : 0;
+1653 : 0;
+1654 : 0;
+1655 : 0;
+1656 : 0;
+1657 : 0;
+1658 : 0;
+1659 : 0;
+1660 : 0;
+1661 : 0;
+1662 : 0;
+1663 : 0;
+1664 : 0;
+1665 : 0;
+1666 : 0;
+1667 : 0;
+1668 : 0;
+1669 : 0;
+1670 : 0;
+1671 : 0;
+1672 : 0;
+1673 : 0;
+1674 : 0;
+1675 : 0;
+1676 : 0;
+1677 : 0;
+1678 : 0;
+1679 : 0;
+1680 : 0;
+1681 : 0;
+1682 : 0;
+1683 : 0;
+1684 : 0;
+1685 : 0;
+1686 : 0;
+1687 : 0;
+1688 : 0;
+1689 : 0;
+1690 : 0;
+1691 : 0;
+1692 : 0;
+1693 : 0;
+1694 : 0;
+1695 : 0;
+1696 : 0;
+1697 : 0;
+1698 : 0;
+1699 : 0;
+1700 : 0;
+1701 : 0;
+1702 : 0;
+1703 : 0;
+1704 : 0;
+1705 : 0;
+1706 : 0;
+1707 : 0;
+1708 : 0;
+1709 : 0;
+1710 : 0;
+1711 : 0;
+1712 : 0;
+1713 : 0;
+1714 : 0;
+1715 : 0;
+1716 : 0;
+1717 : 0;
+1718 : 0;
+1719 : 0;
+1720 : 0;
+1721 : 0;
+1722 : 0;
+1723 : 0;
+1724 : 0;
+1725 : 0;
+1726 : 0;
+1727 : 0;
+1728 : 0;
+1729 : 0;
+1730 : 0;
+1731 : 0;
+1732 : 0;
+1733 : 0;
+1734 : 0;
+1735 : 0;
+1736 : 0;
+1737 : 0;
+1738 : 0;
+1739 : 0;
+1740 : 0;
+1741 : 0;
+1742 : 0;
+1743 : 0;
+1744 : 0;
+1745 : 0;
+1746 : 0;
+1747 : 0;
+1748 : 0;
+1749 : 0;
+1750 : 0;
+1751 : 0;
+1752 : 0;
+1753 : 0;
+1754 : 0;
+1755 : 0;
+1756 : 0;
+1757 : 0;
+1758 : 0;
+1759 : 0;
+1760 : 0;
+1761 : 0;
+1762 : 0;
+1763 : 0;
+1764 : 0;
+1765 : 0;
+1766 : 0;
+1767 : 0;
+1768 : 0;
+1769 : 0;
+1770 : 0;
+1771 : 0;
+1772 : 0;
+1773 : 0;
+1774 : 0;
+1775 : 0;
+1776 : 0;
+1777 : 0;
+1778 : 0;
+1779 : 0;
+1780 : 0;
+1781 : 0;
+1782 : 0;
+1783 : 0;
+1784 : 0;
+1785 : 0;
+1786 : 0;
+1787 : 0;
+1788 : 0;
+1789 : 0;
+1790 : 0;
+1791 : 0;
+1792 : 0;
+1793 : 0;
+1794 : 0;
+1795 : 0;
+1796 : 0;
+1797 : 0;
+1798 : 0;
+1799 : 0;
+1800 : 0;
+1801 : 0;
+1802 : 0;
+1803 : 0;
+1804 : 0;
+1805 : 0;
+1806 : 0;
+1807 : 0;
+1808 : 0;
+1809 : 0;
+1810 : 0;
+1811 : 0;
+1812 : 0;
+1813 : 0;
+1814 : 0;
+1815 : 0;
+1816 : 0;
+1817 : 0;
+1818 : 0;
+1819 : 0;
+1820 : 0;
+1821 : 0;
+1822 : 0;
+1823 : 0;
+1824 : 0;
+1825 : 0;
+1826 : 0;
+1827 : 0;
+1828 : 0;
+1829 : 0;
+1830 : 0;
+1831 : 0;
+1832 : 0;
+1833 : 0;
+1834 : 0;
+1835 : 0;
+1836 : 0;
+1837 : 0;
+1838 : 0;
+1839 : 0;
+1840 : 0;
+1841 : 0;
+1842 : 0;
+1843 : 0;
+1844 : 0;
+1845 : 0;
+1846 : 0;
+1847 : 0;
+1848 : 0;
+1849 : 0;
+1850 : 0;
+1851 : 0;
+1852 : 0;
+1853 : 0;
+1854 : 0;
+1855 : 0;
+1856 : 0;
+1857 : 0;
+1858 : 0;
+1859 : 0;
+1860 : 0;
+1861 : 0;
+1862 : 0;
+1863 : 0;
+1864 : 0;
+1865 : 0;
+1866 : 0;
+1867 : 0;
+1868 : 0;
+1869 : 0;
+1870 : 0;
+1871 : 0;
+1872 : 0;
+1873 : 0;
+1874 : 0;
+1875 : 0;
+1876 : 0;
+1877 : 0;
+1878 : 0;
+1879 : 0;
+1880 : 0;
+1881 : 0;
+1882 : 0;
+1883 : 0;
+1884 : 0;
+1885 : 0;
+1886 : 0;
+1887 : 0;
+1888 : 0;
+1889 : 0;
+1890 : 0;
+1891 : 0;
+1892 : 0;
+1893 : 0;
+1894 : 0;
+1895 : 0;
+1896 : 0;
+1897 : 0;
+1898 : 0;
+1899 : 0;
+1900 : 0;
+1901 : 0;
+1902 : 0;
+1903 : 0;
+1904 : 0;
+1905 : 0;
+1906 : 0;
+1907 : 0;
+1908 : 0;
+1909 : 0;
+1910 : 0;
+1911 : 0;
+1912 : 0;
+1913 : 0;
+1914 : 0;
+1915 : 0;
+1916 : 0;
+1917 : 0;
+1918 : 0;
+1919 : 0;
+1920 : 0;
+1921 : 0;
+1922 : 0;
+1923 : 0;
+1924 : 0;
+1925 : 0;
+1926 : 0;
+1927 : 0;
+1928 : 0;
+1929 : 0;
+1930 : 0;
+1931 : 0;
+1932 : 0;
+1933 : 0;
+1934 : 0;
+1935 : 0;
+1936 : 0;
+1937 : 0;
+1938 : 0;
+1939 : 0;
+1940 : 0;
+1941 : 0;
+1942 : 0;
+1943 : 0;
+1944 : 0;
+1945 : 0;
+1946 : 0;
+1947 : 0;
+1948 : 0;
+1949 : 0;
+1950 : 0;
+1951 : 0;
+1952 : 0;
+1953 : 0;
+1954 : 0;
+1955 : 0;
+1956 : 0;
+1957 : 0;
+1958 : 0;
+1959 : 0;
+1960 : 0;
+1961 : 0;
+1962 : 0;
+1963 : 0;
+1964 : 0;
+1965 : 0;
+1966 : 0;
+1967 : 0;
+1968 : 0;
+1969 : 0;
+1970 : 0;
+1971 : 0;
+1972 : 0;
+1973 : 0;
+1974 : 0;
+1975 : 0;
+1976 : 0;
+1977 : 0;
+1978 : 0;
+1979 : 0;
+1980 : 0;
+1981 : 0;
+1982 : 0;
+1983 : 0;
+1984 : 0;
+1985 : 0;
+1986 : 0;
+1987 : 0;
+1988 : 0;
+1989 : 0;
+1990 : 0;
+1991 : 0;
+1992 : 0;
+1993 : 0;
+1994 : 0;
+1995 : 0;
+1996 : 0;
+1997 : 0;
+1998 : 0;
+1999 : 0;
+2000 : 0;
+2001 : 0;
+2002 : 0;
+2003 : 0;
+2004 : 0;
+2005 : 0;
+2006 : 0;
+2007 : 0;
+2008 : 0;
+2009 : 0;
+2010 : 0;
+2011 : 0;
+2012 : 0;
+2013 : 0;
+2014 : 0;
+2015 : 0;
+2016 : 0;
+2017 : 0;
+2018 : 0;
+2019 : 0;
+2020 : 0;
+2021 : 0;
+2022 : 0;
+2023 : 0;
+2024 : 0;
+2025 : 0;
+2026 : 0;
+2027 : 0;
+2028 : 0;
+2029 : 0;
+2030 : 0;
+2031 : 0;
+2032 : 0;
+2033 : 0;
+2034 : 0;
+2035 : 0;
+2036 : 0;
+2037 : 0;
+2038 : 0;
+2039 : 0;
+2040 : 0;
+2041 : 0;
+2042 : 0;
+2043 : 0;
+2044 : 0;
+2045 : 0;
+2046 : 0;
+2047 : 0;
+END;
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_ip.qsf b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_ip.qsf
new file mode 100644
index 0000000..4106d96
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_ip.qsf
@@ -0,0 +1,289 @@
+# This qsf file is auto-generated by the dla_create_ip script
+
+# Get the path of this script
+set DLA_IP_PATH [file dirname [file normalize [info script]]]
+
+# Get the path of the parent directory of this script
+set SHARED_RTL_PATH [file join {*}[lrange [file split $DLA_IP_PATH] 0 end-1]]
+# Shared rtl assignments
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_if.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_if.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_if.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_if.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_layout_transform_config.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_filter_bias_scale_scratchpad_if.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_interface_if.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_pe_array_if.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_xbar_if.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_control.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_config_deserialize.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_output_streamer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_output_logic.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack1x1_mult_fp16_chain_add.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack2x2_mult6x4.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_round_clamp.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_pe.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_accum_convert_alm.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dma_addr_gen.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack2x1_mult7.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_width_adapter.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack1x1_mult9_chain_add.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_lane.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_input_feeder_writer_config.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_signmag_to_2scomplement.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_generic_three_way_depth_stitch.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_dspba_delay_ver.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_exit_fifo_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_coord_validate_dim.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_accum_blockfp_dsp.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_debug_network_node.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_a10_c10_adder_tree.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dsp_fp32_mult_add.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_sequencer_pe_control.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_sfc_backpressure_generator.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_pe_array.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_manager.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_mid_speed_fifo.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_mux.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_tall_depth_stitch.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_input_buffer_pipeline_stage.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_platform_reset.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_core.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_ram.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_lane.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_float_32_to_float_16.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dma_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_fanout_pipeline.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_pipeline_stage.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_filter_ddr_unpack.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_fp32_from_fpx_convert.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_word_coalescer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dsp_prime_tensor_dot_sidefeed.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_lfsr.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_read_data_alignment.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_data_conversion.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_altera_syncram_wrapped.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_config_decoder.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_fp_conversion.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_streamer_fsm.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_debug_network.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dma.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dma_writer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_input_buffer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_input_mux.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_core.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_fifo_zero_width.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_adder_tree.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_division_A10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_division_AGX.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_exponent_wrapper.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_sigmoid_tanh_recip_half_S10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_tensor_block_dot_and_convert.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_accum_fp32_dsp.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dsp_prime_tensor_accumulation.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_accum.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_exponent_S10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_interface_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_short_depth_stitch.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_generic_two_way_depth_stitch.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_reset_handler.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_division_wrapper.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_global_load_store.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_value_counter.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dma_csr.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_ecc_encoder.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_reader_top.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_burst_coalescer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack1x1_mult9_adder_tree.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dma_reader.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_debug.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_accum_fp32_convert.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_param_cache.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_cdc_reset_sync.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dsp_m18x18_full.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_accum_convert_dsp.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_alm_s10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_filter_bias_scale_scratchpad_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_step_counter.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_sequencer_result_id_counters.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_lower_mlab_simple_dual_port.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_low_latency_fifo.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_coord_gen.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_bits_per_enable.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_lane.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_ram_arb.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_output_streamer_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_read_cache.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_division_C10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_tessellated_incr_decr_threshold.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_data_split.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_lower_m20k_simple_dual_port.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack2x2_mult5.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_input_buffer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_sm_alm_s10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_input_feeder_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_bottom_depth_stitch.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_control.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack1x1_mult9.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_input_feeder.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_exponent_C10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_demux_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_ddrfree_config_data_read.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_debug.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dsp_fp32_mult_acc.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_prelu.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_latency_one_ram_fifo.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dma_read_arb.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_shift_register_no_reset.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack1x1_mult_fp16_adder_tree.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_fp_top.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_exponent_A10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_sigmoid_tanh_recip_half_A10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_group.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_config_network.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_dcfifo.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_output_streamer_flush_handler.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_ecc_decoder.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_write_data_alignment.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dsp_fp32_add_sub.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_cdc_reset_async.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_accum_blockfp_alm.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_config_decoder.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_sequencer_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_zero_latency_fifo.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_config_decoder.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_interface_profiling_counters.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_remaining_width.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_group.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_delay.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_sequencer_scratchpad_control.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_clock_cross_full_sync_internal.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_sigmoid_tanh_recip_half_AGX.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_coord_validate.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_core.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_timer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_s10_adder2.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_and_convert.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_division_S10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_accum_fixed.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_config_decoder.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_dimension_counter.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_control.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_addr_offset_gen.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_fifo.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_float_16_to_float_32.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_pe_drain.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_config_data_split.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_sigmoid_tanh_recip_half_C10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_debug.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_latency_zero_ram_fifo.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_pe_blockfp_to_accum_input.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_fp32_convert.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_xbar_config_handler.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_pipeline_stage.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_input_streamer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_reset_handler_simple.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_platform_reset_internal.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_filter_bias_cache.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_mult_dsp.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_ram.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_top.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack1x1_mult18.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_gen_index_info.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_s10_adder_tree.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_xbar_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_input_feeder_if.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_common_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_tree.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_alm.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack2x2_mult4.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_bottom_width_stitch.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_lower_m20k_true_dual_port.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_exponent_AGX.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_a10_adder1.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_counter.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_addr_gen_pipeline.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_2s_alm_s10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_latency_alignment.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_sequencer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_ecc.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_burst_splitter.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_input_buffer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_c10_adder1.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_group.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_high_speed_fifo.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_tessellated_incr_lookahead.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_s10_adder1.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_continuous_activations.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_filter_bias_scale_scratchpad.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_max_value.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_top.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_xbar_wrapper.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_unaligned_controller.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_2scomplement_to_signmag.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_pe_array_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_top.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_coalescer_dynamic_timeout.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dsp_m9x9_sumof4.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_xbar.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_ram_lower.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_data_aligner.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack2x2_mult5x4.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dma_config_intercept.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_funnel.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_exit_fifo.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_pipeline_stage.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_block_align_mantissa.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_top.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_hld_lsu_write_kernel_downstream.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_clock_cross_half_sync_internal.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_clamp.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_core.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_reader_addr_gen.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_bitscan_optimized.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack1x1_mult_fp16.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_layout_transform.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_top.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_softmax_input_buffer.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_shift_register.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_st_pipeline_stage.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_fp32_to_fpx_convert.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_group.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_activation_control.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_acl_ecc_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_config_data_concat.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_tensor1x2_mult10_hidden_sideload.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_lt_memory_manager.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_clock_cross_half_sync.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_dsp_pack2x2_mult7.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_width_adapter_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_pool_lane.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_cdc_reset_aligned.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dma_counter_64.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_stream_buffer_writer_addr_gen.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_input_feeder_reader_config.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dsp_fp16_mult_sum.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_alm_a10_c10.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_clock_cross_full_sync.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_aux_depthwise_debug.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_dot_checker.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_demux.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_alm_pipelined_accum.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name VERILOG_FILE $SHARED_RTL_PATH/dla_top_pkg.sv -hdl_version SystemVerilog_2009
+set_global_assignment -name SEARCH_PATH $SHARED_RTL_PATH
+set_global_assignment -name SDC_FILE $SHARED_RTL_PATH/dla_clock_cross_sync.sdc
+
+# Generated rtl assignments
+set_global_assignment -name SEARCH_PATH $DLA_IP_PATH
+set_global_assignment -name MIF_FILE $DLA_IP_PATH/dla_dma_csr_discovery_rom.mif
+set_global_assignment -name MIF_FILE $DLA_IP_PATH/dla_interface_profiling_counters.mif
+set_global_assignment -name VERILOG_CONSTANT_LOOP_LIMIT 500000 \ No newline at end of file
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_pe_array_system_de5a_area_A10.sv b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_pe_array_system_de5a_area_A10.sv
new file mode 100644
index 0000000..1accb4e
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_pe_array_system_de5a_area_A10.sv
@@ -0,0 +1,274 @@
+// Copyright 2020-2021 Intel Corporation.
+//
+// This software and the related documents are Intel copyrighted materials,
+// and your use of them is governed by the express license under which they
+// were provided to you ("License"). Unless the License provides otherwise,
+// you may not use, modify, copy, publish, distribute, disclose or transmit
+// this software or the related documents without Intel's prior written
+// permission.
+//
+// This software and the related documents are provided as is, with no express
+// or implied warranties, other than those that are expressly stated in the
+// License.
+
+`resetall
+`undefineall
+`default_nettype none
+
+module dla_pe_array_system_de5a_area_A10 import dla_common_pkg::*; #(
+ dla_sequencer_pkg::sequencer_arch_t SEQUENCER_ARCH,
+ dla_filter_bias_scale_scratchpad_pkg::filter_bias_scale_scratchpad_arch_t SCRATCHPAD_ARCH,
+ dla_pe_array_pkg::pe_array_arch_t PE_ARRAY_ARCH,
+ dla_exit_fifo_pkg::exit_fifo_arch_t EXIT_FIFO_ARCH,
+ dla_input_feeder_pkg::input_feeder_arch_t INPUT_FEEDER_ARCH,
+
+ int CONFIG_WIDTH,
+ int PE_ARRAY_OUTPUT_DATA_WIDTH,
+ int INPUT_FEEDER_INPUT_DATA_WIDTH,
+ int FEATURE_READER_WIDTH,
+ int FILTER_READER_WIDTH,
+ int SCRATCHPAD_LATENCY
+) (
+ input wire clk,
+ input wire i_aresetn,
+
+ // Config bus
+ input wire [CONFIG_WIDTH-1:0] i_feeder_mux_config_data,
+ output wire o_feeder_mux_config_ready,
+ input wire i_feeder_mux_config_valid,
+ input wire [CONFIG_WIDTH-1:0] i_feeder_writer_config_data,
+ output wire o_feeder_writer_config_ready,
+ input wire i_feeder_writer_config_valid,
+ input wire [CONFIG_WIDTH-1:0] i_feeder_in_config_data,
+ output wire o_feeder_in_config_ready,
+ input wire i_feeder_in_config_valid,
+ input wire [CONFIG_WIDTH-1:0] i_feeder_reader_config_data,
+ output wire o_feeder_reader_config_ready,
+ input wire i_feeder_reader_config_valid,
+ input wire [CONFIG_WIDTH-1:0] i_feeder_out_config_data,
+ output wire o_feeder_out_config_ready,
+ input wire i_feeder_out_config_valid,
+
+ // Feature data from DDR
+ input wire [FEATURE_READER_WIDTH-1:0] i_feature_input_data,
+ output wire o_feature_input_ready,
+ input wire i_feature_input_valid,
+
+ // Feature data from streaming interface
+ input wire [FEATURE_READER_WIDTH-1:0] i_istream_data,
+ output wire o_istream_ready,
+ input wire i_istream_valid,
+
+ // Filter data from DDR or on-chip memory
+ input wire [FILTER_READER_WIDTH-1:0] i_filter_data,
+ output logic o_filter_ready,
+ input wire i_filter_valid,
+
+ // Feature data from output of aux kernels
+ input wire [INPUT_FEEDER_INPUT_DATA_WIDTH-1:0] i_xbar_writeback_input_data,
+ output wire o_xbar_writeback_input_ready,
+ input wire i_xbar_writeback_input_valid,
+
+ // Output data from the PE array exit FIFO going to aux kernels
+ output wire [PE_ARRAY_OUTPUT_DATA_WIDTH-1:0] o_pe_array_output_data,
+ input wire i_pe_array_output_ready,
+ output logic o_pe_array_output_valid,
+
+ // Snoop signals for the profiling counters
+ output logic o_pc_input_feeder_to_sequencer_valid,
+ output logic o_pc_input_feeder_to_sequencer_ready,
+
+ output wire o_first_word_received
+);
+
+ // input feeder output signals
+ logic input_feeder_valid;
+ dla_interface_pkg::input_feeder_control_t input_feeder_control;
+ input_feeder_feature_if#(dla_input_feeder_pkg::input_feeder_feature_if_from_arch(INPUT_FEEDER_ARCH)) input_feeder_data();
+ logic input_feeder_ready;
+
+ localparam result_param = dla_pe_array_pkg::pe_array_result_param_from_pe_array_arch(PE_ARRAY_ARCH);
+ localparam control_param = dla_pe_array_pkg::pe_array_control_param_from_pe_array_arch(PE_ARRAY_ARCH);
+ localparam scratchpad_param = dla_filter_bias_scale_scratchpad_pkg::scratchpad_param_from_scratchpad_arch(SCRATCHPAD_ARCH);
+ localparam GROUP_DELAY = PE_ARRAY_ARCH.GROUP_DELAY;
+
+ // pe_array interfaces
+ pe_array_feature_if#(PE_ARRAY_ARCH) pe_array_feature();
+ pe_array_filter_if#(PE_ARRAY_ARCH) pe_array_filter();
+ pe_array_bias_if#(PE_ARRAY_ARCH) pe_array_bias();
+ pe_array_scale_if#(PE_ARRAY_ARCH) pe_array_scale();
+ pe_array_control_if#(control_param) pe_array_control();
+ pe_array_result_if#(result_param) pe_array_result();
+
+ // filter scratchpad interfaces
+ logic scratchpad_write_enable;
+ logic scratchpad_read;
+ scratchpad_write_addr_if#(scratchpad_param) scratchpad_write_addr();
+ scratchpad_write_data_if#(SCRATCHPAD_ARCH) scratchpad_filter_data();
+ scratchpad_read_addr_if#(scratchpad_param) scratchpad_read_addr();
+ scratchpad_read_data_if#(SCRATCHPAD_ARCH) scratchpad_read_data();
+
+ // exit fifo output interfaces
+ logic exit_fifo_almost_full;
+ pe_array_result_if#(result_param) exit_fifo_output_data();
+ dla_exit_fifo_pkg::exit_fifo_debug_t exit_fifo_debug;
+
+ // Convert scratchpad_read_data_t to pe_array_*_t
+ for (genvar pe_port = 0; pe_port < SCRATCHPAD_ARCH.NUM_PE_PORTS; pe_port++) begin
+ localparam int pe_idx = pe_port / PE_ARRAY_ARCH.NUM_FILTERS;
+ localparam int filter_idx = pe_port % PE_ARRAY_ARCH.NUM_FILTERS;
+ assign pe_array_filter.data[pe_idx][filter_idx].valid = scratchpad_read_data.data.ports[pe_port].valid;
+ assign pe_array_filter.data[pe_idx][filter_idx].mantissa = scratchpad_read_data.data.ports[pe_port].filter.mantissa;
+ assign pe_array_filter.data[pe_idx][filter_idx].exponent = scratchpad_read_data.data.ports[pe_port].filter.exponent;
+
+ // TODO: [shaneoco] save the area from dla_delay on the bias by delaying
+ // the bias read address on the scratchpad instead
+
+ assign pe_array_scale.data[pe_idx][filter_idx] = scratchpad_read_data.data.ports[pe_port].scale;
+ assign pe_array_bias.data[pe_idx][filter_idx] = scratchpad_read_data.data.ports[pe_port].bias;
+ end
+
+ dla_sequencer #(SEQUENCER_ARCH) sequencer (
+ .clk (clk),
+ .i_aresetn (i_aresetn),
+
+ // input_feeder control signals
+ .i_input_feeder_valid (input_feeder_valid),
+ .i_input_feeder_control (input_feeder_control),
+ .o_input_feeder_ready (input_feeder_ready),
+
+ // filter_reader control signals
+ .i_filter_reader_valid (i_filter_valid),
+ .i_filter_reader_is_bias (!scratchpad_filter_data.data.is_filter),
+ .o_filter_reader_ready (o_filter_ready),
+
+ // scratchpad control signals
+ .o_scratchpad_write_enable(scratchpad_write_enable),
+ .o_scratchpad_write_addr (scratchpad_write_addr),
+ .o_scratchpad_read_addr (scratchpad_read_addr),
+ .o_scratchpad_read (scratchpad_read),
+
+ // pe_array control signals
+ .o_pe_array_control (pe_array_control),
+
+ // exit_fifo control signals
+ .i_exit_fifo_almost_full (exit_fifo_almost_full)
+ );
+
+ // TODO(kimjinhe): for now I'm using unpacked xbar input data for lane but everywhere else it's
+ // packed so I need to make it consistent.
+ logic [FEATURE_READER_WIDTH-1:0] xbar_input_data [PE_ARRAY_ARCH.NUM_LANES-1:0];
+ for (genvar lane_idx = 0; lane_idx < PE_ARRAY_ARCH.NUM_LANES; lane_idx++) begin : GEN_XBAR_ASSIGN
+ assign xbar_input_data[lane_idx] = i_xbar_writeback_input_data[(lane_idx+1)*FEATURE_READER_WIDTH-1:lane_idx*FEATURE_READER_WIDTH];
+ end
+
+ dla_input_feeder #(INPUT_FEEDER_ARCH) input_feeder (
+ .clk (clk),
+ .i_resetn_async (i_aresetn),
+
+ .i_config_feeder_in_data (i_feeder_in_config_data),
+ .i_config_feeder_in_valid (i_feeder_in_config_valid),
+ .o_config_feeder_in_ready (o_feeder_in_config_ready),
+
+ .i_config_writer_mux_data (i_feeder_mux_config_data),
+ .i_config_writer_mux_valid (i_feeder_mux_config_valid),
+ .o_config_writer_mux_ready (o_feeder_mux_config_ready),
+
+ .i_config_writer_addr_data (i_feeder_writer_config_data),
+ .i_config_writer_addr_valid (i_feeder_writer_config_valid),
+ .o_config_writer_addr_ready (o_feeder_writer_config_ready),
+
+ .i_config_feeder_out_data (i_feeder_out_config_data),
+ .i_config_feeder_out_valid (i_feeder_out_config_valid),
+ .o_config_feeder_out_ready (o_feeder_out_config_ready),
+
+ .i_config_reader_data (i_feeder_reader_config_data),
+ .i_config_reader_valid (i_feeder_reader_config_valid),
+ .o_config_reader_ready (o_feeder_reader_config_ready),
+
+ .i_ddr_data (i_feature_input_data),
+ .i_ddr_valid (i_feature_input_valid),
+ .o_ddr_ready (o_feature_input_ready),
+
+ .i_istream_data (i_istream_data),
+ .o_istream_ready (o_istream_ready),
+ .i_istream_valid (i_istream_valid),
+
+ .i_xbar_data (xbar_input_data),
+ .i_xbar_valid (i_xbar_writeback_input_valid),
+ .o_xbar_ready (o_xbar_writeback_input_ready),
+
+ .i_input_feeder_ready (input_feeder_ready),
+ .o_input_feeder_valid (input_feeder_valid),
+ .o_input_feeder_control (input_feeder_control),
+ .o_input_feeder_data (input_feeder_data),
+
+ .o_first_word_received (o_first_word_received)
+ );
+
+
+ dla_filter_ddr_unpack #(
+ .SCRATCHPAD_ARCH(SCRATCHPAD_ARCH),
+ .DDR_WIDTH(FILTER_READER_WIDTH)
+ ) filter_ddr_unpack (
+ .i_ddr_data (i_filter_data),
+ .o_scratchpad_filter_data(scratchpad_filter_data)
+ );
+
+ dla_filter_bias_scale_scratchpad #(SCRATCHPAD_ARCH) scratchpad (
+ .clk (clk),
+
+ .i_write_enable(scratchpad_write_enable),
+ .i_write_addr (scratchpad_write_addr),
+ .i_write_data (scratchpad_filter_data),
+
+ .i_read (scratchpad_read),
+ .i_read_addr (scratchpad_read_addr),
+ .o_read_data (scratchpad_read_data)
+ );
+
+ for (genvar lane_idx = 0; lane_idx < PE_ARRAY_ARCH.NUM_LANES; lane_idx++) begin : GEN_LANE_ASSIGN
+ // TODO: [shaneoco] move this calculation to a central place
+ localparam int PE_FEATURE_WIDTH =
+ ((PE_ARRAY_ARCH.DOT_SIZE * PE_ARRAY_ARCH.FEATURE_WIDTH)
+ + PE_ARRAY_ARCH.FEATURE_EXPONENT_WIDTH) * PE_ARRAY_ARCH.NUM_FEATURES;
+ dla_delay #(
+ .WIDTH(PE_FEATURE_WIDTH),
+ .DELAY(SCRATCHPAD_LATENCY + lane_idx * GROUP_DELAY),
+ .DEVICE(PE_ARRAY_ARCH.DEVICE)
+ ) feature_data_reg (
+ .clk(clk),
+ .i_data(input_feeder_data.data[lane_idx]),
+ .o_data(pe_array_feature.data[lane_idx])
+ );
+ end
+
+ dla_pe_array #(.arch(PE_ARRAY_ARCH)) pe_array (
+ .clk (clk),
+ .i_aresetn(i_aresetn),
+ .i_feature(pe_array_feature),
+ .i_filter (pe_array_filter),
+ .i_bias (pe_array_bias),
+ .i_scale (pe_array_scale),
+ .i_control(pe_array_control),
+ .o_result (pe_array_result)
+ );
+
+ dla_exit_fifo #(EXIT_FIFO_ARCH) exit_fifo (
+ .clk (clk),
+ .i_aresetn (i_aresetn),
+ .i_data (pe_array_result),
+ .i_ready (i_pe_array_output_ready),
+ .o_data (exit_fifo_output_data),
+ .o_almost_full(exit_fifo_almost_full),
+ .o_debug (exit_fifo_debug)
+ );
+
+ assign o_pe_array_output_data = exit_fifo_output_data.data.result;
+ assign o_pe_array_output_valid = exit_fifo_output_data.data.valid;
+
+ // Snoop signals for the profiling counters
+ assign o_pc_input_feeder_to_sequencer_valid = input_feeder_valid & input_feeder_control.feature_valid;
+ assign o_pc_input_feeder_to_sequencer_ready = input_feeder_ready;
+
+endmodule
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_top_de5a_area_A10.sv b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_top_de5a_area_A10.sv
new file mode 100644
index 0000000..d60bcf4
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_top_de5a_area_A10.sv
@@ -0,0 +1,1717 @@
+// Copyright 2015-2021 Intel Corporation.
+//
+// This software and the related documents are Intel copyrighted materials,
+// and your use of them is governed by the express license under which they
+// were provided to you ("License"). Unless the License provides otherwise,
+// you may not use, modify, copy, publish, distribute, disclose or transmit
+// this software or the related documents without Intel's prior written
+// permission.
+//
+// This software and the related documents are provided as is, with no express
+// or implied warranties, other than those that are expressly stated in the
+// License.
+
+//////////////////////////////////////////////////////////////////////////////
+// Top-level coreDLA module (shared between testbench and real hardware)
+//////////////////////////////////////////////////////////////////////////////
+
+// Not all AXI ports have been implemented. For assumptions and restrictions, refer to dla/fpga/dma/rtl/dla_dma.sv.
+// This module simply exposes the same AXI ports provided by the top module of DMA.
+
+`resetall
+`undefineall
+`default_nettype none
+`include "dla_acl_parameter_assert.svh"
+
+module dla_top_de5a_area_A10
+
+import dla_common_pkg::*, dla_input_feeder_pkg::input_feeder_arch_t, dla_pe_array_pkg::*, dla_top_pkg::*, dla_xbar_pkg::*, dla_aux_activation_pkg::*, dla_aux_pool_pkg::*,
+ dla_aux_softmax_pkg::*, dla_aux_depthwise_pkg::*, dla_lt_pkg::*;
+
+#(
+ string DEVICE, // the device to target, legal values are "A10", "C10", "S10", or "AGX7"
+
+ int CSR_ADDR_WIDTH, // width of the byte address signal, determines CSR address space size, e.g. 11 bit address = 2048 bytes, the largest size that uses only 1 M20K
+ int CSR_DATA_BYTES, // width of the CSR data path, typically 4 bytes
+ int CONFIG_DATA_BYTES, // data width of the config network output port, typically 4 bytes
+ int CONFIG_READER_DATA_BYTES, // data width of the config network input port, typically 8 bytes
+ int FILTER_READER_DATA_BYTES, // data width of the filter reader, typically a whole DDR word (assuming block floating point, C_VECTOR=16 so 4 filter words packed into 1 DDR word)
+ int FEATURE_READER_DATA_BYTES, // data width of the feature reader, typically half of a DDR word for C_VECTOR=16 (assuming FP16 or smaller)
+ int FEATURE_WRITER_DATA_BYTES, // data width of the feature writer, typically half of a DDR word for C_VECTOR=16 (assuming FP16 or smaller)
+ int DDR_ADDR_WIDTH, // width of all byte address signals to global memory, 32 would allow 4 GB of addressable memory
+ int DDR_BURST_WIDTH, // internal width of the axi burst length signal, typically 4, max number of words in a burst = 2**DDR_BURST_WIDTH
+ int DDR_DATA_BYTES, // width of the global memory data path, typically 64 bytes
+ int DDR_READ_ID_WIDTH, // width of the AXI ID signal for DDR reads, must be 2 since there are 3 read masters
+ bit ENABLE_ON_CHIP_PARAMETERS, // whether the configs, filters are saved on-chip
+
+ // stream buffer
+ int KVEC_OVER_CVEC,
+ int SB_ADDR_WIDTH,
+ int STREAM_BUFFER_DEPTH,
+
+ // pe array
+ dla_pe_array_pkg::pe_array_arch_bits_t PE_ARRAY_PARAM_BITS,
+ int PE_ARRAY_EXIT_FIFO_DEPTH,
+
+ // filter scratchpad
+ int SCRATCHPAD_FILTER_DEPTH,
+ int SCRATCHPAD_BIAS_SCALE_DEPTH,
+ int SCRATCHPAD_NUM_FILTER_PORTS,
+ int SCRATCHPAD_NUM_BIAS_SCALE_PORTS,
+ int SCRATCHPAD_MEGABLOCK_WIDTH,
+ int SCRATCHPAD_NUM_FILTER_BLOCKS_PER_MEGABLOCK,
+ int SCRATCHPAD_NUM_BIAS_SCALE_BLOCKS_PER_MEGABLOCK,
+
+ // config network
+ int CONFIG_ID_FILTER_READER,
+ int CONFIG_CHANNEL_WIDTH,
+ int CONFIG_CACHE_DEPTH,
+ int CONFIG_ID_INPUT_FEEDER_MUX,
+ int CONFIG_ID_INPUT_FEEDER_WRITER,
+ int CONFIG_ID_INPUT_FEEDER_IN,
+ int CONFIG_ID_INPUT_FEEDER_READER,
+ int CONFIG_ID_INPUT_FEEDER_OUT,
+ int CONFIG_ID_FEATURE_WRITER,
+ int CONFIG_ID_FEATURE_READER,
+ int CONFIG_ID_XBAR,
+ int CONFIG_ID_OUTPUT_STREAMER,
+ int CONFIG_ID_OUTPUT_STREAMER_FLUSH,
+ int CONFIG_ID_WRITER_STREAMER_SEL,
+ int CONFIG_ID_LAYOUT_TRANSFORM,
+
+ // aux module config ID
+ int CONFIG_ID_ACTIVATION,
+ int CONFIG_ID_POOL,
+ int CONFIG_ID_DEPTHWISE,
+ int CONFIG_ID_DEPTHWISE_FILTER_BIAS,
+ int CONFIG_ID_SOFTMAX,
+
+ int CONFIG_NUM_MODULES,
+ int MODULE_ID_WIDTH,
+
+ int CONFIG_NETWORK_FIFO_MIN_DEPTH [CONFIG_NETWORK_MAX_NUM_MODULES:1],
+ int CONFIG_NETWORK_NUM_PIPELINE_STAGES [CONFIG_NETWORK_MAX_NUM_MODULES:1],
+ bit CONFIG_NETWORK_CROSS_CLOCK [CONFIG_NETWORK_MAX_NUM_MODULES:1],
+ bit CONFIG_NETWORK_CROSS_CLOCK_AXI [CONFIG_NETWORK_MAX_NUM_MODULES:1],
+ int CONFIG_NETWORK_QUANTIZE_DEPTHS [255:0], //real hardware should set this to {32,512} to fully utilize an MLAB or an M20K, testbench may set this to something smaller to test backpressure
+
+ //xbar
+ int MAX_XBAR_INPUT_INTERFACES,
+ int MAX_XBAR_OUTPUT_INTERFACES,
+ int NUMBER_OF_KERNELS,
+ int AUX_MODULE_SELECT_ID_WIDTH,
+ int AUX_XBAR_INPUT_COUNTER_WIDTH,
+ int AUX_XBAR_OUTPUT_COUNTER_WIDTH,
+ int AUX_MAX_DATABUS_WIDTH,
+ int AUX_XBAR_OUTPUT_WIDTH,
+ int AUX_OUTPUT_DATA_WIDTHS [DLA_TOP_XBAR_PARAMETER_ARRAY_SIZE-1:0],
+ int AUX_INPUT_DATA_WIDTHS [DLA_TOP_XBAR_PARAMETER_ARRAY_SIZE-1:0],
+ bit XBAR_KERNEL_BYPASS_FEATURE_ENABLE,
+ int AUX_XBAR_MUX_OUTPUT_PIPELINE_STAGES [DLA_TOP_XBAR_PARAMETER_ARRAY_SIZE-1:0],
+ int AUX_XBAR_NONSTALLABLE_OUTPUT_PIPELINE_STAGES [DLA_TOP_XBAR_PARAMETER_ARRAY_SIZE-1:0],
+ int AUX_XBAR_OUTPUT_BP_FIFO_ENABLE [DLA_TOP_XBAR_PARAMETER_ARRAY_SIZE-1:0],
+ bit AUX_KERNEL_BYPASSABLE [DLA_TOP_XBAR_PARAMETER_ARRAY_SIZE-1:0],
+ int AUX_XBAR_OUTPUT_BP_FIFO_DEPTH [DLA_TOP_XBAR_PARAMETER_ARRAY_SIZE-1:0],
+ bit XBAR_KERNEL_CV_FEATURE_ENABLE,
+ int AUX_KERNEL_CONNECTIVITY_VECTOR [DLA_TOP_XBAR_PARAMETER_ARRAY_SIZE-1:0][DLA_TOP_XBAR_PARAMETER_ARRAY_SIZE-1:0],
+
+ //xbar id
+ int XBAR_ID_ACTIVATION,
+ int XBAR_ID_POOL,
+ int XBAR_ID_DEPTHWISE,
+ int XBAR_ID_SOFTMAX,
+ int XBAR_ID_PE_ARRAY,
+ int XBAR_ID_XBAR_OUT_PORT,
+ //aux module enable
+ bit ENABLE_ACTIVATION,
+ bit ENABLE_POOL,
+ bit ENABLE_DEPTHWISE,
+ bit ENABLE_SOFTMAX,
+
+ bit ENABLE_INPUT_STREAMING,
+ int AXI_ISTREAM_DATA_WIDTH,
+ int AXI_ISTREAM_FIFO_DEPTH,
+
+ //config network enable
+ bit ENABLE_DEBUG,
+
+ // activation parameters
+ int ACTIVATION_K_VECTOR,
+ bit ACTIVATION_ENABLE_DSP_MULT,
+ bit ACTIVATION_ENABLE_DSP_CONV,
+ int ACTIVATION_TYPE,
+ int ACTIVATION_GROUP_DELAY,
+ int ACTIVATION_PARAM_CACHE_DEPTH,
+
+ //pool parameters
+ int POOL_K_VECTOR,
+ int POOL_TYPE,
+ int POOL_GROUP_DELAY,
+ int POOL_CONFIG_ID_WIDTH,
+ int POOL_MAX_WINDOW_HEIGHT,
+ int POOL_MAX_WINDOW_WIDTH,
+ int POOL_MAX_STRIDE_VERTICAL,
+ int POOL_MAX_STRIDE_HORIZONTAL,
+ int POOL_PIPELINE_REG_NUM,
+
+ // depthwise parameters
+ int DEPTHWISE_K_VECTOR,
+ int DEPTHWISE_TYPE,
+ int DEPTHWISE_GROUP_DELAY,
+ int DEPTHWISE_CONFIG_ID_WIDTH,
+ int DEPTHWISE_MAX_WINDOW_HEIGHT,
+ int DEPTHWISE_MAX_WINDOW_WIDTH,
+ int DEPTHWISE_MAX_STRIDE_VERTICAL,
+ int DEPTHWISE_MAX_STRIDE_HORIZONTAL,
+ int DEPTHWISE_PIPELINE_REG_NUM,
+ int DEPTHWISE_MAX_DILATION_VERTICAL,
+ int DEPTHWISE_MAX_DILATION_HORIZONTAL,
+
+ // depthwise vector parameters
+ int DETHWISE_VECTOR_FEATURE_WIDTH,
+ int DETHWISE_VECTOR_FILTER_WIDTH,
+ int DETHWISE_VECTOR_BIAS_WIDTH,
+ int DETHWISE_VECTOR_DOT_SIZE,
+
+ //softmax parameters
+ int SOFTMAX_K_VECTOR,
+ int SOFTMAX_GROUP_DELAY,
+ int SOFTMAX_CONFIG_ID_WIDTH,
+ int SOFTMAX_MAX_NUM_CHANNELS,
+
+ // aux parameters
+ int AUX_MAX_TILE_HEIGHT,
+ int AUX_MAX_TILE_WIDTH,
+ int AUX_MAX_TILE_CHANNELS,
+
+ // mixed precision switch
+ int ENABLE_MIXED_PRECISION,
+
+ // Layout Transform
+ int LAYOUT_TRANSFORM_ENABLE,
+ int LAYOUT_TRANSFORM_MAX_FEATURE_CHANNELS,
+ int LAYOUT_TRANSFORM_MAX_FEATURE_HEIGHT,
+ int LAYOUT_TRANSFORM_MAX_FEATURE_WIDTH,
+ int LAYOUT_TRANSFORM_MAX_FEATURE_DEPTH,
+ int LAYOUT_TRANSFORM_MAX_STRIDE_WIDTH,
+ int LAYOUT_TRANSFORM_MAX_STRIDE_HEIGHT,
+ int LAYOUT_TRANSFORM_MAX_STRIDE_DEPTH,
+ int LAYOUT_TRANSFORM_MAX_PAD_FRONT,
+ int LAYOUT_TRANSFORM_MAX_PAD_LEFT,
+ int LAYOUT_TRANSFORM_MAX_PAD_TOP,
+ int LAYOUT_TRANSFORM_MAX_FILTER_HEIGHT,
+ int LAYOUT_TRANSFORM_MAX_FILTER_WIDTH,
+ int LAYOUT_TRANSFORM_MAX_FILTER_DEPTH,
+ int LAYOUT_TRANSFORM_MAX_DILATION_WIDTH,
+ int LAYOUT_TRANSFORM_MAX_DILATION_HEIGHT,
+ int LAYOUT_TRANSFORM_MAX_DILATION_DEPTH,
+ int LAYOUT_TRANSFORM_READER_BYTES,
+ bit LAYOUT_TRANSFORM_DO_U8_CONV,
+
+ // output streaming enable and signals
+ bit ENABLE_OUTPUT_STREAMER,
+ int AXI_OSTREAM_DATA_WIDTH,
+ int AXI_OSTREAM_ID_WIDTH,
+ int AXI_OSTREAM_DEST_WIDTH,
+ int AXI_OSTREAM_FIFO_DEPTH
+) (
+ //clocks and resets, all resets are not synchronized
+ input wire clk_ddr,
+ input wire clk_axi,
+ input wire clk_dla,
+ input wire clk_pcie,
+ input wire i_resetn_async, //active low reset that has NOT been synchronized to any clock
+
+ //interrupt request, AXI4 stream master without data, runs on pcie clock
+ output logic o_interrupt_level,
+
+ //CSR, AXI4 lite slave, runs on ddr clock
+ input wire i_csr_arvalid,
+ input wire [CSR_ADDR_WIDTH-1:0] i_csr_araddr,
+ output logic o_csr_arready,
+ output logic o_csr_rvalid,
+ output logic [8*CSR_DATA_BYTES-1:0] o_csr_rdata,
+ input wire i_csr_rready,
+ input wire i_csr_awvalid,
+ input wire [CSR_ADDR_WIDTH-1:0] i_csr_awaddr,
+ output logic o_csr_awready,
+ input wire i_csr_wvalid,
+ input wire [8*CSR_DATA_BYTES-1:0] i_csr_wdata,
+ output logic o_csr_wready,
+ output logic o_csr_bvalid,
+ input wire i_csr_bready,
+
+ //global memory, AXI4 master, runs on ddr clock
+ output logic o_ddr_arvalid,
+ output logic [DDR_ADDR_WIDTH-1:0] o_ddr_araddr,
+ output logic [AXI_BURST_LENGTH_WIDTH-1:0] o_ddr_arlen,
+ output logic [AXI_BURST_SIZE_WIDTH-1:0] o_ddr_arsize,
+ output logic [AXI_BURST_TYPE_WIDTH-1:0] o_ddr_arburst,
+ output logic [DDR_READ_ID_WIDTH-1:0] o_ddr_arid,
+ input wire i_ddr_arready,
+ input wire i_ddr_rvalid,
+ input wire [8*DDR_DATA_BYTES-1:0] i_ddr_rdata,
+ input wire [DDR_READ_ID_WIDTH-1:0] i_ddr_rid,
+ output logic o_ddr_rready,
+ output logic o_ddr_awvalid,
+ output logic [DDR_ADDR_WIDTH-1:0] o_ddr_awaddr,
+ output logic [AXI_BURST_LENGTH_WIDTH-1:0] o_ddr_awlen,
+ output logic [AXI_BURST_SIZE_WIDTH-1:0] o_ddr_awsize,
+ output logic [AXI_BURST_TYPE_WIDTH-1:0] o_ddr_awburst,
+ input wire i_ddr_awready,
+ output logic o_ddr_wvalid,
+ output logic [8*DDR_DATA_BYTES-1:0] o_ddr_wdata,
+ output logic [DDR_DATA_BYTES-1:0] o_ddr_wstrb,
+ output logic o_ddr_wlast,
+ input wire i_ddr_wready,
+ input wire i_ddr_bvalid,
+ output logic o_ddr_bready,
+
+ // Input Streamer AXI-S interface signals
+ input wire i_istream_axi_t_valid,
+ output logic o_istream_axi_t_ready,
+ input wire [AXI_ISTREAM_DATA_WIDTH-1:0] i_istream_axi_t_data,
+
+ // Output Streamer AXI-S interface signals
+ output wire o_ostream_axi_t_valid,
+ input wire i_ostream_axi_t_ready,
+ output wire o_ostream_axi_t_last,
+ output logic [AXI_OSTREAM_DATA_WIDTH-1:0] o_ostream_axi_t_data,
+ output logic [(AXI_OSTREAM_DATA_WIDTH/8)-1:0] o_ostream_axi_t_strb
+);
+ `include "dla_top_derived_params.svh"
+
+ //////////////////////////////////////
+ // Debug network parameterization //
+ //////////////////////////////////////
+
+ localparam int DEBUG_NETWORK_DATA_WIDTH = 32; //width of the read response data
+ localparam int DEBUG_NETWORK_ADDR_WIDTH = 32; //width of the read request address
+ localparam int DEBUG_NETWORK_ADDR_LOWER = 24; //how many lower bits of the address are forwarded to external debug-capable module
+ //the upper DEBUG_NETWORK_ADDR_WIDTH-DEBUG_NETWORK_ADDR_LOWER bits of address are used to identify the module id
+ localparam int DEBUG_NETWORK_NUM_MODULES = 1; //how many external debug-capable modules are attached, module id goes from 0 to NUM_MODULES-1
+
+ //list of debug-capable modules that attached to debug network
+ localparam int DEBUG_NETWORK_ID_PROFILING_COUNTERS = 0;
+
+ // Profiling counters attached to debug network.
+ // The ordering of the interfaces must stay consistent with dla/fpga/interface_profiling_counters/util/create_mif.cpp.
+ // BEWARE: can only snoop interfaces on clk_dla, e.g. config to DMA readers and writers are excluded, however we can still watch DMA
+ // by snooping the ready/valid of the data interface (to input feeder, to filter scratchpad, from xbar before the clock crossing FIFO).
+ // Some details to be aware of:
+ // - Exit FIFOs are considered part of the preceding module, e.g. PC_ID_INPUT_FEEDER_TO_SEQUENCER is after the input feeder exit FIFO
+ // - Width adapters are considered part of the xbar, e.g. if pool kvec < xbar kvec, then we are tapping at the narrower pool interface
+ localparam int PC_ID_DMA_TO_CONFIG = 0;
+ localparam int PC_ID_DMA_TO_FILTER = 1;
+ localparam int PC_ID_DMA_TO_INPUT_FEEDER = 2;
+ localparam int PC_ID_CONFIG_TO_INPUT_FEEDER_IN = 3;
+ localparam int PC_ID_CONFIG_TO_INPUT_FEEDER_OUT = 4;
+ localparam int PC_ID_CONFIG_TO_XBAR = 5;
+ localparam int PC_ID_CONFIG_TO_ACTIVATION = 6;
+ localparam int PC_ID_CONFIG_TO_POOL = 7;
+ localparam int PC_ID_CONFIG_TO_SOFTMAX = 8;
+ localparam int PC_ID_INPUT_FEEDER_TO_SEQUENCER = 9;
+ localparam int PC_ID_PE_ARRAY_TO_XBAR = 10;
+ localparam int PC_ID_XBAR_TO_ACTIVATION = 11;
+ localparam int PC_ID_ACTIVATION_TO_XBAR = 12;
+ localparam int PC_ID_XBAR_TO_POOL = 13;
+ localparam int PC_ID_POOL_TO_XBAR = 14;
+ localparam int PC_ID_XBAR_TO_SOFTMAX = 15;
+ localparam int PC_ID_SOFTMAX_TO_XBAR = 16;
+ localparam int PC_ID_XBAR_TO_INPUT_FEEDER = 17;
+ localparam int PC_ID_XBAR_TO_DMA = 18;
+ localparam int PC_NUM_INTERFACES = 19;
+
+ localparam int RESET_HOLD_CLOCK_CYCLES = 1024; //number of clock cycles to hold the reset signal connected to the dla top and dla platform adapter modules
+
+
+ ///////////////
+ // Signals //
+ ///////////////
+
+ logic config_network_input_valid;
+ logic [CONFIG_READER_WIDTH-1:0] config_network_input_data;
+ logic config_network_input_ready;
+ logic config_network_output_valid [CONFIG_NUM_MODULES:1];
+ logic [CONFIG_WIDTH-1:0] config_network_output_data [CONFIG_NUM_MODULES:1];
+ logic config_network_output_ready [CONFIG_NUM_MODULES:1];
+ logic filter_reader_valid;
+ logic [FILTER_READER_WIDTH-1:0] filter_reader_data;
+ logic filter_reader_ready;
+ logic feature_reader_valid;
+ logic [FEATURE_READER_WIDTH-1:0] feature_reader_data;
+ logic feature_reader_ready;
+ logic pe_array_output_valid;
+ logic [PE_ARRAY_OUTPUT_DATA_WIDTH-1:0] pe_array_output_data;
+ logic pe_array_output_ready;
+ logic aux_valid;
+ logic [INPUT_FEEDER_INPUT_DATA_WIDTH-1:0] aux_data;
+ logic aux_ready;
+ logic feature_writer_valid;
+ logic [FEATURE_WRITER_WIDTH-1:0] feature_writer_data;
+ logic feature_writer_ready;
+ logic debug_network_csr_arvalid;
+ logic [DEBUG_NETWORK_ADDR_WIDTH-1:0] debug_network_csr_araddr;
+ logic debug_network_csr_arready;
+ logic debug_network_csr_rvalid;
+ logic [DEBUG_NETWORK_DATA_WIDTH-1:0] debug_network_csr_rdata;
+ logic debug_network_csr_rready;
+ logic debug_network_dbg_arvalid [DEBUG_NETWORK_NUM_MODULES-1:0];
+ logic [DEBUG_NETWORK_ADDR_LOWER-1:0] debug_network_dbg_araddr [DEBUG_NETWORK_NUM_MODULES-1:0];
+ logic debug_network_dbg_arready [DEBUG_NETWORK_NUM_MODULES-1:0];
+ logic debug_network_dbg_rvalid [DEBUG_NETWORK_NUM_MODULES-1:0];
+ logic [DEBUG_NETWORK_DATA_WIDTH-1:0] debug_network_dbg_rdata [DEBUG_NETWORK_NUM_MODULES-1:0];
+ logic debug_network_dbg_rready [DEBUG_NETWORK_NUM_MODULES-1:0];
+ logic pc_snoop_valid [PC_NUM_INTERFACES-1:0];
+ logic pc_snoop_ready [PC_NUM_INTERFACES-1:0];
+ logic pc_input_feeder_to_sequencer_valid;
+ logic pc_input_feeder_to_sequencer_ready;
+ logic pc_config_to_activation_valid;
+ logic pc_config_to_activation_ready;
+ logic pc_xbar_to_activation_valid;
+ logic pc_xbar_to_activation_ready;
+ logic pc_activation_to_xbar_valid;
+ logic pc_activation_to_xbar_ready;
+ logic pc_config_to_pool_valid;
+ logic pc_config_to_pool_ready;
+ logic pc_xbar_to_pool_valid;
+ logic pc_xbar_to_pool_ready;
+ logic pc_pool_to_xbar_valid;
+ logic pc_pool_to_xbar_ready;
+ logic pc_config_to_softmax_valid;
+ logic pc_config_to_softmax_ready;
+ logic pc_xbar_to_softmax_valid;
+ logic pc_xbar_to_softmax_ready;
+ logic pc_softmax_to_xbar_valid;
+ logic pc_softmax_to_xbar_ready;
+ logic reset_request_from_csr;
+ logic w_resetn_async;
+ logic streaming_active;
+ logic lt_param_error;
+
+ logic config_lt_ready_ddr, config_lt_valid_ddr;
+ logic [CONFIG_WIDTH-1:0] config_lt_data_ddr;
+
+ logic config_lt_ready_stream, config_lt_valid_stream;
+ logic [CONFIG_WIDTH-1:0] config_lt_data_stream;
+ logic ostream_tlast_axi_clk, ostream_tlast_ddr_clk;
+
+ assign o_ostream_axi_t_last = ostream_tlast_axi_clk;
+
+ logic unpacked_clk_ddr [1], unpacked_clk_axi [1];
+ logic unpacked_resetn_ddr [1], unpacked_resetn_axi [1];
+
+ assign unpacked_clk_ddr = '{clk_ddr};
+ assign unpacked_clk_axi = '{clk_axi};
+
+ //the user can request IP reset by writing to a CSR register (runs on clk_ddr)
+ //since the dla_platform_reset safely handles async reset, we just need OR this with external reset
+ //the signal reset_request_from_csr is active high, so invert it
+ assign unpacked_resetn_ddr[0] = i_resetn_async & !reset_request_from_csr;
+ assign unpacked_resetn_axi[0] = i_resetn_async & !reset_request_from_csr;
+ //NOTE!
+ //driving an async reset signal with combinational logic is potentially dangerous, as glitching
+ //at the comb output can pose a metastability risk. However, it is safe in this case:
+ // - there are only two ANDed inputs, so no intermediate result glitching
+ // - reset_request_from_csr comes straight from a FF, so will not itself glitch
+ // - if the two inputs change too near each other, a glitch COULD occur -- however, the only possible
+ // AND glitch is 00010000. The resulting reset sequence would resolve any metastability
+ // - reset_request_from_csr is by construction well-behaved with respect to i_resetn_async
+
+
+ dla_platform_reset #(
+ .RESET_HOLD_CLOCK_CYCLES (RESET_HOLD_CLOCK_CYCLES),
+ .MAX_DLA_INSTANCES (1),
+ .ENABLE_AXI (ENABLE_INPUT_STREAMING || ENABLE_OUTPUT_STREAMER),
+ .ENABLE_DDR (1)
+ ) dla_platform_reset_inst (
+ .clk_dla (clk_dla),
+ .clk_ddr (unpacked_clk_ddr),
+ .clk_pcie (clk_pcie),
+ .clk_axis (unpacked_clk_axi),
+ .i_resetn_dla (i_resetn_async),
+ .i_resetn_ddr (unpacked_resetn_ddr),
+ .i_resetn_pcie (i_resetn_async),
+ .i_resetn_axis (unpacked_resetn_axi),
+ .o_resetn_async (w_resetn_async)
+ );
+
+ logic [INPUT_FEEDER_INPUT_DATA_WIDTH-1:0] istream_data;
+ logic istream_ready;
+ logic istream_valid;
+ logic reading_first_word;
+ logic axi_streaming_active;
+ logic axi_reading_first_word;
+ logic streaming_first_word_received;
+ logic streaming_last_word_sent;
+
+ if (ENABLE_INPUT_STREAMING) begin
+ // Cross streaming-enable signal from CSR domain (DDR) to AXI
+ if (ENABLE_OUTPUT_STREAMER & ENABLE_ON_CHIP_PARAMETERS) begin
+ // In this case, CSR doesn't have input/output address to start inference and
+ // inference does not wait for a descriptor to be read.
+ // So wait for dedicated CSR state; otherwise, inference will be started by
+ // writing the IO buffer address.
+ dla_clock_cross_full_sync cc_streaming_active (
+ .clk_src(clk_ddr),
+ .i_src_async_resetn(1'b1),
+ .i_src_data(streaming_active),
+ .o_src_data(),
+
+ .clk_dst(clk_axi),
+ .i_dst_async_resetn(1'b1),
+ .o_dst_data(axi_streaming_active)
+ );
+ end else begin
+ assign axi_streaming_active = 1;
+ end
+
+ dla_input_streamer #(
+ .TDATA_WIDTH(AXI_ISTREAM_DATA_WIDTH),
+ .FIFO_DEPTH(AXI_ISTREAM_FIFO_DEPTH),
+ .TID_WIDTH(0),
+ .TDEST_WIDTH(0),
+ .TUSER_WIDTH(0),
+ .LT_ARCH(LT_ARCH),
+ .OUTPUT_WIDTH(INPUT_FEEDER_INPUT_DATA_WIDTH)
+ ) dla_input_streamer_inst (
+ .clk_dla(clk_dla),
+ .clk_ddr(clk_ddr),
+ .clk_axi(clk_axi),
+ .i_resetn_async(w_resetn_async),
+ .i_config_data(config_lt_data_stream),
+ .i_config_valid(config_lt_valid_stream),
+ .o_config_ready(config_lt_ready_stream),
+ .i_streaming_enable(axi_streaming_active),
+ .i_tvalid(i_istream_axi_t_valid),
+ .o_tready(o_istream_axi_t_ready),
+ .i_tdata(i_istream_axi_t_data),
+ // unimplemented AXI-S signals:
+ .i_tstrb(),
+ .i_tkeep(),
+ .i_tlast(),
+ .i_tid(),
+ .i_tdest(),
+ .i_tuser(),
+ .i_twakeup(),
+ // DLA clock signals:
+ .o_istream_data(istream_data),
+ .i_istream_ready(istream_ready),
+ .o_istream_valid(istream_valid),
+ .o_reading_first_word(axi_reading_first_word),
+ .o_param_error(lt_param_error)
+ );
+
+ dla_clock_cross_full_sync cc_reading_first_word (
+ .clk_src(clk_axi),
+ .i_src_async_resetn(1'b1),
+ .i_src_data(axi_reading_first_word),
+ .o_src_data(),
+
+ .clk_dst(clk_ddr),
+ .i_dst_async_resetn(1'b1),
+ .o_dst_data(reading_first_word)
+ );
+
+ end else begin
+ assign istream_valid = 0;
+ assign reading_first_word = 0;
+ assign lt_param_error = 0;
+ end
+
+ if (LAYOUT_TRANSFORM_ENABLE & ~ENABLE_INPUT_STREAMING) begin
+ if (~CONFIG_NETWORK_CROSS_CLOCK[CONFIG_ID_LAYOUT_TRANSFORM]) begin
+ $fatal(1, "Compiling layout transform design without DDR clock-crossing enabled.");
+ end
+ // Then the layout transform is in the DMA module...
+ assign config_lt_valid_ddr = config_network_output_valid[CONFIG_ID_LAYOUT_TRANSFORM];
+ assign config_lt_data_ddr = config_network_output_data [CONFIG_ID_LAYOUT_TRANSFORM];
+ assign config_network_output_ready[CONFIG_ID_LAYOUT_TRANSFORM] = config_lt_ready_ddr;
+
+ assign config_lt_valid_stream = 1'b0;
+ assign config_lt_data_stream = 'x;
+ end else if (LAYOUT_TRANSFORM_ENABLE & ENABLE_INPUT_STREAMING) begin
+ if (~CONFIG_NETWORK_CROSS_CLOCK_AXI[CONFIG_ID_LAYOUT_TRANSFORM]) begin
+ $fatal(1, "Compiling layout transform streaming design without AXI clock-crossing enabled.");
+ end
+ assign config_lt_valid_stream = config_network_output_valid[CONFIG_ID_LAYOUT_TRANSFORM];
+ assign config_lt_data_stream = config_network_output_data [CONFIG_ID_LAYOUT_TRANSFORM];
+ assign config_network_output_ready[CONFIG_ID_LAYOUT_TRANSFORM] = config_lt_ready_stream;
+
+ assign config_lt_valid_ddr = 1'b0;
+ assign config_lt_data_ddr = 'x;
+ end else begin
+ assign config_lt_valid_ddr = 1'b0;
+ assign config_lt_data_ddr = 'x;
+ assign config_lt_valid_stream = 1'b0;
+ assign config_lt_data_stream = 'x;
+ end
+
+ dla_dma #(
+ .CSR_ADDR_WIDTH (CSR_ADDR_WIDTH),
+ .CSR_DATA_BYTES (CSR_DATA_BYTES),
+ .CONFIG_DATA_BYTES (CONFIG_DATA_BYTES),
+ .CONFIG_READER_DATA_BYTES (CONFIG_READER_DATA_BYTES),
+ .FILTER_READER_DATA_BYTES (FILTER_READER_DATA_BYTES),
+ .FEATURE_READER_DATA_BYTES (FEATURE_READER_DATA_BYTES),
+ .FEATURE_WRITER_DATA_BYTES (FEATURE_WRITER_DATA_BYTES),
+ .DDR_ADDR_WIDTH (DDR_ADDR_WIDTH),
+ .DDR_DATA_BYTES (DDR_DATA_BYTES),
+ .DDR_BURST_WIDTH (DDR_BURST_WIDTH),
+ .DDR_READ_ID_WIDTH (DDR_READ_ID_WIDTH),
+ .DEVICE (DEVICE_ENUM),
+ .LT_ARCH (LT_ARCH),
+ .ENABLE_INPUT_STREAMING (ENABLE_INPUT_STREAMING),
+ .ENABLE_OUTPUT_STREAMING (ENABLE_OUTPUT_STREAMER),
+ .ENABLE_ON_CHIP_PARAMETERS (ENABLE_ON_CHIP_PARAMETERS)
+ )
+ dma
+ (
+ .clk_ddr (clk_ddr),
+ .clk_dla (clk_dla),
+ .clk_pcie (clk_pcie),
+ .i_resetn_async (w_resetn_async),
+ .o_interrupt_level (o_interrupt_level),
+ .i_token_error (lt_param_error), //TODO intended for other parts of DLA to communicate to the host that some error has occurred
+ .i_stream_started (reading_first_word), //indicates that the first word of the input stream is being read, synchronized to DDR clock
+ .i_stream_done (ostream_tlast_ddr_clk), // ostream TLAST signal synchronized to the DDR clock
+ .i_stream_received_first_word (streaming_first_word_received),
+ .i_stream_sent_last_word (streaming_last_word_sent),
+ .o_request_ip_reset (reset_request_from_csr), //enables CSR to request reset of coreDLA IP
+ .i_csr_arvalid (i_csr_arvalid),
+ .i_csr_araddr (i_csr_araddr),
+ .o_csr_arready (o_csr_arready),
+ .o_csr_rvalid (o_csr_rvalid),
+ .o_csr_rdata (o_csr_rdata),
+ .i_csr_rready (i_csr_rready),
+ .i_csr_awvalid (i_csr_awvalid),
+ .i_csr_awaddr (i_csr_awaddr),
+ .o_csr_awready (o_csr_awready),
+ .i_csr_wvalid (i_csr_wvalid),
+ .i_csr_wdata (i_csr_wdata),
+ .o_csr_wready (o_csr_wready),
+ .o_csr_bvalid (o_csr_bvalid),
+ .i_csr_bready (i_csr_bready),
+ .o_config_reader_valid (config_network_input_valid),
+ .o_config_reader_data (config_network_input_data),
+ .i_config_reader_ready (config_network_input_ready),
+ .i_config_filter_reader_valid (config_network_output_valid[CONFIG_ID_FILTER_READER]),
+ .i_config_filter_reader_data (config_network_output_data [CONFIG_ID_FILTER_READER]),
+ .o_config_filter_reader_ready (config_network_output_ready[CONFIG_ID_FILTER_READER]),
+ .o_filter_reader_valid (filter_reader_valid),
+ .o_filter_reader_data (filter_reader_data),
+ .i_filter_reader_ready (filter_reader_ready),
+ .i_config_feature_reader_valid (config_network_output_valid[CONFIG_ID_FEATURE_READER]),
+ .i_config_feature_reader_data (config_network_output_data [CONFIG_ID_FEATURE_READER]),
+ .o_config_feature_reader_ready (config_network_output_ready[CONFIG_ID_FEATURE_READER]),
+ .i_config_lt_reader_valid (config_lt_valid_ddr),
+ .i_config_lt_reader_data (config_lt_data_ddr),
+ .o_config_lt_reader_ready (config_lt_ready_ddr),
+ .o_feature_reader_valid (feature_reader_valid),
+ .o_feature_reader_data (feature_reader_data),
+ .i_feature_reader_ready (feature_reader_ready),
+ .i_config_feature_writer_valid (config_network_output_valid[CONFIG_ID_FEATURE_WRITER]),
+ .i_config_feature_writer_data (config_network_output_data [CONFIG_ID_FEATURE_WRITER]),
+ .o_config_feature_writer_ready (config_network_output_ready[CONFIG_ID_FEATURE_WRITER]),
+ .i_feature_writer_valid (feature_writer_valid),
+ .i_feature_writer_data (feature_writer_data),
+ .o_feature_writer_ready (feature_writer_ready),
+ .o_debug_network_arvalid (debug_network_csr_arvalid),
+ .o_debug_network_araddr (debug_network_csr_araddr),
+ .i_debug_network_arready (debug_network_csr_arready),
+ .i_debug_network_rvalid (debug_network_csr_rvalid),
+ .i_debug_network_rdata (debug_network_csr_rdata),
+ .o_debug_network_rready (debug_network_csr_rready),
+ .o_ddr_arvalid (o_ddr_arvalid),
+ .o_ddr_araddr (o_ddr_araddr),
+ .o_ddr_arlen (o_ddr_arlen),
+ .o_ddr_arsize (o_ddr_arsize),
+ .o_ddr_arburst (o_ddr_arburst),
+ .o_ddr_arid (o_ddr_arid),
+ .i_ddr_arready (i_ddr_arready),
+ .i_ddr_rvalid (i_ddr_rvalid),
+ .i_ddr_rdata (i_ddr_rdata),
+ .i_ddr_rid (i_ddr_rid),
+ .o_ddr_rready (o_ddr_rready),
+ .o_ddr_awvalid (o_ddr_awvalid),
+ .o_ddr_awaddr (o_ddr_awaddr),
+ .o_ddr_awlen (o_ddr_awlen),
+ .o_ddr_awsize (o_ddr_awsize),
+ .o_ddr_awburst (o_ddr_awburst),
+ .i_ddr_awready (i_ddr_awready),
+ .o_ddr_wvalid (o_ddr_wvalid),
+ .o_ddr_wdata (o_ddr_wdata),
+ .o_ddr_wstrb (o_ddr_wstrb),
+ .o_ddr_wlast (o_ddr_wlast),
+ .i_ddr_wready (i_ddr_wready),
+ .i_ddr_bvalid (i_ddr_bvalid),
+ .o_ddr_bready (o_ddr_bready),
+ .o_streaming_active (streaming_active)
+ );
+
+ logic raw_feature_writer_valid;
+ logic [8*FEATURE_WRITER_DATA_BYTES-1:0] raw_feature_writer_data;
+ logic raw_feature_writer_ready;
+ logic raw_feature_writer_full;
+ logic feature_writer_empty;
+
+ logic xbar_dout0_valid;
+ logic [AUX_OUTPUT_DATA_WIDTHS[0]-1:0] xbar_dout0_data;
+ logic [AUX_OUTPUT_DATA_WIDTHS[0]-1:0] xbar_demuxed_data;
+ logic xbar_dout0_ready;
+ logic xbar_dout0_done;
+
+ logic xbar_dout1_valid;
+ logic [AUX_OUTPUT_DATA_WIDTHS[0]-1:0] xbar_dout1_data;
+ logic xbar_dout1_ready;
+
+ dla_pe_array_system_de5a_area_A10 #(
+ .SEQUENCER_ARCH(SEQUENCER_ARCH),
+ .SCRATCHPAD_ARCH(SCRATCHPAD_ARCH),
+ .PE_ARRAY_ARCH(PE_ARRAY_ARCH),
+ .EXIT_FIFO_ARCH(EXIT_FIFO_ARCH),
+ .INPUT_FEEDER_ARCH(INPUT_FEEDER_ARCH),
+
+ .CONFIG_WIDTH(CONFIG_WIDTH),
+ .PE_ARRAY_OUTPUT_DATA_WIDTH(PE_ARRAY_OUTPUT_DATA_WIDTH),
+ .INPUT_FEEDER_INPUT_DATA_WIDTH(INPUT_FEEDER_INPUT_DATA_WIDTH),
+ .FEATURE_READER_WIDTH(FEATURE_READER_WIDTH),
+ .FILTER_READER_WIDTH(FILTER_READER_WIDTH),
+ .SCRATCHPAD_LATENCY(SCRATCHPAD_LATENCY)
+ ) pe_array_system (
+ .clk (clk_dla),
+ .i_aresetn (w_resetn_async),
+
+ .i_feeder_mux_config_data (config_network_output_data [CONFIG_ID_INPUT_FEEDER_MUX]),
+ .o_feeder_mux_config_ready (config_network_output_ready[CONFIG_ID_INPUT_FEEDER_MUX]),
+ .i_feeder_mux_config_valid (config_network_output_valid[CONFIG_ID_INPUT_FEEDER_MUX]),
+ .i_feeder_writer_config_data (config_network_output_data [CONFIG_ID_INPUT_FEEDER_WRITER]),
+ .o_feeder_writer_config_ready(config_network_output_ready[CONFIG_ID_INPUT_FEEDER_WRITER]),
+ .i_feeder_writer_config_valid(config_network_output_valid[CONFIG_ID_INPUT_FEEDER_WRITER]),
+ .i_feeder_in_config_data (config_network_output_data [CONFIG_ID_INPUT_FEEDER_IN]),
+ .o_feeder_in_config_ready (config_network_output_ready[CONFIG_ID_INPUT_FEEDER_IN]),
+ .i_feeder_in_config_valid (config_network_output_valid[CONFIG_ID_INPUT_FEEDER_IN]),
+ .i_feeder_reader_config_data (config_network_output_data [CONFIG_ID_INPUT_FEEDER_READER]),
+ .o_feeder_reader_config_ready(config_network_output_ready[CONFIG_ID_INPUT_FEEDER_READER]),
+ .i_feeder_reader_config_valid(config_network_output_valid[CONFIG_ID_INPUT_FEEDER_READER]),
+ .i_feeder_out_config_data (config_network_output_data [CONFIG_ID_INPUT_FEEDER_OUT]),
+ .o_feeder_out_config_ready (config_network_output_ready[CONFIG_ID_INPUT_FEEDER_OUT]),
+ .i_feeder_out_config_valid (config_network_output_valid[CONFIG_ID_INPUT_FEEDER_OUT]),
+
+ .i_feature_input_data (feature_reader_data),
+ .o_feature_input_ready (feature_reader_ready),
+ .i_feature_input_valid (feature_reader_valid),
+
+ .i_istream_data (istream_data),
+ .o_istream_ready (istream_ready),
+ .i_istream_valid (istream_valid),
+
+ .i_filter_data (filter_reader_data),
+ .o_filter_ready (filter_reader_ready),
+ .i_filter_valid (filter_reader_valid),
+
+ .i_xbar_writeback_input_data (aux_data),
+ .o_xbar_writeback_input_ready(aux_ready),
+ .i_xbar_writeback_input_valid(aux_valid),
+
+ .o_pe_array_output_data (pe_array_output_data),
+ .i_pe_array_output_ready (pe_array_output_ready),
+ .o_pe_array_output_valid (pe_array_output_valid),
+
+ .o_pc_input_feeder_to_sequencer_valid (pc_input_feeder_to_sequencer_valid),
+ .o_pc_input_feeder_to_sequencer_ready (pc_input_feeder_to_sequencer_ready),
+
+ .o_first_word_received (streaming_first_word_received)
+ );
+
+ localparam int MAX_XBAR_INTERFACE_PAIRS = NUMBER_OF_KERNELS+1;
+ localparam int XBAR_WA_GROUP_NUM = 1;//PE_ARRAY_ARCH.NUM_LANES;
+ localparam int XBAR_WA_GROUP_DELAY = PE_ARRAY_ARCH.GROUP_DELAY;
+ localparam int WA_ELEMENT_WIDTH = 1;
+
+ logic [MAX_XBAR_INTERFACE_PAIRS-1:0] din_to_xbar_valid;
+ logic [AUX_MAX_DATABUS_WIDTH -1:0] din_to_xbar_data_w[MAX_XBAR_INTERFACE_PAIRS-1:0];
+ logic [MAX_XBAR_INTERFACE_PAIRS-1:0] din_to_xbar_ready;
+
+ logic [MAX_XBAR_INTERFACE_PAIRS-1:1] dout_from_xbar_valid_w;
+ logic [AUX_MAX_DATABUS_WIDTH -1:0] dout_from_xbar_data_w [MAX_XBAR_INTERFACE_PAIRS-1:1];
+ logic [MAX_XBAR_INTERFACE_PAIRS-1:1] dout_from_xbar_ready;
+
+ // Width Adapter for the output signal from PE Array
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (PE_ARRAY_OUTPUT_DATA_WIDTH),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS (AUX_MAX_DATABUS_WIDTH ),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_pe_output_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (pe_array_output_ready),
+ .i_din_valid (pe_array_output_valid),
+ .i_din_data (pe_array_output_data ),
+ .i_dout_ready (din_to_xbar_ready[XBAR_ID_PE_ARRAY] ),
+ .o_dout_valid (din_to_xbar_valid[XBAR_ID_PE_ARRAY] ),
+ .o_dout_data (din_to_xbar_data_w[XBAR_ID_PE_ARRAY])
+ );
+
+ dla_xbar #(
+ .NUMBER_OF_KERNELS (NUMBER_OF_KERNELS ),
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .CONFIG_BUS_WIDTH (CONFIG_WIDTH ),
+ .DEBUG_BUS_WIDTH (DEBUG_NETWORK_DATA_WIDTH ),
+ .DEBUG_ADDR_WIDTH (DEBUG_NETWORK_ADDR_LOWER ),
+ .AUX_XBAR_MUX_OUTPUT_PIPELINE_STAGES (AUX_XBAR_MUX_OUTPUT_PIPELINE_STAGES ),
+ .AUX_XBAR_NONSTALLABLE_OUTPUT_PIPELINE_STAGES (AUX_XBAR_NONSTALLABLE_OUTPUT_PIPELINE_STAGES),
+ .AUX_XBAR_OUTPUT_BP_FIFO_DEPTH (AUX_XBAR_OUTPUT_BP_FIFO_DEPTH ),
+ .AUX_GROUP_MAX_DATABUS_WIDTH (AUX_MAX_DATABUS_WIDTH ),
+ .AUX_XBAR_INPUT_COUNTER_WIDTH (AUX_XBAR_INPUT_COUNTER_WIDTH ),
+ .AUX_XBAR_OUTPUT_COUNTER_WIDTH (AUX_XBAR_OUTPUT_COUNTER_WIDTH ),
+ .AUX_INPUT_DATA_WIDTHS (AUX_INPUT_DATA_WIDTHS ),
+ .AUX_OUTPUT_DATA_WIDTHS (AUX_OUTPUT_DATA_WIDTHS ),
+ .XBAR_KERNEL_BYPASS_FEATURE_ENABLE (XBAR_KERNEL_BYPASS_FEATURE_ENABLE ),
+ .AUX_KERNEL_BYPASSABLE (AUX_KERNEL_BYPASSABLE ),
+ .AUX_KERNEL_CONNECTIVITY_VECTOR (AUX_KERNEL_CONNECTIVITY_VECTOR )
+ ) xbar_inst (
+ .clock (clk_dla ), // All aux-kernels (including Xbar) operate on single clock domain
+ .i_aresetn (w_resetn_async ), // Async ACTIVE-LOW reset - Will be internally synched using generic-synchronizer
+ .i_config_valid (config_network_output_valid[CONFIG_ID_XBAR]), // Valid signal
+ .i_config_data (config_network_output_data[CONFIG_ID_XBAR] ), // Data bus
+ .o_config_ready (config_network_output_ready[CONFIG_ID_XBAR]), // Ready signal - Prefetches one full set of config to avoid input stalling
+
+ .i_debug_raddr(), // Debug AXI read-address port
+ .i_debug_raddr_valid(),
+ .o_debug_raddr(), // Debug AXI read-address port response
+ .i_debug_rdata(), // Debug AXI read-data port response
+ .o_debug_rdata(), // Debug AXI read-data port
+ .o_debug_rdata_valid(),
+
+ //Xbar inputs (includes data coming from the pe array
+ .i_din_to_xbar_valid (din_to_xbar_valid ),
+ .i_din_to_xbar_data (din_to_xbar_data_w ),
+ .o_din_to_xbar_ready (din_to_xbar_ready ),
+
+ //Outputs from the xbar to aux kernels
+ .o_dout_from_xbar_valid(dout_from_xbar_valid_w ),
+ .o_dout_from_xbar_data (dout_from_xbar_data_w ),
+ .i_dout_from_xbar_ready(dout_from_xbar_ready ),
+
+ //Primary outputs from the xbar to the feature writer/pe array system
+ .o_xbar_dout0_valid (xbar_dout0_valid ),
+ .o_xbar_dout0_data (xbar_dout0_data ),
+ .i_xbar_dout0_ready (xbar_dout0_ready ),
+ .o_xbar_dout0_done (xbar_dout0_done ),
+ .o_xbar_dout1_valid (xbar_dout1_valid ),
+ .o_xbar_dout1_data (xbar_dout1_data ),
+ .i_xbar_dout1_ready (xbar_dout1_ready )
+ );
+
+ // parameter structs shared by all aux modules.
+
+ if (ENABLE_ACTIVATION == 1) begin
+ localparam int AUX_ACTIVATION_OUTPUT_BUFFER_FIFO_CUTOFF =
+ dla_aux_activation_pkg::dla_aa_activation_core_latency(DEVICE_ENUM, ACTIVATION_TYPE);
+ localparam int AUX_ACTIVATION_OUTPUT_BUFFER_FIFO_DEPTH =
+ calc_hld_fifo_depth(AUX_ACTIVATION_OUTPUT_BUFFER_FIFO_CUTOFF);
+
+ localparam dla_aux_activation_pkg::stream_params_t AUX_ACTIVATION_CONFIG_STREAM_PARAMS = '{ // Config stream parameterization
+ DATA_WIDTH : CONFIG_WIDTH};
+
+ localparam dla_aux_activation_pkg::debug_axi_params_t AUX_ACTIVATION_DEBUG_AXI_PARAMS = '{ // Debug AXI bus parameterization
+ DATA_WIDTH : DEBUG_NETWORK_DATA_WIDTH,
+ ADDR_WIDTH : DEBUG_NETWORK_ADDR_LOWER};
+
+ // In future, when activation is relu only, the module may not need
+ // to be connected to config network and can have a confid = -1
+ // But for now still assert that config_id != -1.
+ if (XBAR_ID_ACTIVATION < 1 || CONFIG_ID_ACTIVATION == -1) begin
+ $fatal(1, "Activation is enabled with invalid ID");
+ end
+
+ localparam NATIVE_VECTOR_SIZE = PE_ARRAY_ARCH.NUM_FILTERS * PE_ARRAY_ARCH.NUM_PES * PE_ARRAY_ARCH.NUM_INTERLEAVED_FILTERS;
+
+ localparam dla_interface_pkg::aux_data_pack_params_t AUX_ACTIVATION_DATA_PACK_PARAMS = '{ // Data packing parameterization
+ ELEMENT_BITS : 16, // PE output is always FP16. hardcode this value to 16
+ VECTOR_SIZE : ACTIVATION_K_VECTOR,
+ NATIVE_VECTOR_SIZE : NATIVE_VECTOR_SIZE, // The original pe_k_vector
+ GROUP_SIZE : PE_ARRAY_ARCH.NUM_FEATURES,
+ GROUP_NUM : PE_ARRAY_ARCH.NUM_LANES,
+ GROUP_DELAY : ACTIVATION_GROUP_DELAY}; // temporarily set to 1 by arch_param.cpp
+
+ // Todo: properly parameterize it
+ localparam dla_aux_activation_pkg::aux_generic_params_t AUX_ACTIVATION_GENERIC_PARAMS = '{ // Parameterization common among all aux blocks
+ INPUT_BUFFER_REG_STAGES : 1,
+ OUTPUT_BUFFER_FIFO_CUTOFF : AUX_ACTIVATION_OUTPUT_BUFFER_FIFO_CUTOFF,
+ OUTPUT_BUFFER_FIFO_DEPTH : AUX_ACTIVATION_OUTPUT_BUFFER_FIFO_DEPTH,
+ COMMAND_BUFFER_DEPTH : 1,
+ PER_GROUP_CONTROL : 0,
+ DEBUG_LEVEL : 0,
+ DEBUG_ID : 0,
+ DEBUG_EVENT_DEPTH : 0};
+
+ localparam dla_aux_activation_pkg::aux_special_params_t AUX_ACTIVATION_SPECIAL_PARAMS = '{ // Parameterization special to this aux blocks
+ ENABLE_ACTIVATIONS : ACTIVATION_TYPE,
+ MAX_TILE_WIDTH : AUX_MAX_TILE_WIDTH,
+ MAX_TILE_HEIGHT : AUX_MAX_TILE_HEIGHT,
+ MAX_TILE_CHANNELS : AUX_MAX_TILE_CHANNELS / NATIVE_VECTOR_SIZE, // TODO: commonize this across aux modules
+ PARAM_CACHE_DEPTH : ACTIVATION_PARAM_CACHE_DEPTH,
+ ENABLE_DSP_MULT : ACTIVATION_ENABLE_DSP_MULT, // temporarily set to 0 by arch_param.cpp
+ ENABLE_DSP_CONV : ACTIVATION_ENABLE_DSP_CONV, // temporarily set to 0 by arch_param.cpp
+ DEVICE : DEVICE_ENUM};
+
+ // config data
+ logic [AUX_ACTIVATION_CONFIG_STREAM_PARAMS.DATA_WIDTH-1:0] config_stream;
+ logic config_stream_valid;
+ assign config_stream = config_network_output_data[CONFIG_ID_ACTIVATION];
+ assign config_stream_valid = config_network_output_valid[CONFIG_ID_ACTIVATION];
+ // config response
+ dla_aux_activation_pkg::generic_response_t config_response;
+ assign config_network_output_ready[CONFIG_ID_ACTIVATION] = config_response.ready;
+
+ // This function aux_params_to_bus_width() resturns the total bus width of AUX data bus based on the different elements of the bus
+ localparam dla_aux_activation_pkg::stream_params_t DATA_STREAM_PARAMS = '{DATA_WIDTH : dla_aux_activation_pkg::aux_params_to_bus_width(AUX_ACTIVATION_DATA_PACK_PARAMS) };
+
+ // input data
+ logic [DATA_STREAM_PARAMS.DATA_WIDTH-1:0] activation_input_stream;
+ logic activation_input_stream_valid;
+ // input response
+ dla_aux_activation_pkg::generic_response_t activation_input_response;
+
+ // output data
+ logic [DATA_STREAM_PARAMS.DATA_WIDTH-1:0] activation_output_stream;
+ logic activation_output_stream_valid;
+ // output response
+ dla_aux_activation_pkg::generic_response_t activation_output_response;
+
+ // NOTE:: For aux-kernels, data-bus width of the side of WA facing the Xbar is derived based on the
+ // parameter array containing all input/output bus widths of kernels.
+ // - [0] location of AUX_INPUT_DATA_WIDTHS correspondes to PII/PE-Array-Output
+ // - [0] location of AUX_OUTPUT_DATA_WIDTHS correspondes to POI
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (AUX_OUTPUT_DATA_WIDTHS[XBAR_ID_ACTIVATION]),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(dla_aux_activation_pkg::aux_params_to_bus_width(AUX_ACTIVATION_DATA_PACK_PARAMS)),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_relu_input_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (dout_from_xbar_ready[XBAR_ID_ACTIVATION] ),
+ .i_din_valid (dout_from_xbar_valid_w[XBAR_ID_ACTIVATION]),
+ .i_din_data (dout_from_xbar_data_w[XBAR_ID_ACTIVATION] ),
+ .i_dout_ready(activation_input_response.ready ),
+ .o_dout_valid(activation_input_stream_valid ),
+ .o_dout_data (activation_input_stream )
+ );
+
+ dla_aux_activation_top #(
+ .AUX_DATA_PACK_PARAMS(AUX_ACTIVATION_DATA_PACK_PARAMS),
+ .CONFIG_STREAM_PARAMS(AUX_ACTIVATION_CONFIG_STREAM_PARAMS),
+ .DEBUG_AXI_PARAMS(AUX_ACTIVATION_DEBUG_AXI_PARAMS),
+ .AUX_GENERIC_PARAMS(AUX_ACTIVATION_GENERIC_PARAMS),
+ .AUX_SPECIAL_PARAMS(AUX_ACTIVATION_SPECIAL_PARAMS)
+ ) aux_activation_inst (
+ .clk (clk_dla), // Clock
+ .i_aresetn (w_resetn_async), // Asynchronous reset, active low
+ .i_data (activation_input_stream), // Data input stream port
+ .i_data_valid (activation_input_stream_valid),
+ .o_data (activation_input_response), // Data input stream port response
+ .i_result (activation_output_response), // Result output stream port response
+ .o_result (activation_output_stream), // Result output stream port
+ .o_result_valid (activation_output_stream_valid),
+ .i_config (config_stream), // Config stream port
+ .i_config_valid (config_stream_valid),
+ .o_config (config_response), // Config stream port response
+ .i_debug_raddr (),
+ .i_debug_raddr_valid(),
+ .o_debug_raddr (),
+ .i_debug_rdata (),
+ .o_debug_rdata (),
+ .o_debug_rdata_valid()
+ );
+
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (dla_aux_activation_pkg::aux_params_to_bus_width(AUX_ACTIVATION_DATA_PACK_PARAMS)),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(AUX_INPUT_DATA_WIDTHS[XBAR_ID_ACTIVATION]),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_relu_output_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (activation_output_response.ready ),
+ .i_din_valid (activation_output_stream_valid ),
+ .i_din_data (activation_output_stream ),
+ .i_dout_ready(din_to_xbar_ready[XBAR_ID_ACTIVATION] ),
+ .o_dout_valid(din_to_xbar_valid[XBAR_ID_ACTIVATION] ),
+ .o_dout_data (din_to_xbar_data_w[XBAR_ID_ACTIVATION])
+ );
+
+ // Snoop signals for the profiling counters
+ assign pc_config_to_activation_valid = config_stream_valid;
+ assign pc_config_to_activation_ready = config_response.ready;
+ assign pc_xbar_to_activation_valid = activation_input_stream_valid;
+ assign pc_xbar_to_activation_ready = activation_input_response.ready;
+ assign pc_activation_to_xbar_valid = activation_output_stream_valid;
+ assign pc_activation_to_xbar_ready = activation_output_response.ready;
+ end
+ else begin
+ if (XBAR_ID_ACTIVATION != -1 || CONFIG_ID_ACTIVATION != -1) begin
+ $fatal(1, "Activation has an valid ID but it is disabled");
+ end
+
+ // Snoop signals for the profiling counters
+ assign pc_config_to_activation_valid = 1'b0;
+ assign pc_config_to_activation_ready = 1'b0;
+ assign pc_xbar_to_activation_valid = 1'b0;
+ assign pc_xbar_to_activation_ready = 1'b0;
+ assign pc_activation_to_xbar_valid = 1'b0;
+ assign pc_activation_to_xbar_ready = 1'b0;
+ end
+
+ if (ENABLE_POOL == 1) begin
+
+ localparam int AUX_POOL_INPUT_BUFFER_REG_STAGES = 1;
+
+ localparam int AUX_POOL_NATIVE_VECTOR_SIZE =
+ PE_ARRAY_ARCH.NUM_FILTERS * PE_ARRAY_ARCH.NUM_PES * PE_ARRAY_ARCH.NUM_INTERLEAVED_FILTERS;
+
+ localparam dla_aux_pool_pkg::stream_params_t AUX_POOL_CONFIG_STREAM_PARAMS = '{ // Config stream parameterization
+ DATA_WIDTH : CONFIG_WIDTH};
+
+ localparam dla_aux_pool_pkg::debug_axi_params_t AUX_POOL_DEBUG_AXI_PARAMS = '{ // Debug AXI bus parameterization
+ DATA_WIDTH : DEBUG_NETWORK_DATA_WIDTH,
+ ADDR_WIDTH : DEBUG_NETWORK_ADDR_LOWER};
+
+ localparam dla_interface_pkg::aux_data_pack_params_t AUX_POOL_DATA_PACK_PARAMS = '{ // Data packing parameterization
+ ELEMENT_BITS : 16, // PE output is always FP16. hardcode this value to 16
+ VECTOR_SIZE : POOL_K_VECTOR,
+ NATIVE_VECTOR_SIZE : AUX_POOL_NATIVE_VECTOR_SIZE, // The original pe_k_vector
+ GROUP_SIZE : PE_ARRAY_ARCH.NUM_FEATURES,
+ GROUP_NUM : PE_ARRAY_ARCH.NUM_LANES,
+ GROUP_DELAY : POOL_GROUP_DELAY}; // temporarily set to 1 by arch_param.cpp
+
+ localparam dla_aux_pool_pkg::aux_special_params_t AUX_POOL_SPECIAL_PARAMS = '{ // Parameterization special to this aux blocks
+ POOL_TYPE : POOL_TYPE,
+ MAX_WINDOW_HEIGHT : POOL_MAX_WINDOW_HEIGHT,
+ MAX_WINDOW_WIDTH : POOL_MAX_WINDOW_WIDTH,
+ MAX_STRIDE_VERTICAL : POOL_MAX_STRIDE_VERTICAL,
+ MAX_STRIDE_HORIZONTAL: POOL_MAX_STRIDE_HORIZONTAL,
+ MAX_TILE_HEIGHT : AUX_MAX_TILE_HEIGHT,
+ MAX_TILE_WIDTH : AUX_MAX_TILE_WIDTH,
+ MAX_TILE_CHANNELS : AUX_MAX_TILE_CHANNELS,
+ CONFIG_ID_WIDTH : POOL_CONFIG_ID_WIDTH,
+ PIPELINE_REG_NUM : POOL_PIPELINE_REG_NUM};
+
+ localparam int AUX_POOL_OUTPUT_BUFFER_FIFO_CUTOFF = aux_pool_calc_core_latency(AUX_POOL_SPECIAL_PARAMS, AUX_POOL_DATA_PACK_PARAMS);
+ localparam int AUX_POOL_OUTPUT_BUFFER_FIFO_DEPTH = calc_hld_fifo_depth(AUX_POOL_OUTPUT_BUFFER_FIFO_CUTOFF);
+
+ localparam dla_aux_pool_pkg::aux_generic_params_t AUX_POOL_GENERIC_PARAMS = '{ // Parameterization common among all aux blocks
+ INPUT_BUFFER_REG_STAGES : AUX_POOL_INPUT_BUFFER_REG_STAGES,
+ OUTPUT_BUFFER_FIFO_CUTOFF : AUX_POOL_OUTPUT_BUFFER_FIFO_CUTOFF,
+ OUTPUT_BUFFER_FIFO_DEPTH : AUX_POOL_OUTPUT_BUFFER_FIFO_DEPTH,
+ COMMAND_BUFFER_DEPTH : 1,
+ PER_GROUP_CONTROL : 0,
+ DEBUG_LEVEL : 0,
+ DEBUG_ID : 0,
+ DEBUG_EVENT_DEPTH : 0};
+
+ // config data
+ logic [AUX_POOL_CONFIG_STREAM_PARAMS.DATA_WIDTH-1:0] config_stream;
+ logic config_stream_valid;
+ assign config_stream = config_network_output_data[CONFIG_ID_POOL];
+ assign config_stream_valid = config_network_output_valid[CONFIG_ID_POOL];
+ // config response
+ dla_aux_pool_pkg::generic_response_t config_response;
+ assign config_network_output_ready[CONFIG_ID_POOL] = config_response.ready;
+
+ // This function aux_params_to_bus_width() returns the total bus width of AUX data bus based on the different elements of the bus
+ localparam dla_aux_pool_pkg::stream_params_t DATA_STREAM_PARAMS = '{DATA_WIDTH : dla_aux_pool_pkg::aux_params_to_bus_width(AUX_POOL_DATA_PACK_PARAMS) };
+
+ // input data
+ logic [DATA_STREAM_PARAMS.DATA_WIDTH-1:0] pool_input_stream;
+ logic pool_input_stream_valid;
+ // input response
+ dla_aux_pool_pkg::generic_response_t pool_input_response;
+
+ // output data
+ logic [DATA_STREAM_PARAMS.DATA_WIDTH-1:0] pool_output_stream;
+ logic pool_output_stream_valid;
+ // output response
+ dla_aux_pool_pkg::generic_response_t pool_output_response;
+
+ // NOTE:: For aux-kernels, data-bus width of the side of WA facing the Xbar is derived based on the
+ // parameter array containing all input/output bus widths of kernels.
+ // - [0] location of AUX_INPUT_DATA_WIDTHS correspondes to PII/PE-Array-Output
+ // - [0] location of AUX_OUTPUT_DATA_WIDTHS correspondes to POI
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (AUX_OUTPUT_DATA_WIDTHS[XBAR_ID_POOL]),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(dla_aux_pool_pkg::aux_params_to_bus_width(AUX_POOL_DATA_PACK_PARAMS)),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_pool_input_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (dout_from_xbar_ready[XBAR_ID_POOL] ),
+ .i_din_valid (dout_from_xbar_valid_w[XBAR_ID_POOL]),
+ .i_din_data (dout_from_xbar_data_w[XBAR_ID_POOL] ),
+ .i_dout_ready(pool_input_response.ready ),
+ .o_dout_valid(pool_input_stream_valid ),
+ .o_dout_data (pool_input_stream )
+ );
+
+ dla_aux_pool_top #(
+ .AUX_DATA_PACK_PARAMS(AUX_POOL_DATA_PACK_PARAMS),
+ .CONFIG_STREAM_PARAMS(AUX_POOL_CONFIG_STREAM_PARAMS),
+ .DEBUG_AXI_PARAMS(AUX_POOL_DEBUG_AXI_PARAMS),
+ .AUX_GENERIC_PARAMS(AUX_POOL_GENERIC_PARAMS),
+ .AUX_SPECIAL_PARAMS(AUX_POOL_SPECIAL_PARAMS)
+ ) pool_inst (
+ .clk(clk_dla) , // Clock
+ .i_aresetn(w_resetn_async) , // Active-low sync reset
+ //
+ .i_data(pool_input_stream) , // Data input stream port
+ .i_data_valid(pool_input_stream_valid),
+ .o_data(pool_input_response) , // Data input stream port response
+ //
+ .i_result(pool_output_response) , // Result output stream port response
+ .o_result(pool_output_stream) , // Result output stream port
+ .o_result_valid(pool_output_stream_valid),
+ //
+
+ .i_config(config_stream) , // Config stream port
+ .i_config_valid(config_stream_valid),
+ .o_config(config_response) , // Config stream port response
+ //
+ .i_debug_raddr(),
+ .i_debug_raddr_valid(),
+ .o_debug_raddr(),
+ .i_debug_rdata(),
+ .o_debug_rdata(),
+ .o_debug_rdata_valid()
+ );
+
+
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (dla_aux_pool_pkg::aux_params_to_bus_width(AUX_POOL_DATA_PACK_PARAMS)),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(AUX_INPUT_DATA_WIDTHS[XBAR_ID_POOL]),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_pool_output_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (pool_output_response.ready ),
+ .i_din_valid (pool_output_stream_valid ),
+ .i_din_data (pool_output_stream ),
+ .i_dout_ready(din_to_xbar_ready[XBAR_ID_POOL] ),
+ .o_dout_valid(din_to_xbar_valid[XBAR_ID_POOL] ),
+ .o_dout_data (din_to_xbar_data_w[XBAR_ID_POOL])
+ );
+
+ // Snoop signals for the profiling counters
+ assign pc_config_to_pool_valid = config_stream_valid;
+ assign pc_config_to_pool_ready = config_response.ready;
+ assign pc_xbar_to_pool_valid = pool_input_stream_valid;
+ assign pc_xbar_to_pool_ready = pool_input_response.ready;
+ assign pc_pool_to_xbar_valid = pool_output_stream_valid;
+ assign pc_pool_to_xbar_ready = pool_output_response.ready;
+ end
+ else begin
+ // Snoop signals for the profiling counters
+ assign pc_config_to_pool_valid = 1'b0;
+ assign pc_config_to_pool_ready = 1'b0;
+ assign pc_xbar_to_pool_valid = 1'b0;
+ assign pc_xbar_to_pool_ready = 1'b0;
+ assign pc_pool_to_xbar_valid = 1'b0;
+ assign pc_pool_to_xbar_ready = 1'b0;
+ end
+
+ if (ENABLE_DEPTHWISE == 1) begin
+
+ localparam int AUX_DEPTHWISE_INPUT_BUFFER_REG_STAGES = 1;
+
+ localparam int AUX_DEPTHWISE_NATIVE_VECTOR_SIZE =
+ PE_ARRAY_ARCH.NUM_FILTERS * PE_ARRAY_ARCH.NUM_PES * PE_ARRAY_ARCH.NUM_INTERLEAVED_FILTERS;
+
+ localparam dla_aux_depthwise_pkg::stream_params_t AUX_DEPTHWISE_CONFIG_STREAM_PARAMS = '{ // Config stream parameterization
+ DATA_WIDTH : CONFIG_WIDTH};
+
+ localparam dla_aux_depthwise_pkg::debug_axi_params_t AUX_DEPTHWISE_DEBUG_AXI_PARAMS = '{ // Debug AXI bus parameterization
+ DATA_WIDTH : DEBUG_NETWORK_DATA_WIDTH,
+ ADDR_WIDTH : DEBUG_NETWORK_ADDR_LOWER};
+
+ localparam dla_interface_pkg::aux_data_pack_params_t AUX_DEPTHWISE_DATA_PACK_PARAMS = '{ // Data packing parameterization
+ ELEMENT_BITS : 16, // PE output is always FP16. hardcode this value to 16
+ VECTOR_SIZE : DEPTHWISE_K_VECTOR,
+ NATIVE_VECTOR_SIZE : AUX_DEPTHWISE_NATIVE_VECTOR_SIZE, // The original pe_k_vector
+ GROUP_SIZE : PE_ARRAY_ARCH.NUM_FEATURES,
+ GROUP_NUM : PE_ARRAY_ARCH.NUM_LANES,
+ GROUP_DELAY : DEPTHWISE_GROUP_DELAY}; // temporarily set to 1 by arch_param.cpp
+
+ localparam dla_aux_depthwise_pkg::aux_special_params_t AUX_DEPTHWISE_SPECIAL_PARAMS = '{ // Parameterization special to this aux blocks
+ DEPTHWISE_TYPE : DEPTHWISE_TYPE,
+ MAX_WINDOW_HEIGHT : DEPTHWISE_MAX_WINDOW_HEIGHT,
+ MAX_WINDOW_WIDTH : DEPTHWISE_MAX_WINDOW_WIDTH,
+ MAX_STRIDE_VERTICAL : DEPTHWISE_MAX_STRIDE_VERTICAL,
+ MAX_STRIDE_HORIZONTAL : DEPTHWISE_MAX_STRIDE_HORIZONTAL,
+ MAX_TILE_HEIGHT : AUX_MAX_TILE_HEIGHT,
+ MAX_TILE_WIDTH : AUX_MAX_TILE_WIDTH,
+ MAX_TILE_CHANNELS : AUX_MAX_TILE_CHANNELS,
+ CONFIG_ID_WIDTH : DEPTHWISE_CONFIG_ID_WIDTH,
+ PIPELINE_REG_NUM : DEPTHWISE_PIPELINE_REG_NUM,
+ MAX_DILATION_VERTICAL : DEPTHWISE_MAX_DILATION_VERTICAL,
+ MAX_DILATION_HORIZONTAL : DEPTHWISE_MAX_DILATION_HORIZONTAL};
+
+ localparam int AUX_DEPTHWISE_OUTPUT_BUFFER_FIFO_CUTOFF = aux_depthwise_calc_core_latency(AUX_DEPTHWISE_SPECIAL_PARAMS,
+ AUX_DEPTHWISE_DATA_PACK_PARAMS,
+ DEPTHWISE_VECTOR_ARCH_INFO);
+ localparam int AUX_DEPTHWISE_OUTPUT_BUFFER_FIFO_DEPTH = calc_hld_fifo_depth(AUX_DEPTHWISE_OUTPUT_BUFFER_FIFO_CUTOFF);
+
+ localparam dla_aux_depthwise_pkg::aux_generic_params_t AUX_DEPTHWISE_GENERIC_PARAMS = '{ // Parameterization common among all aux blocks
+ INPUT_BUFFER_REG_STAGES : AUX_DEPTHWISE_INPUT_BUFFER_REG_STAGES,
+ OUTPUT_BUFFER_FIFO_CUTOFF : AUX_DEPTHWISE_OUTPUT_BUFFER_FIFO_CUTOFF,
+ OUTPUT_BUFFER_FIFO_DEPTH : AUX_DEPTHWISE_OUTPUT_BUFFER_FIFO_DEPTH,
+ COMMAND_BUFFER_DEPTH : 1,
+ PER_GROUP_CONTROL : 0,
+ DEBUG_LEVEL : 0,
+ DEBUG_ID : 0,
+ DEBUG_EVENT_DEPTH : 0};
+
+ // config data
+ logic [AUX_DEPTHWISE_CONFIG_STREAM_PARAMS.DATA_WIDTH-1:0] config_stream;
+ logic config_stream_valid;
+ assign config_stream = config_network_output_data[CONFIG_ID_DEPTHWISE];
+ assign config_stream_valid = config_network_output_valid[CONFIG_ID_DEPTHWISE];
+ // config response
+ dla_aux_depthwise_pkg::generic_response_t config_response;
+ assign config_network_output_ready[CONFIG_ID_DEPTHWISE] = config_response.ready;
+
+ // This function aux_params_to_bus_width() returns the total bus width of AUX data bus based on the different elements of the bus
+ localparam dla_aux_depthwise_pkg::stream_params_t DATA_STREAM_PARAMS = '{DATA_WIDTH : dla_aux_depthwise_pkg::aux_params_to_bus_width(AUX_DEPTHWISE_DATA_PACK_PARAMS) };
+
+ // input data
+ logic [DATA_STREAM_PARAMS.DATA_WIDTH-1:0] depthwise_input_stream;
+ logic depthwise_input_stream_valid;
+ // input response
+ dla_aux_depthwise_pkg::generic_response_t depthwise_input_response;
+
+ // output data
+ logic [DATA_STREAM_PARAMS.DATA_WIDTH-1:0] depthwise_output_stream;
+ logic depthwise_output_stream_valid;
+ // output response
+ dla_aux_depthwise_pkg::generic_response_t depthwise_output_response;
+
+ // NOTE:: For aux-kernels, data-bus width of the side of WA facing the Xbar is derived based on the
+ // parameter array containing all input/output bus widths of kernels.
+ // - [0] location of AUX_INPUT_DATA_WIDTHS correspondes to PII/PE-Array-Output
+ // - [0] location of AUX_OUTPUT_DATA_WIDTHS correspondes to POI
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (AUX_OUTPUT_DATA_WIDTHS[XBAR_ID_DEPTHWISE]),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(dla_aux_depthwise_pkg::aux_params_to_bus_width(AUX_DEPTHWISE_DATA_PACK_PARAMS)),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_depthwise_input_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (dout_from_xbar_ready[XBAR_ID_DEPTHWISE] ),
+ .i_din_valid (dout_from_xbar_valid_w[XBAR_ID_DEPTHWISE]),
+ .i_din_data (dout_from_xbar_data_w[XBAR_ID_DEPTHWISE] ),
+ .i_dout_ready(depthwise_input_response.ready ),
+ .o_dout_valid(depthwise_input_stream_valid ),
+ .o_dout_data (depthwise_input_stream )
+ );
+
+ dla_aux_depthwise_top #(
+ .AUX_DATA_PACK_PARAMS(AUX_DEPTHWISE_DATA_PACK_PARAMS),
+ .CONFIG_STREAM_PARAMS(AUX_DEPTHWISE_CONFIG_STREAM_PARAMS),
+ .DEBUG_AXI_PARAMS(AUX_DEPTHWISE_DEBUG_AXI_PARAMS),
+ .AUX_GENERIC_PARAMS(AUX_DEPTHWISE_GENERIC_PARAMS),
+ .AUX_SPECIAL_PARAMS(AUX_DEPTHWISE_SPECIAL_PARAMS),
+ .AUX_DEPTHWISE_VECTOR_ARCH(AUX_DEPTHWISE_VECTOR_ARCH),
+ .DEPTHWISE_VECTOR_ARCH_INFO(DEPTHWISE_VECTOR_ARCH_INFO)
+ ) depthwise_inst (
+ .clk(clk_dla) , // Clock
+ .i_aresetn(w_resetn_async) , // Active-low sync reset
+ //
+ .i_data(depthwise_input_stream) , // Data input stream port
+ .i_data_valid(depthwise_input_stream_valid),
+ .o_data(depthwise_input_response) , // Data input stream port response
+ //
+ .i_result(depthwise_output_response) , // Result output stream port response
+ .o_result(depthwise_output_stream) , // Result output stream port
+ .o_result_valid(depthwise_output_stream_valid),
+ //
+
+ .i_config(config_stream) , // Config stream port
+ .i_config_valid(config_stream_valid),
+ .o_config(config_response) , // Config stream port response
+
+ .i_config_filter_bias_valid (config_network_output_valid[CONFIG_ID_DEPTHWISE_FILTER_BIAS]), // Valid signal
+ .i_config_filter_bias_data (config_network_output_data[CONFIG_ID_DEPTHWISE_FILTER_BIAS] ), // Data bus
+ .o_config_filter_bias_ready (config_network_output_ready[CONFIG_ID_DEPTHWISE_FILTER_BIAS]), // Ready signal - Prefetches one full set of config to avoid input stalling
+
+ //
+ .i_debug_raddr(),
+ .i_debug_raddr_valid(),
+ .o_debug_raddr(),
+ .i_debug_rdata(),
+ .o_debug_rdata(),
+ .o_debug_rdata_valid()
+ );
+
+
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (dla_aux_depthwise_pkg::aux_params_to_bus_width(AUX_DEPTHWISE_DATA_PACK_PARAMS)),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(AUX_INPUT_DATA_WIDTHS[XBAR_ID_DEPTHWISE]),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_depthwise_output_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (depthwise_output_response.ready ),
+ .i_din_valid (depthwise_output_stream_valid ),
+ .i_din_data (depthwise_output_stream ),
+ .i_dout_ready(din_to_xbar_ready[XBAR_ID_DEPTHWISE] ),
+ .o_dout_valid(din_to_xbar_valid[XBAR_ID_DEPTHWISE] ),
+ .o_dout_data (din_to_xbar_data_w[XBAR_ID_DEPTHWISE])
+ );
+ end //ENABLE_DEPTHWISE
+ if (ENABLE_SOFTMAX == 1) begin
+
+ localparam int AUX_SOFTMAX_INPUT_BUFFER_REG_STAGES = 1;
+ localparam int AUX_SOFTMAX_NATIVE_VECTOR_SIZE = 1;
+
+ localparam dla_aux_softmax_pkg::stream_params_t AUX_SOFTMAX_CONFIG_STREAM_PARAMS = '{ // Config stream parameterization
+ DATA_WIDTH : CONFIG_WIDTH};
+
+ localparam dla_aux_softmax_pkg::debug_axi_params_t AUX_SOFTMAX_DEBUG_AXI_PARAMS = '{ // Debug AXI bus parameterization
+ DATA_WIDTH : DEBUG_NETWORK_DATA_WIDTH,
+ ADDR_WIDTH : DEBUG_NETWORK_ADDR_LOWER};
+
+ localparam dla_interface_pkg::aux_data_pack_params_t AUX_SOFTMAX_DATA_PACK_PARAMS = '{ // Data packing parameterization
+ ELEMENT_BITS : 16, // PE output is always FP16. hardcode this value to 16
+ VECTOR_SIZE : 1, // always 1 input at a time
+ NATIVE_VECTOR_SIZE : AUX_SOFTMAX_NATIVE_VECTOR_SIZE, // still should be always 1
+ GROUP_SIZE : PE_ARRAY_ARCH.NUM_FEATURES,
+ GROUP_NUM : PE_ARRAY_ARCH.NUM_LANES,
+ GROUP_DELAY : SOFTMAX_GROUP_DELAY}; // temporarily set to 1 by arch_param.cpp
+
+ localparam dla_aux_softmax_pkg::aux_special_params_t AUX_SOFTMAX_SPECIAL_PARAMS = '{ // Parameterization special to this aux blocks
+ MAX_NUM_CHANNELS : SOFTMAX_MAX_NUM_CHANNELS,
+ DEVICE : DEVICE_ENUM,
+ CONFIG_ID_WIDTH : SOFTMAX_CONFIG_ID_WIDTH};
+
+ localparam int AUX_SOFTMAX_OUTPUT_BUFFER_FIFO_CUTOFF = aux_softmax_calc_core_latency(AUX_SOFTMAX_SPECIAL_PARAMS, AUX_SOFTMAX_DATA_PACK_PARAMS);
+ localparam int AUX_SOFTMAX_OUTPUT_BUFFER_FIFO_DEPTH = calc_hld_fifo_depth(AUX_SOFTMAX_OUTPUT_BUFFER_FIFO_CUTOFF);
+
+ localparam dla_aux_softmax_pkg::aux_generic_params_t AUX_SOFTMAX_GENERIC_PARAMS = '{ // Parameterization common among all aux blocks
+ INPUT_BUFFER_REG_STAGES : AUX_SOFTMAX_INPUT_BUFFER_REG_STAGES,
+ OUTPUT_BUFFER_FIFO_CUTOFF : AUX_SOFTMAX_OUTPUT_BUFFER_FIFO_CUTOFF,
+ OUTPUT_BUFFER_FIFO_DEPTH : AUX_SOFTMAX_OUTPUT_BUFFER_FIFO_DEPTH,
+ COMMAND_BUFFER_DEPTH : 1,
+ PER_GROUP_CONTROL : 0,
+ DEBUG_LEVEL : 0,
+ DEBUG_ID : 0,
+ DEBUG_EVENT_DEPTH : 0};
+
+ // config data
+ logic [AUX_SOFTMAX_CONFIG_STREAM_PARAMS.DATA_WIDTH-1:0] config_stream;
+ logic config_stream_valid;
+ assign config_stream = config_network_output_data[CONFIG_ID_SOFTMAX];
+ assign config_stream_valid = config_network_output_valid[CONFIG_ID_SOFTMAX];
+ // config response
+ dla_aux_softmax_pkg::generic_response_t config_response;
+ assign config_network_output_ready[CONFIG_ID_SOFTMAX] = config_response.ready;
+
+ // This function aux_params_to_bus_width() returns the total bus width of AUX data bus based on the different elements of the bus
+ localparam dla_aux_softmax_pkg::stream_params_t DATA_STREAM_PARAMS = '{DATA_WIDTH : dla_aux_softmax_pkg::aux_params_to_bus_width(AUX_SOFTMAX_DATA_PACK_PARAMS) };
+
+ // input data
+ logic [DATA_STREAM_PARAMS.DATA_WIDTH-1:0] softmax_input_stream;
+ logic softmax_input_stream_valid;
+ // input response
+ dla_aux_softmax_pkg::generic_response_t softmax_input_response;
+
+ // output data
+ logic [DATA_STREAM_PARAMS.DATA_WIDTH-1:0] softmax_output_stream;
+ logic softmax_output_stream_valid;
+ // output response
+ dla_aux_softmax_pkg::generic_response_t softmax_output_response;
+
+ // NOTE:: For aux-kernels, data-bus width of the side of WA facing the Xbar is derived based on the
+ // parameter array containing all input/output bus widths of kernels.
+ // - [0] location of AUX_INPUT_DATA_WIDTHS correspondes to PII/PE-Array-Output
+ // - [0] location of AUX_OUTPUT_DATA_WIDTHS correspondes to POI
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (AUX_OUTPUT_DATA_WIDTHS[XBAR_ID_SOFTMAX]),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(dla_aux_softmax_pkg::aux_params_to_bus_width(AUX_SOFTMAX_DATA_PACK_PARAMS)),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_softmax_input_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (dout_from_xbar_ready[XBAR_ID_SOFTMAX] ),
+ .i_din_valid (dout_from_xbar_valid_w[XBAR_ID_SOFTMAX]),
+ .i_din_data (dout_from_xbar_data_w[XBAR_ID_SOFTMAX] ),
+ .i_dout_ready(softmax_input_response.ready ),
+ .o_dout_valid(softmax_input_stream_valid ),
+ .o_dout_data (softmax_input_stream )
+ );
+
+ dla_aux_softmax_top #(
+ .AUX_DATA_PACK_PARAMS(AUX_SOFTMAX_DATA_PACK_PARAMS),
+ .CONFIG_STREAM_PARAMS(AUX_SOFTMAX_CONFIG_STREAM_PARAMS),
+ .DEBUG_AXI_PARAMS(AUX_SOFTMAX_DEBUG_AXI_PARAMS),
+ .AUX_GENERIC_PARAMS(AUX_SOFTMAX_GENERIC_PARAMS),
+ .AUX_SPECIAL_PARAMS(AUX_SOFTMAX_SPECIAL_PARAMS)
+ ) softmax_inst (
+ .clk(clk_dla) , // Clock
+ .i_aresetn(w_resetn_async) , // Active-low sync reset
+ //
+ .i_data(softmax_input_stream) , // Data input stream port
+ .i_data_valid(softmax_input_stream_valid),
+ .o_data(softmax_input_response) , // Data input stream port response
+ //
+ .i_result(softmax_output_response) , // Result output stream port response
+ .o_result(softmax_output_stream) , // Result output stream port
+ .o_result_valid(softmax_output_stream_valid),
+ //
+
+ .i_config(config_stream) , // Config stream port
+ .i_config_valid(config_stream_valid),
+ .o_config(config_response) , // Config stream port response
+ //
+ .i_debug_raddr(),
+ .i_debug_raddr_valid(),
+ .o_debug_raddr(),
+ .i_debug_rdata(),
+ .o_debug_rdata(),
+ .o_debug_rdata_valid()
+ );
+
+
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (dla_aux_softmax_pkg::aux_params_to_bus_width(AUX_SOFTMAX_DATA_PACK_PARAMS)),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(AUX_INPUT_DATA_WIDTHS[XBAR_ID_SOFTMAX]),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_softmax_output_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (softmax_output_response.ready ),
+ .i_din_valid (softmax_output_stream_valid ),
+ .i_din_data (softmax_output_stream ),
+ .i_dout_ready(din_to_xbar_ready[XBAR_ID_SOFTMAX] ),
+ .o_dout_valid(din_to_xbar_valid[XBAR_ID_SOFTMAX] ),
+ .o_dout_data (din_to_xbar_data_w[XBAR_ID_SOFTMAX])
+ );
+
+ // Snoop signals for the profiling counters
+ assign pc_config_to_softmax_valid = config_stream_valid;
+ assign pc_config_to_softmax_ready = config_response.ready;
+ assign pc_xbar_to_softmax_valid = softmax_input_stream_valid;
+ assign pc_xbar_to_softmax_ready = softmax_input_response.ready;
+ assign pc_softmax_to_xbar_valid = softmax_output_stream_valid;
+ assign pc_softmax_to_xbar_ready = softmax_output_response.ready;
+ end
+ else begin
+ // Snoop signals for the profiling counters
+ assign pc_config_to_softmax_valid = 1'b0;
+ assign pc_config_to_softmax_ready = 1'b0;
+ assign pc_xbar_to_softmax_valid = 1'b0;
+ assign pc_xbar_to_softmax_ready = 1'b0;
+ assign pc_softmax_to_xbar_valid = 1'b0;
+ assign pc_softmax_to_xbar_ready = 1'b0;
+ end
+
+ // output streaming or feature writer selection signals
+ // when output streaming is enabled, xbar output could feed
+ // either the feature writer or the output streamer
+ // in case we have ddr enabled for intermediate layers
+ logic feature_writer_wa_ready;
+ logic xbar_writer_wa_valid;
+
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (AUX_OUTPUT_DATA_WIDTHS[0] ),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(FEATURE_WRITER_WIDTH ),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_raw_feature_writer_input_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (feature_writer_wa_ready ),
+ .i_din_valid (xbar_writer_wa_valid ),
+ .i_din_data (xbar_demuxed_data ),
+ .i_dout_ready(raw_feature_writer_ready),
+ .o_dout_valid(raw_feature_writer_valid),
+ .o_dout_data (raw_feature_writer_data )
+ );
+
+ dla_width_adapter #(
+ .GROUP_NUM (XBAR_WA_GROUP_NUM ),
+ .GROUP_DELAY (XBAR_WA_GROUP_DELAY ),
+ .INPUT_DATA_WIDTH_IN_ELEMENTS (AUX_OUTPUT_DATA_WIDTHS[0] ),
+ .OUTPUT_DATA_WIDTH_IN_ELEMENTS(INPUT_FEEDER_INPUT_DATA_WIDTH ),
+ .ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) wa_aux_input_inst (
+ .clock (clk_dla ),
+ .i_aresetn (w_resetn_async ),
+ .i_flush (1'b0 ),
+ .o_din_ready (xbar_dout1_ready),
+ .i_din_valid (xbar_dout1_valid),
+ .i_din_data (xbar_dout1_data ),
+ .i_dout_ready(aux_ready ),
+ .o_dout_valid(aux_valid ),
+ .o_dout_data (aux_data )
+ );
+
+ if (ENABLE_OUTPUT_STREAMER == 1) begin
+ logic xbar_streamer_wa_valid;
+ logic out_streamer_wa_ready;
+
+ logic xbar_input_done;
+
+ dla_output_streamer # (
+ .CONFIG_WIDTH (CONFIG_WIDTH ),
+ .TDATA_WIDTH (AXI_OSTREAM_DATA_WIDTH ),
+ .TID_WIDTH (AXI_OSTREAM_ID_WIDTH ),
+ .TDEST_WIDTH (AXI_OSTREAM_DEST_WIDTH ),
+ .FIFO_DEPTH (AXI_OSTREAM_FIFO_DEPTH ),
+ .INPUT_WIDTH_ELEMENTS (AUX_OUTPUT_DATA_WIDTHS[0] / PE_ARRAY_ARCH.NUM_LANES ),
+ .INPUT_ELEMENT_WIDTH (WA_ELEMENT_WIDTH )
+ ) output_streamer (
+ .clk_dla(clk_dla),
+ .i_aresetn(w_resetn_async),
+ .i_config_data(config_network_output_data[CONFIG_ID_OUTPUT_STREAMER]),
+ .i_config_valid(config_network_output_valid[CONFIG_ID_OUTPUT_STREAMER]),
+ .o_config_ready(config_network_output_ready[CONFIG_ID_OUTPUT_STREAMER]),
+ .o_ready(out_streamer_wa_ready),
+ .i_valid(xbar_streamer_wa_valid),
+ .i_data(xbar_demuxed_data),
+ .i_data_done(xbar_dout0_done),
+ .o_last_data_received(streaming_last_word_sent),
+ .i_config_flush_data(config_network_output_data[CONFIG_ID_OUTPUT_STREAMER_FLUSH]),
+ .i_config_flush_valid(config_network_output_valid[CONFIG_ID_OUTPUT_STREAMER_FLUSH]),
+ .o_config_flush_ready(config_network_output_ready[CONFIG_ID_OUTPUT_STREAMER_FLUSH]),
+ .o_input_done(xbar_input_done),
+ .clk_axi(clk_axi),
+ .i_axi_aresetn(w_resetn_async),
+ .o_axi_t_valid(o_ostream_axi_t_valid),
+ .i_axi_t_ready(i_ostream_axi_t_ready),
+ .o_axi_t_last(ostream_tlast_axi_clk),
+ .o_axi_t_data(o_ostream_axi_t_data),
+ .o_axi_t_strb(o_ostream_axi_t_strb),
+ .o_axi_t_keep(),
+ .o_axi_t_id(),
+ .o_axi_t_dest(),
+ .o_axi_t_user(),
+ .o_axi_t_wakeup()
+ );
+
+ // Instantiate Demux to steer data either to feature writer or output streamer
+ dla_demux # (
+ .CONFIG_WIDTH(CONFIG_WIDTH),
+ .DATA_WIDTH(AUX_OUTPUT_DATA_WIDTHS[0])
+ ) writer_streamer_demux (
+ .clk_dla(clk_dla),
+ .i_aresetn(w_resetn_async),
+ .i_config_data(config_network_output_data[CONFIG_ID_WRITER_STREAMER_SEL]),
+ .i_config_valid(config_network_output_valid[CONFIG_ID_WRITER_STREAMER_SEL]),
+ .o_config_ready(config_network_output_ready[CONFIG_ID_WRITER_STREAMER_SEL]),
+ .o_ready(xbar_dout0_ready),
+ .i_valid(xbar_dout0_valid),
+ .i_data(xbar_dout0_data),
+ .i_transmitter_done(xbar_input_done),
+ .i_1_ready(feature_writer_wa_ready),
+ .o_1_valid(xbar_writer_wa_valid),
+ .i_2_ready(out_streamer_wa_ready),
+ .o_2_valid(xbar_streamer_wa_valid),
+ .o_data(xbar_demuxed_data)
+ );
+
+ dla_clock_cross_full_sync cc_streaming_active (
+ .clk_src(clk_axi),
+ .i_src_async_resetn(1'b1),
+ .i_src_data(ostream_tlast_axi_clk),
+ .o_src_data(),
+
+ .clk_dst(clk_ddr),
+ .i_dst_async_resetn(1'b1),
+ .o_dst_data(ostream_tlast_ddr_clk)
+ );
+
+ end else begin
+ // If output streaming is not enabled, we default the signals
+ // back to the feature writer
+ assign ostream_tlast_axi_clk = 0;
+ assign ostream_tlast_ddr_clk = 0;
+ assign xbar_dout0_ready = feature_writer_wa_ready;
+ assign xbar_writer_wa_valid = xbar_dout0_valid;
+ assign xbar_demuxed_data = xbar_dout0_data;
+ end
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //dma expects writer data to already be on the ddr clock
+ dla_acl_dcfifo #(
+ .WIDTH (FEATURE_WRITER_WIDTH),
+ .DEPTH (32)
+ ) feature_writer_clock_crosser (
+ .async_resetn (w_resetn_async),
+
+ //write side
+ .wr_clock (clk_dla),
+ .wr_req (raw_feature_writer_valid),
+ .wr_data (raw_feature_writer_data),
+ .wr_full (raw_feature_writer_full),
+
+ //read side
+ .rd_clock (clk_ddr),
+ .rd_empty (feature_writer_empty),
+ .rd_data (feature_writer_data),
+ .rd_ack (feature_writer_ready)
+ );
+ assign raw_feature_writer_ready = ~raw_feature_writer_full;
+ assign feature_writer_valid = ~feature_writer_empty;
+
+ dla_config_network #(
+ .NUM_MODULES (CONFIG_NUM_MODULES),
+ .INPUT_DATA_WIDTH (CONFIG_READER_WIDTH),
+ .MODULE_ID_WIDTH (MODULE_ID_WIDTH),
+ .PAYLOAD_WIDTH (CONFIG_WIDTH),
+ .CONFIG_CHANNEL_WIDTH (CONFIG_CHANNEL_WIDTH),
+ .FIFO_MIN_DEPTH (CONFIG_NETWORK_FIFO_MIN_DEPTH),
+ .NUM_PIPELINE_STAGES (CONFIG_NETWORK_NUM_PIPELINE_STAGES),
+ .CROSS_CLOCK (CONFIG_NETWORK_CROSS_CLOCK),
+ .CROSS_CLOCK_AXI (CONFIG_NETWORK_CROSS_CLOCK_AXI),
+ .QUANTIZE_DEPTHS (CONFIG_NETWORK_QUANTIZE_DEPTHS),
+ .CONFIG_CACHE_DEPTH (CONFIG_CACHE_DEPTH),
+ .ENABLE_DDRFREE_CONFIG (ENABLE_ON_CHIP_PARAMETERS),
+ .ENABLE_INPUT_STREAMING (ENABLE_INPUT_STREAMING),
+ .ENABLE_OUTPUT_STREAMING (ENABLE_OUTPUT_STREAMER),
+ .DEVICE (DEVICE_ENUM)
+ ) config_network (
+ .clk_dla1x (clk_dla),
+ .clk_ddr (clk_ddr),
+ .clk_axi (clk_axi),
+ .i_aresetn (w_resetn_async),
+ .i_valid_ddr (config_network_input_valid),
+ .o_ready (config_network_input_ready), // config network is ready to receive config data
+ .i_data_ddr (config_network_input_data),
+ .o_valid (config_network_output_valid),
+ .i_ready (config_network_output_ready), // module is ready to receive config data from config network
+ .o_data (config_network_output_data)
+ );
+
+ if (ENABLE_DEBUG == 1) begin
+ dla_debug_network #(
+ .DATA_WIDTH (DEBUG_NETWORK_DATA_WIDTH),
+ .ADDR_WIDTH (DEBUG_NETWORK_ADDR_WIDTH),
+ .ADDR_LOWER (DEBUG_NETWORK_ADDR_LOWER),
+ .NUM_MODULES (DEBUG_NETWORK_NUM_MODULES)
+ ) debug_network (
+ .clk (clk_dla),
+ .i_resetn_async (w_resetn_async),
+ .i_csr_arvalid (debug_network_csr_arvalid),
+ .i_csr_araddr (debug_network_csr_araddr),
+ .o_csr_arready (debug_network_csr_arready),
+ .o_csr_rvalid (debug_network_csr_rvalid),
+ .o_csr_rdata (debug_network_csr_rdata),
+ .i_csr_rready (debug_network_csr_rready),
+ .o_dbg_arvalid (debug_network_dbg_arvalid),
+ .o_dbg_araddr (debug_network_dbg_araddr),
+ .i_dbg_arready (debug_network_dbg_arready),
+ .i_dbg_rvalid (debug_network_dbg_rvalid),
+ .i_dbg_rdata (debug_network_dbg_rdata),
+ .o_dbg_rready (debug_network_dbg_rready)
+ );
+
+ dla_interface_profiling_counters #(
+ .NUM_INTERFACES (PC_NUM_INTERFACES),
+ .ADDR_WIDTH (DEBUG_NETWORK_ADDR_LOWER),
+ .DATA_WIDTH (DEBUG_NETWORK_DATA_WIDTH)
+ ) interface_profiling_counters (
+ .clk (clk_dla),
+ .i_resetn_async (w_resetn_async),
+ .i_snoop_valid (pc_snoop_valid),
+ .i_snoop_ready (pc_snoop_ready),
+ .i_dbg_arvalid (debug_network_dbg_arvalid[DEBUG_NETWORK_ID_PROFILING_COUNTERS]),
+ .i_dbg_araddr (debug_network_dbg_araddr [DEBUG_NETWORK_ID_PROFILING_COUNTERS]),
+ .o_dbg_arready (debug_network_dbg_arready[DEBUG_NETWORK_ID_PROFILING_COUNTERS]),
+ .o_dbg_rvalid (debug_network_dbg_rvalid [DEBUG_NETWORK_ID_PROFILING_COUNTERS]),
+ .o_dbg_rdata (debug_network_dbg_rdata [DEBUG_NETWORK_ID_PROFILING_COUNTERS]),
+ .i_dbg_rready (debug_network_dbg_rready [DEBUG_NETWORK_ID_PROFILING_COUNTERS])
+ );
+ end
+ else begin
+ assign debug_network_csr_arready = 1'b0;
+ assign debug_network_csr_rvalid = 1'b0;
+ end
+ // From DMA to others
+ assign pc_snoop_valid[PC_ID_DMA_TO_CONFIG] = config_network_input_valid;
+ assign pc_snoop_ready[PC_ID_DMA_TO_CONFIG] = config_network_input_ready;
+ assign pc_snoop_valid[PC_ID_DMA_TO_FILTER] = filter_reader_valid;
+ assign pc_snoop_ready[PC_ID_DMA_TO_FILTER] = filter_reader_ready;
+ assign pc_snoop_valid[PC_ID_DMA_TO_INPUT_FEEDER] = feature_reader_valid;
+ assign pc_snoop_ready[PC_ID_DMA_TO_INPUT_FEEDER] = feature_reader_ready;
+
+ // From config network to others
+ assign pc_snoop_valid[PC_ID_CONFIG_TO_INPUT_FEEDER_IN] = config_network_output_valid[CONFIG_ID_INPUT_FEEDER_IN];
+ assign pc_snoop_ready[PC_ID_CONFIG_TO_INPUT_FEEDER_IN] = config_network_output_ready[CONFIG_ID_INPUT_FEEDER_IN];
+ assign pc_snoop_valid[PC_ID_CONFIG_TO_INPUT_FEEDER_OUT] = config_network_output_valid[CONFIG_ID_INPUT_FEEDER_OUT];
+ assign pc_snoop_ready[PC_ID_CONFIG_TO_INPUT_FEEDER_OUT] = config_network_output_ready[CONFIG_ID_INPUT_FEEDER_OUT];
+ assign pc_snoop_valid[PC_ID_CONFIG_TO_XBAR] = config_network_output_valid[CONFIG_ID_XBAR];
+ assign pc_snoop_ready[PC_ID_CONFIG_TO_XBAR] = config_network_output_ready[CONFIG_ID_XBAR];
+ assign pc_snoop_valid[PC_ID_CONFIG_TO_ACTIVATION] = pc_config_to_activation_valid;
+ assign pc_snoop_ready[PC_ID_CONFIG_TO_ACTIVATION] = pc_config_to_activation_ready;
+ assign pc_snoop_valid[PC_ID_CONFIG_TO_POOL] = pc_config_to_pool_valid;
+ assign pc_snoop_ready[PC_ID_CONFIG_TO_POOL] = pc_config_to_pool_ready;
+ assign pc_snoop_valid[PC_ID_CONFIG_TO_SOFTMAX] = pc_config_to_softmax_valid;
+ assign pc_snoop_ready[PC_ID_CONFIG_TO_SOFTMAX] = pc_config_to_softmax_ready;
+
+ // From input feeder exit FIFO to sequencer
+ assign pc_snoop_valid[PC_ID_INPUT_FEEDER_TO_SEQUENCER] = pc_input_feeder_to_sequencer_valid;
+ assign pc_snoop_ready[PC_ID_INPUT_FEEDER_TO_SEQUENCER] = pc_input_feeder_to_sequencer_ready;
+
+ // From PE array exit FIFO to xbar (before width adapter)
+ assign pc_snoop_valid[PC_ID_PE_ARRAY_TO_XBAR] = pe_array_output_valid;
+ assign pc_snoop_ready[PC_ID_PE_ARRAY_TO_XBAR] = pe_array_output_ready;
+
+ // At the aux kernel interfaces, which connect to and from the xbar
+ assign pc_snoop_valid[PC_ID_XBAR_TO_ACTIVATION] = pc_xbar_to_activation_valid;
+ assign pc_snoop_ready[PC_ID_XBAR_TO_ACTIVATION] = pc_xbar_to_activation_ready;
+ assign pc_snoop_valid[PC_ID_ACTIVATION_TO_XBAR] = pc_activation_to_xbar_valid;
+ assign pc_snoop_ready[PC_ID_ACTIVATION_TO_XBAR] = pc_activation_to_xbar_ready;
+ assign pc_snoop_valid[PC_ID_XBAR_TO_POOL] = pc_xbar_to_pool_valid;
+ assign pc_snoop_ready[PC_ID_XBAR_TO_POOL] = pc_xbar_to_pool_ready;
+ assign pc_snoop_valid[PC_ID_POOL_TO_XBAR] = pc_pool_to_xbar_valid;
+ assign pc_snoop_ready[PC_ID_POOL_TO_XBAR] = pc_pool_to_xbar_ready;
+ assign pc_snoop_valid[PC_ID_XBAR_TO_SOFTMAX] = pc_xbar_to_softmax_valid;
+ assign pc_snoop_ready[PC_ID_XBAR_TO_SOFTMAX] = pc_xbar_to_softmax_ready;
+ assign pc_snoop_valid[PC_ID_SOFTMAX_TO_XBAR] = pc_softmax_to_xbar_valid;
+ assign pc_snoop_ready[PC_ID_SOFTMAX_TO_XBAR] = pc_softmax_to_xbar_ready;
+
+ // From xbar to others (after width adapters, before clock crossing FIFO for DMA)
+ assign pc_snoop_valid[PC_ID_XBAR_TO_INPUT_FEEDER] = aux_valid;
+ assign pc_snoop_ready[PC_ID_XBAR_TO_INPUT_FEEDER] = aux_ready;
+ assign pc_snoop_valid[PC_ID_XBAR_TO_DMA] = raw_feature_writer_valid;
+ assign pc_snoop_ready[PC_ID_XBAR_TO_DMA] = raw_feature_writer_ready;
+
+endmodule
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_top_wrapper_de5a_area_A10.sv b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_top_wrapper_de5a_area_A10.sv
new file mode 100644
index 0000000..1b385d5
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/dla_top_wrapper_de5a_area_A10.sv
@@ -0,0 +1,483 @@
+// Copyright 2020 Intel Corporation.
+//
+// This software and the related documents are Intel copyrighted materials,
+// and your use of them is governed by the express license under which they
+// were provided to you ("License"). Unless the License provides otherwise,
+// you may not use, modify, copy, publish, distribute, disclose or transmit
+// this software or the related documents without Intel's prior written
+// permission.
+//
+// This software and the related documents are provided as is, with no express
+// or implied warranties, other than those that are expressly stated in the
+// License.
+
+`resetall
+`undefineall
+`default_nettype none
+`timescale 1ns/1ps
+
+module dla_top_wrapper_de5a_area_A10 #(
+ // no input parameters needed
+ //begining of autogenerated params
+ localparam string DEVICE = "A10",
+ localparam int C_CSR_AXI_ADDR_WIDTH = 11,
+ localparam int C_CSR_AXI_DATA_WIDTH = 32,
+ localparam int C_DDR_AXI_ADDR_WIDTH = 32,
+ localparam int C_DDR_AXI_BURST_WIDTH = 4,
+ localparam int C_DDR_AXI_DATA_WIDTH = 512,
+ localparam int C_DDR_AXI_THREAD_ID_WIDTH = 2,
+ localparam int CONFIG_DATA_BYTES = 4,
+ localparam int CONFIG_READER_DATA_BYTES = 8,
+ localparam int FILTER_READER_DATA_BYTES = 64,
+ localparam int FEATURE_READER_DATA_BYTES = 8,
+ localparam int FEATURE_WRITER_DATA_BYTES = 8,
+ localparam int CONFIG_NUM_MODULES = 11,
+ localparam int MODULE_ID_WIDTH = 8,
+ localparam int CONFIG_CHANNEL_WIDTH = 32,
+ localparam int CONFIG_CACHE_DEPTH = 256,
+ localparam int CONFIG_NETWORK_QUANTIZE_DEPTHS [255:0] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,512,64,32},
+ localparam bit CONFIG_NETWORK_CROSS_CLOCK [255:1] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1},
+ localparam bit CONFIG_NETWORK_CROSS_CLOCK_AXI [255:1] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ localparam int CONFIG_NETWORK_FIFO_MIN_DEPTH [255:1] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,256,256,256,256,256,256,256,256,256,256},
+ localparam int CONFIG_NETWORK_NUM_PIPELINE_STAGES [255:1] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1},
+ localparam int CONFIG_ID_PADDING = 0,
+ localparam int CONFIG_ID_FILTER_READER = 1,
+ localparam int CONFIG_ID_INPUT_FEEDER_MUX = 2,
+ localparam int CONFIG_ID_INPUT_FEEDER_WRITER = 3,
+ localparam int CONFIG_ID_INPUT_FEEDER_IN = 4,
+ localparam int CONFIG_ID_INPUT_FEEDER_READER = 5,
+ localparam int CONFIG_ID_INPUT_FEEDER_OUT = 6,
+ localparam int CONFIG_ID_FEATURE_WRITER = 7,
+ localparam int CONFIG_ID_FEATURE_READER = 8,
+ localparam int CONFIG_ID_XBAR = 9,
+ localparam int CONFIG_ID_ACTIVATION = 10,
+ localparam int CONFIG_ID_POOL = 11,
+ localparam bit ENABLE_DEBUG = 0,
+ localparam bit ENABLE_INPUT_STREAMING = 0,
+ localparam int AXI_ISTREAM_DATA_WIDTH = 128,
+ localparam int AXI_ISTREAM_FIFO_DEPTH = 32,
+ localparam bit ENABLE_ON_CHIP_PARAMETERS = 0,
+ localparam bit ENABLE_MIXED_PRECISION = 0,
+ localparam int KVEC_OVER_CVEC = 4,
+ localparam int SB_ADDR_WIDTH = 13,
+ localparam int STREAM_BUFFER_DEPTH = 5120,
+ localparam bit[927:0] PE_ARRAY_PARAM_BITS = 928'h000000010000000800000001000000020000000700000007000000050000000f000000050000000f00000004000000040000000200000001000000010000000000000001000000000000000400000001000000040000001000000005000000040000000000000000000000000000000000000000,
+ localparam int PE_ARRAY_EXIT_FIFO_DEPTH = 1024,
+ localparam int SCRATCHPAD_FILTER_DEPTH = 512,
+ localparam int SCRATCHPAD_BIAS_SCALE_DEPTH = 512,
+ localparam int SCRATCHPAD_NUM_FILTER_PORTS = 8,
+ localparam int SCRATCHPAD_NUM_BIAS_SCALE_PORTS = 16,
+ localparam int SCRATCHPAD_MEGABLOCK_WIDTH = 34,
+ localparam int SCRATCHPAD_NUM_FILTER_BLOCKS_PER_MEGABLOCK = 1,
+ localparam int SCRATCHPAD_NUM_BIAS_SCALE_BLOCKS_PER_MEGABLOCK = 2,
+ localparam int MAX_XBAR_INPUT_INTERFACES = 4,
+ localparam int MAX_XBAR_OUTPUT_INTERFACES = 4,
+ localparam int AUX_XBAR_INPUT_COUNTER_WIDTH = 24,
+ localparam int AUX_XBAR_OUTPUT_COUNTER_WIDTH = 24,
+ localparam bit ENABLE_ACTIVATION = 1,
+ localparam bit ENABLE_DEPTHWISE = 0,
+ localparam int XBAR_ID_DEPTHWISE = -1,
+ localparam int CONFIG_ID_DEPTHWISE = -1,
+ localparam bit ENABLE_DEPTHWISE_FILTER_BIAS = 0,
+ localparam int XBAR_ID_DEPTHWISE_FILTER_BIAS = -1,
+ localparam int CONFIG_ID_DEPTHWISE_FILTER_BIAS = -1,
+ localparam bit ENABLE_POOL = 1,
+ localparam bit ENABLE_SOFTMAX = 0,
+ localparam int XBAR_ID_SOFTMAX = -1,
+ localparam int CONFIG_ID_SOFTMAX = -1,
+ localparam int CONFIG_ID_OUTPUT_STREAMER = -1,
+ localparam int CONFIG_ID_OUTPUT_STREAMER_FLUSH = -1,
+ localparam int CONFIG_ID_WRITER_STREAMER_SEL = -1,
+ localparam int CONFIG_ID_LAYOUT_TRANSFORM = -1,
+ localparam int XBAR_ID_POOL = 2,
+ localparam int XBAR_ID_ACTIVATION = 1,
+ localparam int XBAR_ID_XBAR_OUT_PORT = 0,
+ localparam int XBAR_ID_PE_ARRAY = 0,
+ localparam int NUMBER_OF_KERNELS = 2,
+ localparam int AUX_MODULE_SELECT_ID_WIDTH = 4,
+ localparam bit XBAR_KERNEL_BYPASS_FEATURE_ENABLE = 0,
+ localparam bit AUX_KERNEL_BYPASSABLE [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0},
+ localparam int AUX_XBAR_MUX_OUTPUT_PIPELINE_STAGES [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0},
+ localparam int AUX_XBAR_NONSTALLABLE_OUTPUT_PIPELINE_STAGES [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0},
+ localparam int AUX_XBAR_OUTPUT_BP_FIFO_ENABLE [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0},
+ localparam int AUX_XBAR_OUTPUT_BP_FIFO_DEPTH [16:0] = '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,default : 0},
+ localparam int AUX_XBAR_OUTPUT_WIDTH = 64,
+ localparam int AUX_OUTPUT_DATA_WIDTHS [16:0] = '{0:64,1:64,2:64,3:64,4:64,5:64,6:64,7:64,8:64,9:64,10:64,11:64,12:64,13:64,14:64,15:64,16:64,default : 0},
+ localparam int AUX_INPUT_DATA_WIDTHS [16:0] = '{0:64,1:64,2:64,3:64,4:64,5:64,6:64,7:64,8:64,9:64,10:64,11:64,12:64,13:64,14:64,15:64,16:64,default : 0},
+ localparam int AUX_MAX_DATABUS_WIDTH = 64,
+ localparam int XBAR_KERNEL_CV_FEATURE_ENABLE = 1,
+ localparam int AUX_KERNEL_CONNECTIVITY_VECTOR [16:0] [16:0] = '{0: '{0:1,1:1,2:1,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},1: '{0:1,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},2: '{0:1,1:1,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},3: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},4: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},5: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},6: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},7: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},8: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},9: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},10: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},11: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},12: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},13: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},14: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},15: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},16: '{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0}},
+ localparam int ACTIVATION_K_VECTOR = 4,
+ localparam bit ACTIVATION_ENABLE_DSP_MULT = 0,
+ localparam bit ACTIVATION_ENABLE_DSP_CONV = 0,
+ localparam int ACTIVATION_GROUP_DELAY = 0,
+ localparam int ACTIVATION_TYPE = 1,
+ localparam int ACTIVATION_PARAM_CACHE_DEPTH = 3580,
+ localparam int POOL_K_VECTOR = 1,
+ localparam int POOL_GROUP_DELAY = 0,
+ localparam int POOL_TYPE = 0,
+ localparam int POOL_CONFIG_ID_WIDTH = 1,
+ localparam int POOL_MAX_WINDOW_HEIGHT = 3,
+ localparam int POOL_MAX_WINDOW_WIDTH = 3,
+ localparam int POOL_MAX_STRIDE_VERTICAL = 4,
+ localparam int POOL_MAX_STRIDE_HORIZONTAL = 4,
+ localparam int POOL_PIPELINE_REG_NUM = 1,
+ localparam int DEPTHWISE_K_VECTOR = 0,
+ localparam int DEPTHWISE_GROUP_DELAY = 0,
+ localparam int DEPTHWISE_TYPE = 0,
+ localparam int DEPTHWISE_CONFIG_ID_WIDTH = 1,
+ localparam int DEPTHWISE_MAX_WINDOW_HEIGHT = 3,
+ localparam int DEPTHWISE_MAX_WINDOW_WIDTH = 3,
+ localparam int DEPTHWISE_MAX_STRIDE_VERTICAL = 4,
+ localparam int DEPTHWISE_MAX_STRIDE_HORIZONTAL = 4,
+ localparam int DEPTHWISE_PIPELINE_REG_NUM = 1,
+ localparam int DEPTHWISE_MAX_DILATION_VERTICAL = 1,
+ localparam int DEPTHWISE_MAX_DILATION_HORIZONTAL = 1,
+ localparam int DETHWISE_VECTOR_FEATURE_WIDTH = 16,
+ localparam int DETHWISE_VECTOR_FILTER_WIDTH = 16,
+ localparam int DETHWISE_VECTOR_BIAS_WIDTH = 32,
+ localparam int DETHWISE_VECTOR_DOT_SIZE = 10,
+ localparam int SOFTMAX_K_VECTOR = 1,
+ localparam int SOFTMAX_GROUP_DELAY = 1,
+ localparam int SOFTMAX_CONFIG_ID_WIDTH = 8,
+ localparam int SOFTMAX_MAX_NUM_CHANNELS = 2048,
+ localparam int AUX_MAX_TILE_HEIGHT = 128,
+ localparam int AUX_MAX_TILE_WIDTH = 128,
+ localparam int AUX_MAX_TILE_CHANNELS = 14320,
+ localparam int LAYOUT_TRANSFORM_ENABLE = 0,
+ localparam int LAYOUT_TRANSFORM_MAX_FEATURE_CHANNELS = 3,
+ localparam int LAYOUT_TRANSFORM_MAX_FEATURE_HEIGHT = 28,
+ localparam int LAYOUT_TRANSFORM_MAX_FEATURE_WIDTH = 28,
+ localparam int LAYOUT_TRANSFORM_MAX_FEATURE_DEPTH = 1,
+ localparam int LAYOUT_TRANSFORM_MAX_STRIDE_WIDTH = 2,
+ localparam int LAYOUT_TRANSFORM_MAX_STRIDE_HEIGHT = 2,
+ localparam int LAYOUT_TRANSFORM_MAX_STRIDE_DEPTH = 1,
+ localparam int LAYOUT_TRANSFORM_MAX_PAD_FRONT = 1,
+ localparam int LAYOUT_TRANSFORM_MAX_PAD_LEFT = 2,
+ localparam int LAYOUT_TRANSFORM_MAX_PAD_TOP = 2,
+ localparam int LAYOUT_TRANSFORM_MAX_FILTER_HEIGHT = 2,
+ localparam int LAYOUT_TRANSFORM_MAX_FILTER_WIDTH = 2,
+ localparam int LAYOUT_TRANSFORM_MAX_FILTER_DEPTH = 1,
+ localparam int LAYOUT_TRANSFORM_MAX_DILATION_WIDTH = 2,
+ localparam int LAYOUT_TRANSFORM_MAX_DILATION_HEIGHT = 2,
+ localparam int LAYOUT_TRANSFORM_MAX_DILATION_DEPTH = 1,
+ localparam int LAYOUT_TRANSFORM_READER_BYTES = 16,
+ localparam int LAYOUT_TRANSFORM_DO_U8_CONV = 0,
+ localparam int ENABLE_OUTPUT_STREAMER = 0,
+ localparam int AXI_OSTREAM_DATA_WIDTH = 128,
+ localparam int AXI_OSTREAM_ID_WIDTH = 8,
+ localparam int AXI_OSTREAM_DEST_WIDTH = 8,
+ localparam int AXI_OSTREAM_FIFO_DEPTH = 512,
+ localparam int DISABLE_DDR = 0,
+ //end of autogenerated params
+ localparam int AXI_BURST_LENGTH_WIDTH = 8, //width of the axi burst length signal as per the axi4 spec
+ localparam int AXI_BURST_SIZE_WIDTH = 3, //width of the axi burst size signal as per the axi4 spec
+ localparam int AXI_BURST_TYPE_WIDTH = 2 //width of the axi burst type signal as per the axi4 spec
+) (
+ //clocks and resets, all resets are not synchronized
+ input wire ddr_clk,
+ input wire dla_clk,
+ input wire axi_clk,
+ input wire irq_clk,
+ input wire dla_resetn, //active low reset that has NOT been synchronized to any clock
+
+ //interrupt request, AXI4 stream master without data, runs on pcie clock
+ output logic o_interrupt_level,
+
+ //CSR, AXI4 lite slave, runs on ddr clock
+ input wire i_csr_arvalid,
+ input wire [C_CSR_AXI_ADDR_WIDTH-1:0] i_csr_araddr,
+ output logic o_csr_arready,
+ output logic o_csr_rvalid,
+ output logic [C_CSR_AXI_DATA_WIDTH-1:0] o_csr_rdata,
+ input wire i_csr_rready,
+ input wire i_csr_awvalid,
+ input wire [C_CSR_AXI_ADDR_WIDTH-1:0] i_csr_awaddr,
+ output logic o_csr_awready,
+ input wire i_csr_wvalid,
+ input wire [C_CSR_AXI_DATA_WIDTH-1:0] i_csr_wdata,
+ output logic o_csr_wready,
+ output logic o_csr_bvalid,
+ input wire i_csr_bready,
+
+ //global memory, AXI4 master, runs on ddr clock
+ output logic o_ddr_arvalid,
+ output logic [C_DDR_AXI_ADDR_WIDTH-1:0] o_ddr_araddr,
+ output logic [AXI_BURST_LENGTH_WIDTH-1:0] o_ddr_arlen,
+ output logic [AXI_BURST_SIZE_WIDTH-1:0] o_ddr_arsize,
+ output logic [AXI_BURST_TYPE_WIDTH-1:0] o_ddr_arburst,
+ output logic [C_DDR_AXI_THREAD_ID_WIDTH-1:0] o_ddr_arid,
+ input wire i_ddr_arready,
+ input wire i_ddr_rvalid,
+ input wire [C_DDR_AXI_DATA_WIDTH-1:0] i_ddr_rdata,
+ input wire [C_DDR_AXI_THREAD_ID_WIDTH-1:0] i_ddr_rid,
+ output logic o_ddr_rready,
+ output logic o_ddr_awvalid,
+ output logic [C_DDR_AXI_ADDR_WIDTH-1:0] o_ddr_awaddr,
+ output logic [AXI_BURST_LENGTH_WIDTH-1:0] o_ddr_awlen,
+ output logic [AXI_BURST_SIZE_WIDTH-1:0] o_ddr_awsize,
+ output logic [AXI_BURST_TYPE_WIDTH-1:0] o_ddr_awburst,
+ input wire i_ddr_awready,
+ output logic o_ddr_wvalid,
+ output logic [C_DDR_AXI_DATA_WIDTH-1:0] o_ddr_wdata,
+ output logic [(C_DDR_AXI_DATA_WIDTH/8)-1:0] o_ddr_wstrb,
+ output logic o_ddr_wlast,
+ input wire i_ddr_wready,
+ input wire i_ddr_bvalid,
+ output logic o_ddr_bready,
+
+ // Input Streamer AXI-S interface signals
+ input wire i_istream_axi_t_valid,
+ output logic o_istream_axi_t_ready,
+ input wire [AXI_ISTREAM_DATA_WIDTH-1:0] i_istream_axi_t_data,
+
+ // Output Streamer AXI-S interface signals
+ output wire o_ostream_axi_t_valid,
+ input wire i_ostream_axi_t_ready,
+ output wire o_ostream_axi_t_last,
+ output logic [AXI_OSTREAM_DATA_WIDTH-1:0] o_ostream_axi_t_data,
+ output logic [(AXI_OSTREAM_DATA_WIDTH/8)-1:0] o_ostream_axi_t_strb
+);
+
+ dla_top_de5a_area_A10 #(
+ .DEVICE (DEVICE),
+
+ .CSR_ADDR_WIDTH (C_CSR_AXI_ADDR_WIDTH),
+ .CSR_DATA_BYTES (C_CSR_AXI_DATA_WIDTH/8),
+ .CONFIG_DATA_BYTES (CONFIG_DATA_BYTES),
+ .CONFIG_READER_DATA_BYTES (CONFIG_READER_DATA_BYTES),
+ .FILTER_READER_DATA_BYTES (FILTER_READER_DATA_BYTES),
+ .FEATURE_READER_DATA_BYTES (FEATURE_READER_DATA_BYTES),
+ .FEATURE_WRITER_DATA_BYTES (FEATURE_WRITER_DATA_BYTES),
+ .DDR_ADDR_WIDTH (C_DDR_AXI_ADDR_WIDTH),
+ .DDR_DATA_BYTES (C_DDR_AXI_DATA_WIDTH/8),
+ .DDR_BURST_WIDTH (C_DDR_AXI_BURST_WIDTH),
+ .DDR_READ_ID_WIDTH (C_DDR_AXI_THREAD_ID_WIDTH),
+ .ENABLE_ON_CHIP_PARAMETERS (ENABLE_ON_CHIP_PARAMETERS),
+
+ .KVEC_OVER_CVEC (KVEC_OVER_CVEC),
+ .SB_ADDR_WIDTH (SB_ADDR_WIDTH),
+ .STREAM_BUFFER_DEPTH (STREAM_BUFFER_DEPTH),
+
+ .PE_ARRAY_PARAM_BITS (dla_pe_array_pkg::pe_array_arch_bits_t'(PE_ARRAY_PARAM_BITS)),
+ .PE_ARRAY_EXIT_FIFO_DEPTH (PE_ARRAY_EXIT_FIFO_DEPTH),
+
+ .SCRATCHPAD_FILTER_DEPTH (SCRATCHPAD_FILTER_DEPTH),
+ .SCRATCHPAD_BIAS_SCALE_DEPTH (SCRATCHPAD_BIAS_SCALE_DEPTH),
+ .SCRATCHPAD_NUM_FILTER_PORTS (SCRATCHPAD_NUM_FILTER_PORTS),
+ .SCRATCHPAD_NUM_BIAS_SCALE_PORTS (SCRATCHPAD_NUM_BIAS_SCALE_PORTS),
+ .SCRATCHPAD_MEGABLOCK_WIDTH (SCRATCHPAD_MEGABLOCK_WIDTH),
+ .SCRATCHPAD_NUM_FILTER_BLOCKS_PER_MEGABLOCK (SCRATCHPAD_NUM_FILTER_BLOCKS_PER_MEGABLOCK),
+ .SCRATCHPAD_NUM_BIAS_SCALE_BLOCKS_PER_MEGABLOCK(SCRATCHPAD_NUM_BIAS_SCALE_BLOCKS_PER_MEGABLOCK),
+
+ .CONFIG_NUM_MODULES (CONFIG_NUM_MODULES),
+ .MODULE_ID_WIDTH (MODULE_ID_WIDTH),
+ .CONFIG_CHANNEL_WIDTH (CONFIG_CHANNEL_WIDTH),
+ .CONFIG_CACHE_DEPTH (CONFIG_CACHE_DEPTH),
+ .CONFIG_ID_FILTER_READER (CONFIG_ID_FILTER_READER),
+ .CONFIG_ID_INPUT_FEEDER_MUX (CONFIG_ID_INPUT_FEEDER_MUX),
+ .CONFIG_ID_INPUT_FEEDER_WRITER (CONFIG_ID_INPUT_FEEDER_WRITER),
+ .CONFIG_ID_INPUT_FEEDER_IN (CONFIG_ID_INPUT_FEEDER_IN),
+ .CONFIG_ID_INPUT_FEEDER_READER (CONFIG_ID_INPUT_FEEDER_READER),
+ .CONFIG_ID_INPUT_FEEDER_OUT (CONFIG_ID_INPUT_FEEDER_OUT),
+ .CONFIG_ID_FEATURE_WRITER (CONFIG_ID_FEATURE_WRITER),
+ .CONFIG_ID_FEATURE_READER (CONFIG_ID_FEATURE_READER),
+ .CONFIG_ID_XBAR (CONFIG_ID_XBAR),
+ .CONFIG_ID_OUTPUT_STREAMER (CONFIG_ID_OUTPUT_STREAMER),
+ .CONFIG_ID_OUTPUT_STREAMER_FLUSH(CONFIG_ID_OUTPUT_STREAMER_FLUSH),
+ .CONFIG_ID_WRITER_STREAMER_SEL (CONFIG_ID_WRITER_STREAMER_SEL),
+ .CONFIG_ID_LAYOUT_TRANSFORM (CONFIG_ID_LAYOUT_TRANSFORM),
+ // AUX module config ID
+ .CONFIG_ID_ACTIVATION (CONFIG_ID_ACTIVATION),
+ .CONFIG_ID_POOL (CONFIG_ID_POOL),
+ .CONFIG_ID_DEPTHWISE (CONFIG_ID_DEPTHWISE),
+ .CONFIG_ID_DEPTHWISE_FILTER_BIAS(CONFIG_ID_DEPTHWISE_FILTER_BIAS),
+ .CONFIG_ID_SOFTMAX (CONFIG_ID_SOFTMAX),
+
+ .CONFIG_NETWORK_QUANTIZE_DEPTHS (CONFIG_NETWORK_QUANTIZE_DEPTHS),
+ .CONFIG_NETWORK_FIFO_MIN_DEPTH (CONFIG_NETWORK_FIFO_MIN_DEPTH),
+ .CONFIG_NETWORK_NUM_PIPELINE_STAGES (CONFIG_NETWORK_NUM_PIPELINE_STAGES),
+ .CONFIG_NETWORK_CROSS_CLOCK (CONFIG_NETWORK_CROSS_CLOCK),
+ .CONFIG_NETWORK_CROSS_CLOCK_AXI (CONFIG_NETWORK_CROSS_CLOCK_AXI),
+
+ //xbar
+ .MAX_XBAR_INPUT_INTERFACES (MAX_XBAR_INPUT_INTERFACES),
+ .MAX_XBAR_OUTPUT_INTERFACES (MAX_XBAR_OUTPUT_INTERFACES),
+ .NUMBER_OF_KERNELS (NUMBER_OF_KERNELS),
+ .AUX_MODULE_SELECT_ID_WIDTH (AUX_MODULE_SELECT_ID_WIDTH),
+ .AUX_XBAR_INPUT_COUNTER_WIDTH (AUX_XBAR_INPUT_COUNTER_WIDTH),
+ .AUX_XBAR_OUTPUT_COUNTER_WIDTH (AUX_XBAR_OUTPUT_COUNTER_WIDTH),
+ .AUX_MAX_DATABUS_WIDTH (AUX_MAX_DATABUS_WIDTH),
+ .AUX_XBAR_OUTPUT_WIDTH (AUX_XBAR_OUTPUT_WIDTH),
+ .AUX_INPUT_DATA_WIDTHS (AUX_INPUT_DATA_WIDTHS),
+ .AUX_OUTPUT_DATA_WIDTHS (AUX_OUTPUT_DATA_WIDTHS),
+ .AUX_XBAR_MUX_OUTPUT_PIPELINE_STAGES(AUX_XBAR_MUX_OUTPUT_PIPELINE_STAGES),
+ .AUX_XBAR_NONSTALLABLE_OUTPUT_PIPELINE_STAGES(AUX_XBAR_NONSTALLABLE_OUTPUT_PIPELINE_STAGES),
+ .AUX_XBAR_OUTPUT_BP_FIFO_ENABLE (AUX_XBAR_OUTPUT_BP_FIFO_ENABLE),
+ .AUX_XBAR_OUTPUT_BP_FIFO_DEPTH (AUX_XBAR_OUTPUT_BP_FIFO_DEPTH),
+ .XBAR_KERNEL_BYPASS_FEATURE_ENABLE (XBAR_KERNEL_BYPASS_FEATURE_ENABLE),
+ .AUX_KERNEL_BYPASSABLE (AUX_KERNEL_BYPASSABLE),
+ .XBAR_KERNEL_CV_FEATURE_ENABLE (XBAR_KERNEL_CV_FEATURE_ENABLE),
+ .AUX_KERNEL_CONNECTIVITY_VECTOR (AUX_KERNEL_CONNECTIVITY_VECTOR),
+
+ //xbar id
+ .XBAR_ID_ACTIVATION (XBAR_ID_ACTIVATION),
+ .XBAR_ID_POOL (XBAR_ID_POOL),
+ .XBAR_ID_DEPTHWISE (XBAR_ID_DEPTHWISE),
+ .XBAR_ID_SOFTMAX (XBAR_ID_SOFTMAX),
+ .XBAR_ID_PE_ARRAY (XBAR_ID_PE_ARRAY),
+ .XBAR_ID_XBAR_OUT_PORT (XBAR_ID_XBAR_OUT_PORT),
+ //aux module enable
+ .ENABLE_ACTIVATION (ENABLE_ACTIVATION),
+ .ENABLE_POOL (ENABLE_POOL),
+ .ENABLE_DEPTHWISE (ENABLE_DEPTHWISE),
+ .ENABLE_SOFTMAX (ENABLE_SOFTMAX),
+
+ .ENABLE_INPUT_STREAMING (ENABLE_INPUT_STREAMING),
+ .AXI_ISTREAM_DATA_WIDTH (AXI_ISTREAM_DATA_WIDTH),
+ .AXI_ISTREAM_FIFO_DEPTH (AXI_ISTREAM_FIFO_DEPTH),
+
+ //debug module enable
+ .ENABLE_DEBUG (ENABLE_DEBUG),
+
+ // Output Streaming parameters
+ .ENABLE_OUTPUT_STREAMER (ENABLE_OUTPUT_STREAMER),
+ .AXI_OSTREAM_DATA_WIDTH (AXI_OSTREAM_DATA_WIDTH),
+ .AXI_OSTREAM_ID_WIDTH (AXI_OSTREAM_ID_WIDTH),
+ .AXI_OSTREAM_DEST_WIDTH (AXI_OSTREAM_DEST_WIDTH),
+ .AXI_OSTREAM_FIFO_DEPTH (AXI_OSTREAM_FIFO_DEPTH),
+
+ // Mixed Precsion switch
+ .ENABLE_MIXED_PRECISION (ENABLE_MIXED_PRECISION),
+
+ //Activation parameters
+ .ACTIVATION_K_VECTOR (ACTIVATION_K_VECTOR),
+ .ACTIVATION_ENABLE_DSP_MULT (ACTIVATION_ENABLE_DSP_MULT),
+ .ACTIVATION_ENABLE_DSP_CONV (ACTIVATION_ENABLE_DSP_CONV),
+ .ACTIVATION_TYPE (ACTIVATION_TYPE),
+ .ACTIVATION_GROUP_DELAY (ACTIVATION_GROUP_DELAY),
+ .ACTIVATION_PARAM_CACHE_DEPTH (ACTIVATION_PARAM_CACHE_DEPTH),
+
+ //Pool parameters
+ .POOL_K_VECTOR (POOL_K_VECTOR),
+ .POOL_TYPE (POOL_TYPE),
+ .POOL_GROUP_DELAY (POOL_GROUP_DELAY),
+ .POOL_CONFIG_ID_WIDTH (POOL_CONFIG_ID_WIDTH),
+ .POOL_MAX_WINDOW_HEIGHT (POOL_MAX_WINDOW_HEIGHT),
+ .POOL_MAX_WINDOW_WIDTH (POOL_MAX_WINDOW_WIDTH),
+ .POOL_MAX_STRIDE_VERTICAL (POOL_MAX_STRIDE_VERTICAL),
+ .POOL_MAX_STRIDE_HORIZONTAL (POOL_MAX_STRIDE_HORIZONTAL),
+ .POOL_PIPELINE_REG_NUM (POOL_PIPELINE_REG_NUM),
+
+ //Depthwise parameters
+ .DEPTHWISE_K_VECTOR (DEPTHWISE_K_VECTOR),
+ .DEPTHWISE_TYPE (DEPTHWISE_TYPE),
+ .DEPTHWISE_GROUP_DELAY (DEPTHWISE_GROUP_DELAY),
+ .DEPTHWISE_CONFIG_ID_WIDTH (DEPTHWISE_CONFIG_ID_WIDTH),
+ .DEPTHWISE_MAX_WINDOW_HEIGHT (DEPTHWISE_MAX_WINDOW_HEIGHT),
+ .DEPTHWISE_MAX_WINDOW_WIDTH (DEPTHWISE_MAX_WINDOW_WIDTH),
+ .DEPTHWISE_MAX_STRIDE_VERTICAL (DEPTHWISE_MAX_STRIDE_VERTICAL),
+ .DEPTHWISE_MAX_STRIDE_HORIZONTAL (DEPTHWISE_MAX_STRIDE_HORIZONTAL),
+ .DEPTHWISE_PIPELINE_REG_NUM (DEPTHWISE_PIPELINE_REG_NUM),
+ .DEPTHWISE_MAX_DILATION_VERTICAL (DEPTHWISE_MAX_DILATION_VERTICAL),
+ .DEPTHWISE_MAX_DILATION_HORIZONTAL (DEPTHWISE_MAX_DILATION_HORIZONTAL),
+
+ // Depthwise vector parameters
+ .DETHWISE_VECTOR_FEATURE_WIDTH (DETHWISE_VECTOR_FEATURE_WIDTH),
+ .DETHWISE_VECTOR_FILTER_WIDTH (DETHWISE_VECTOR_FILTER_WIDTH),
+ .DETHWISE_VECTOR_BIAS_WIDTH (DETHWISE_VECTOR_BIAS_WIDTH),
+ .DETHWISE_VECTOR_DOT_SIZE (DETHWISE_VECTOR_DOT_SIZE),
+
+ //Softmax parameters
+ .SOFTMAX_K_VECTOR (SOFTMAX_K_VECTOR),
+ .SOFTMAX_GROUP_DELAY (SOFTMAX_GROUP_DELAY),
+ .SOFTMAX_CONFIG_ID_WIDTH (SOFTMAX_CONFIG_ID_WIDTH),
+ .SOFTMAX_MAX_NUM_CHANNELS (SOFTMAX_MAX_NUM_CHANNELS),
+
+ // Aux Parameters
+ .AUX_MAX_TILE_HEIGHT (AUX_MAX_TILE_HEIGHT),
+ .AUX_MAX_TILE_WIDTH (AUX_MAX_TILE_WIDTH),
+ .AUX_MAX_TILE_CHANNELS (AUX_MAX_TILE_CHANNELS),
+
+ // Layout Transform
+ .LAYOUT_TRANSFORM_ENABLE (LAYOUT_TRANSFORM_ENABLE),
+ .LAYOUT_TRANSFORM_MAX_FEATURE_CHANNELS (LAYOUT_TRANSFORM_MAX_FEATURE_CHANNELS),
+ .LAYOUT_TRANSFORM_MAX_FEATURE_HEIGHT (LAYOUT_TRANSFORM_MAX_FEATURE_HEIGHT),
+ .LAYOUT_TRANSFORM_MAX_FEATURE_WIDTH (LAYOUT_TRANSFORM_MAX_FEATURE_WIDTH),
+ .LAYOUT_TRANSFORM_MAX_FEATURE_DEPTH (LAYOUT_TRANSFORM_MAX_FEATURE_DEPTH),
+ .LAYOUT_TRANSFORM_MAX_STRIDE_WIDTH (LAYOUT_TRANSFORM_MAX_STRIDE_WIDTH),
+ .LAYOUT_TRANSFORM_MAX_STRIDE_HEIGHT (LAYOUT_TRANSFORM_MAX_STRIDE_HEIGHT),
+ .LAYOUT_TRANSFORM_MAX_STRIDE_DEPTH (LAYOUT_TRANSFORM_MAX_STRIDE_DEPTH),
+ .LAYOUT_TRANSFORM_MAX_PAD_FRONT (LAYOUT_TRANSFORM_MAX_PAD_FRONT),
+ .LAYOUT_TRANSFORM_MAX_PAD_LEFT (LAYOUT_TRANSFORM_MAX_PAD_LEFT),
+ .LAYOUT_TRANSFORM_MAX_PAD_TOP (LAYOUT_TRANSFORM_MAX_PAD_TOP),
+ .LAYOUT_TRANSFORM_MAX_FILTER_WIDTH (LAYOUT_TRANSFORM_MAX_FILTER_WIDTH),
+ .LAYOUT_TRANSFORM_MAX_FILTER_HEIGHT (LAYOUT_TRANSFORM_MAX_FILTER_HEIGHT),
+ .LAYOUT_TRANSFORM_MAX_FILTER_DEPTH (LAYOUT_TRANSFORM_MAX_FILTER_DEPTH),
+ .LAYOUT_TRANSFORM_MAX_DILATION_WIDTH (LAYOUT_TRANSFORM_MAX_DILATION_WIDTH),
+ .LAYOUT_TRANSFORM_MAX_DILATION_HEIGHT (LAYOUT_TRANSFORM_MAX_DILATION_HEIGHT),
+ .LAYOUT_TRANSFORM_MAX_DILATION_DEPTH (LAYOUT_TRANSFORM_MAX_DILATION_DEPTH),
+ .LAYOUT_TRANSFORM_READER_BYTES (LAYOUT_TRANSFORM_READER_BYTES),
+ .LAYOUT_TRANSFORM_DO_U8_CONV (LAYOUT_TRANSFORM_DO_U8_CONV)
+)
+dla_top_inst
+(
+ .clk_ddr (ddr_clk),
+ .clk_axi (axi_clk),
+ .clk_dla (dla_clk),
+ .clk_pcie (irq_clk),
+ .i_resetn_async (dla_resetn),
+ .o_interrupt_level (o_interrupt_level),
+
+ .i_csr_arvalid (i_csr_arvalid),
+ .i_csr_araddr (i_csr_araddr),
+ .o_csr_arready (o_csr_arready),
+ .o_csr_rvalid (o_csr_rvalid),
+ .o_csr_rdata (o_csr_rdata),
+ .i_csr_rready (i_csr_rready),
+ .i_csr_awvalid (i_csr_awvalid),
+ .i_csr_awaddr (i_csr_awaddr),
+ .o_csr_awready (o_csr_awready),
+ .i_csr_wvalid (i_csr_wvalid),
+ .i_csr_wdata (i_csr_wdata),
+ .o_csr_wready (o_csr_wready),
+ .o_csr_bvalid (o_csr_bvalid),
+ .i_csr_bready (i_csr_bready),
+
+ .o_ddr_arvalid (o_ddr_arvalid),
+ .o_ddr_araddr (o_ddr_araddr),
+ .o_ddr_arlen (o_ddr_arlen),
+ .o_ddr_arsize (o_ddr_arsize),
+ .o_ddr_arburst (o_ddr_arburst),
+ .o_ddr_arid (o_ddr_arid),
+ .i_ddr_arready (i_ddr_arready),
+ .i_ddr_rvalid (i_ddr_rvalid),
+ .i_ddr_rdata (i_ddr_rdata),
+ .i_ddr_rid (i_ddr_rid),
+ .o_ddr_rready (o_ddr_rready),
+ .o_ddr_awvalid (o_ddr_awvalid),
+ .o_ddr_awaddr (o_ddr_awaddr),
+ .o_ddr_awlen (o_ddr_awlen),
+ .o_ddr_awsize (o_ddr_awsize),
+ .o_ddr_awburst (o_ddr_awburst),
+ .i_ddr_awready (i_ddr_awready),
+ .o_ddr_wvalid (o_ddr_wvalid),
+ .o_ddr_wdata (o_ddr_wdata),
+ .o_ddr_wstrb (o_ddr_wstrb),
+ .o_ddr_wlast (o_ddr_wlast),
+ .i_ddr_wready (i_ddr_wready),
+ .i_ddr_bvalid (i_ddr_bvalid),
+ .o_ddr_bready (o_ddr_bready),
+
+ .i_istream_axi_t_valid (i_istream_axi_t_valid),
+ .o_istream_axi_t_ready (o_istream_axi_t_ready),
+ .i_istream_axi_t_data (i_istream_axi_t_data),
+
+ .o_ostream_axi_t_valid (o_ostream_axi_t_valid),
+ .i_ostream_axi_t_ready (i_ostream_axi_t_ready),
+ .o_ostream_axi_t_last (o_ostream_axi_t_last),
+ .o_ostream_axi_t_data (o_ostream_axi_t_data),
+ .o_ostream_axi_t_strb (o_ostream_axi_t_strb)
+);
+
+endmodule
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/generated_files.tcl b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/generated_files.tcl
new file mode 100644
index 0000000..f01da5e
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/generated_files.tcl
@@ -0,0 +1,6 @@
+add_fileset_file intel_ai_ip/dla_dma_param.svh SYSTEM_VERILOG_INCLUDE PATH ../intel_ai_ip/verilog/de5a_area_A10/dla_dma_param.svh
+add_fileset_file intel_ai_ip/dla_dma_csr_discovery_rom.mif MIF PATH ../intel_ai_ip/verilog/de5a_area_A10/dla_dma_csr_discovery_rom.mif
+add_fileset_file intel_ai_ip/dla_interface_profiling_counters.mif MIF PATH ../intel_ai_ip/verilog/de5a_area_A10/dla_interface_profiling_counters.mif
+add_fileset_file intel_ai_ip/dla_pe_array_system_de5a_area_A10.sv SYSTEM_VERILOG PATH ../intel_ai_ip/verilog/de5a_area_A10/dla_pe_array_system_de5a_area_A10.sv
+add_fileset_file intel_ai_ip/dla_top_de5a_area_A10.sv SYSTEM_VERILOG PATH ../intel_ai_ip/verilog/de5a_area_A10/dla_top_de5a_area_A10.sv
+add_fileset_file intel_ai_ip/dla_top_wrapper_de5a_area_A10.sv SYSTEM_VERILOG PATH ../intel_ai_ip/verilog/de5a_area_A10/dla_top_wrapper_de5a_area_A10.sv
diff --git a/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/interface_param.tcl b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/interface_param.tcl
new file mode 100644
index 0000000..dfcca35
--- /dev/null
+++ b/python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10/interface_param.tcl
@@ -0,0 +1,6 @@
+set_parameter_value C_CSR_AXI_ADDR_WIDTH 11
+set_parameter_value C_CSR_AXI_DATA_WIDTH 32
+set_parameter_value C_DDR_AXI_ADDR_WIDTH 32
+set_parameter_value C_DDR_AXI_DATA_WIDTH 512
+set_parameter_value C_DDR_AXI_BURST_WIDTH 4
+set_parameter_value C_DDR_AXI_THREAD_ID_WIDTH 2