diff options
Diffstat (limited to 'python/openvino/demo/ip/intel_ai_ip/verilog/de5a_area_A10')
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 |
