diff --git a/notebooks/workflow_h4.ipynb b/notebooks/workflow_h4.ipynb index 8603920..908b775 100644 --- a/notebooks/workflow_h4.ipynb +++ b/notebooks/workflow_h4.ipynb @@ -2,23 +2,9 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "vivado v2023.2.1 (64-bit)\n", - "Tool Version Limit: 2023.10\n", - "SW Build 4081461 on Thu Dec 14 12:22:04 MST 2023\n", - "IP Build 4080415 on Thu Dec 14 21:01:57 MST 2023\n", - "SharedData Build 4077621 on Mon Dec 11 00:23:44 MST 2023\n", - "Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.\n", - "Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.\n" - ] - } - ], + "outputs": [], "source": [ "# source /data/Xilinx_no_Vitis/Vivado/2020.1/settings64.sh\n", "!vivado -version" @@ -26,49 +12,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-10-06 16:25:58.415278: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX_VNNI FMA\n", - "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2024-10-06 16:25:58.483739: I tensorflow/core/util/port.cc:104] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", - "2024-10-06 16:25:58.485452: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", - "2024-10-06 16:25:58.485463: I tensorflow/compiler/xla/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n", - "2024-10-06 16:25:58.746486: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory\n", - "2024-10-06 16:25:58.746521: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory\n", - "2024-10-06 16:25:58.746524: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARN: Unable to import optimizer(s) from expr_templates.py: No module named 'sympy'\n", - "WARNING: Failed to import handlers from convolution.py: No module named 'torch'.\n", - "WARNING: Failed to import handlers from core.py: No module named 'torch'.\n", - "WARNING: Failed to import handlers from merge.py: No module named 'torch'.\n", - "WARNING: Failed to import handlers from pooling.py: No module named 'torch'.\n", - "WARNING: Failed to import handlers from recurrent.py: No module named 'torch'.\n", - "WARNING: Failed to import handlers from reshape.py: No module named 'torch'.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/data/jcampos/miniforge3/envs/ml4qick-test-env/lib/python3.10/site-packages/hls4ml/converters/__init__.py:29: UserWarning: WARNING: Pytorch converter is not enabled!\n", - " warnings.warn(\"WARNING: Pytorch converter is not enabled!\", stacklevel=1)\n" - ] - } - ], + "outputs": [], "source": [ "import os \n", "import pickle\n", "import hashlib\n", + "import json\n", "\n", "import hls4ml \n", "import numpy as np\n", @@ -106,7 +57,27 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def save_array_to_dat(data, top_nrows, bottom_nrows, filename):\n", + " print('Save top {} rows and bottom {} rows in file {}'.format(top_nrows, bottom_nrows, filename))\n", + " with open(filename, 'w') as file:\n", + " if data.ndim == 1:\n", + " data_ = [[x] for x in data]\n", + " else:\n", + " data_ = data\n", + " \n", + " for row in data_[:top_nrows]:\n", + " file.write(' '.join(map(str, row)) + '\\n')\n", + " for row in data_[-bottom_nrows:]:\n", + " file.write(' '.join(map(str, row)) + '\\n')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -119,21 +90,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Train Data Set:\n", - " X Path : ../data/malab_05282024/npz/0528_X_train_0_770.npy\n", - " y Path : ../data/malab_05282024/npz/0528_y_train_0_770.npy\n", - " Size : 900,000\n", - " Shape : (800,)\n" - ] - } - ], + "outputs": [], "source": [ "\"\"\"Loadning training split\"\"\"\n", "x_train_path = os.path.join(train_data_dir, f'0528_X_train_0_770.npy')\n", @@ -163,21 +122,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test Data Set:\n", - " X Path : ../data/malab_05282024/npz/0528_X_test_0_770.npy\n", - " y Path : ../data/malab_05282024/npz/0528_y_test_0_770.npy\n", - " Size : 100,000\n", - " Sample Shape : (800,)\n" - ] - } - ], + "outputs": [], "source": [ "\"\"\"Loading testing split\"\"\"\n", "x_test_path = os.path.join(test_data_dir, f'0528_X_test_0_770.npy')\n", @@ -215,7 +162,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -225,64 +172,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-10-06 16:26:12.029716: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory\n", - "2024-10-06 16:26:12.029767: W tensorflow/compiler/xla/stream_executor/cuda/cuda_driver.cc:265] failed call to cuInit: UNKNOWN ERROR (303)\n", - "2024-10-06 16:26:12.029777: I tensorflow/compiler/xla/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (correlator7.fnal.gov): /proc/driver/nvidia/version does not exist\n", - "2024-10-06 16:26:12.029908: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX_VNNI FMA\n", - "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /data/jcampos/miniforge3/envs/ml4qick-test-env/lib/python3.10/site-packages/tensorflow/python/autograph/pyct/static_analysis/liveness.py:83: Analyzer.lamba_check (from tensorflow.python.autograph.pyct.static_analysis.liveness) is deprecated and will be removed after 2023-09-23.\n", - "Instructions for updating:\n", - "Lambda fuctions will be no more assumed to be used in the statement where they are used, or at least in the same block. https://github.com/tensorflow/tensorflow/issues/56089\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /data/jcampos/miniforge3/envs/ml4qick-test-env/lib/python3.10/site-packages/tensorflow/python/autograph/pyct/static_analysis/liveness.py:83: Analyzer.lamba_check (from tensorflow.python.autograph.pyct.static_analysis.liveness) is deprecated and will be removed after 2023-09-23.\n", - "Instructions for updating:\n", - "Lambda fuctions will be no more assumed to be used in the statement where they are used, or at least in the same block. https://github.com/tensorflow/tensorflow/issues/56089\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: \"sequential\"\n", - "_________________________________________________________________\n", - " Layer (type) Output Shape Param # \n", - "=================================================================\n", - " fc1 (QDense) (None, 4) 3204 \n", - " \n", - " batchnorm1 (BatchNormalizat (None, 4) 16 \n", - " ion) \n", - " \n", - " fc2 (QDense) (None, 1) 5 \n", - " \n", - "=================================================================\n", - "Total params: 3,225\n", - "Trainable params: 3,217\n", - "Non-trainable params: 8\n", - "_________________________________________________________________\n", - "None\n", - "Input shape: 800\n", - "Number of hidden neurons: 4\n" - ] - } - ], + "outputs": [], "source": [ "def get_model(input_shape, hidden=8, is_pruned=True, activation='sigmoid'):\n", " model = keras.models.Sequential()\n", @@ -291,18 +183,18 @@ " activation='relu', \n", " name='fc1',\n", " input_shape=(input_shape,), \n", - " kernel_quantizer=quantized_bits(6,0,alpha=1), bias_quantizer=quantized_bits(6,0,alpha=1)\n", + " kernel_quantizer=quantized_bits(3,0,alpha=1), bias_quantizer=quantized_bits(3,0,alpha=1)\n", " ))\n", " model.add(BatchNormalization(name='batchnorm1'))\n", " # model.add(QBatchNormalization(\n", " # name='batchnorm1',\n", " # gamma_quantizer=quantized_bits(6, 0, 1),\n", - " # mean_quantizer=quantized_bits(6, 0, 1),\n", - " # variance_quantizer=quantized_bits(6, 0, 1),\n", + " # mean_quantizer=quantized_bits(6, 6, 1),\n", + " # variance_quantizer=quantized_bits(6, 6, 1),\n", " # beta_quantizer=quantized_bits(6, 0, 1),\n", " # ))\n", " model.add(\n", - " QDense(1, name='fc2', activation=activation, kernel_quantizer=quantized_bits(6,0,alpha=1), bias_quantizer=quantized_bits(6,0,alpha=1))\n", + " QDense(1, name='fc2', activation=activation, kernel_quantizer=quantized_bits(3,0,alpha=1), bias_quantizer=quantized_bits(3,0,alpha=1))\n", " )\n", "\n", " if is_pruned == True:\n", @@ -327,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -347,17 +239,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saving to ../checkpoints/scan_window_location_and_size_h4/sl100_ws400\n" - ] - } - ], + "outputs": [], "source": [ "#########################\n", "# 0. init callbacks\n", @@ -386,138 +270,11 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 1/100\n", - "3340/3340 [==============================] - 6s 2ms/step - loss: 0.1825 - accuracy: 0.9580 - val_loss: 0.1736 - val_accuracy: 0.9579\n", - "Epoch 2/100\n", - "3340/3340 [==============================] - 5s 1ms/step - loss: 0.1741 - accuracy: 0.9604 - val_loss: 0.1730 - val_accuracy: 0.9581\n", - "Epoch 3/100\n", - "3340/3340 [==============================] - 3s 973us/step - loss: 0.1736 - accuracy: 0.9605 - val_loss: 0.1735 - val_accuracy: 0.9585\n", - "Epoch 4/100\n", - "3340/3340 [==============================] - 3s 783us/step - loss: 0.1734 - accuracy: 0.9609 - val_loss: 0.1722 - val_accuracy: 0.9589\n", - "Epoch 5/100\n", - "3340/3340 [==============================] - 5s 2ms/step - loss: 0.1730 - accuracy: 0.9610 - val_loss: 0.1723 - val_accuracy: 0.9593\n", - "Epoch 6/100\n", - "3340/3340 [==============================] - 6s 2ms/step - loss: 0.1728 - accuracy: 0.9612 - val_loss: 0.1719 - val_accuracy: 0.9590\n", - "Epoch 7/100\n", - "3340/3340 [==============================] - 7s 2ms/step - loss: 0.1726 - accuracy: 0.9613 - val_loss: 0.1727 - val_accuracy: 0.9595\n", - "Epoch 8/100\n", - "3340/3340 [==============================] - 3s 904us/step - loss: 0.1724 - accuracy: 0.9612 - val_loss: 0.1724 - val_accuracy: 0.9592\n", - "Epoch 9/100\n", - "3340/3340 [==============================] - 2s 748us/step - loss: 0.1724 - accuracy: 0.9614 - val_loss: 0.1726 - val_accuracy: 0.9594\n", - "Epoch 10/100\n", - "3340/3340 [==============================] - 3s 1ms/step - loss: 0.1724 - accuracy: 0.9613 - val_loss: 0.1722 - val_accuracy: 0.9595\n", - "Epoch 11/100\n", - "3340/3340 [==============================] - 3s 804us/step - loss: 0.1722 - accuracy: 0.9613 - val_loss: 0.1719 - val_accuracy: 0.9592\n", - "Epoch 12/100\n", - "3340/3340 [==============================] - 3s 843us/step - loss: 0.1722 - accuracy: 0.9614 - val_loss: 0.1720 - val_accuracy: 0.9592\n", - "Epoch 13/100\n", - "3340/3340 [==============================] - 6s 2ms/step - loss: 0.1722 - accuracy: 0.9614 - val_loss: 0.1719 - val_accuracy: 0.9591\n", - "Epoch 14/100\n", - "3340/3340 [==============================] - 3s 861us/step - loss: 0.1722 - accuracy: 0.9614 - val_loss: 0.1721 - val_accuracy: 0.9596\n", - "Epoch 15/100\n", - "3340/3340 [==============================] - 5s 2ms/step - loss: 0.1721 - accuracy: 0.9614 - val_loss: 0.1717 - val_accuracy: 0.9591\n", - "Epoch 16/100\n", - "3340/3340 [==============================] - 2s 698us/step - loss: 0.1721 - accuracy: 0.9613 - val_loss: 0.1719 - val_accuracy: 0.9595\n", - "Epoch 17/100\n", - "3340/3340 [==============================] - 2s 742us/step - loss: 0.1721 - accuracy: 0.9614 - val_loss: 0.1718 - val_accuracy: 0.9593\n", - "Epoch 18/100\n", - "3340/3340 [==============================] - 5s 1ms/step - loss: 0.1721 - accuracy: 0.9614 - val_loss: 0.1723 - val_accuracy: 0.9592\n", - "Epoch 19/100\n", - "3340/3340 [==============================] - 8s 2ms/step - loss: 0.1720 - accuracy: 0.9614 - val_loss: 0.1717 - val_accuracy: 0.9594\n", - "Epoch 20/100\n", - "3340/3340 [==============================] - 4s 1ms/step - loss: 0.1720 - accuracy: 0.9614 - val_loss: 0.1719 - val_accuracy: 0.9593\n", - "Epoch 21/100\n", - "3340/3340 [==============================] - 5s 2ms/step - loss: 0.1720 - accuracy: 0.9615 - val_loss: 0.1718 - val_accuracy: 0.9592\n", - "Epoch 22/100\n", - "3340/3340 [==============================] - 2s 725us/step - loss: 0.1720 - accuracy: 0.9615 - val_loss: 0.1725 - val_accuracy: 0.9594\n", - "Epoch 23/100\n", - "3340/3340 [==============================] - 3s 976us/step - loss: 0.1720 - accuracy: 0.9615 - val_loss: 0.1716 - val_accuracy: 0.9594\n", - "Epoch 24/100\n", - "3340/3340 [==============================] - 3s 844us/step - loss: 0.1720 - accuracy: 0.9615 - val_loss: 0.1717 - val_accuracy: 0.9592\n", - "Epoch 25/100\n", - "3340/3340 [==============================] - 2s 693us/step - loss: 0.1719 - accuracy: 0.9614 - val_loss: 0.1720 - val_accuracy: 0.9594\n", - "Epoch 26/100\n", - "3340/3340 [==============================] - 3s 884us/step - loss: 0.1719 - accuracy: 0.9615 - val_loss: 0.1718 - val_accuracy: 0.9593\n", - "Epoch 27/100\n", - "3340/3340 [==============================] - 6s 2ms/step - loss: 0.1720 - accuracy: 0.9615 - val_loss: 0.1717 - val_accuracy: 0.9593\n", - "Epoch 28/100\n", - "3340/3340 [==============================] - 2s 689us/step - loss: 0.1718 - accuracy: 0.9614 - val_loss: 0.1722 - val_accuracy: 0.9593\n", - "Epoch 29/100\n", - "3340/3340 [==============================] - 3s 1ms/step - loss: 0.1717 - accuracy: 0.9615 - val_loss: 0.1719 - val_accuracy: 0.9591\n", - "Epoch 30/100\n", - "3340/3340 [==============================] - 4s 1ms/step - loss: 0.1718 - accuracy: 0.9614 - val_loss: 0.1718 - val_accuracy: 0.9593\n", - "Epoch 31/100\n", - "3340/3340 [==============================] - 3s 836us/step - loss: 0.1718 - accuracy: 0.9615 - val_loss: 0.1717 - val_accuracy: 0.9593\n", - "Epoch 32/100\n", - "3340/3340 [==============================] - 4s 1ms/step - loss: 0.1719 - accuracy: 0.9614 - val_loss: 0.1716 - val_accuracy: 0.9594\n", - "Epoch 33/100\n", - "3340/3340 [==============================] - 3s 911us/step - loss: 0.1718 - accuracy: 0.9614 - val_loss: 0.1725 - val_accuracy: 0.9593\n", - "Epoch 34/100\n", - "3340/3340 [==============================] - 3s 891us/step - loss: 0.1718 - accuracy: 0.9615 - val_loss: 0.1717 - val_accuracy: 0.9593\n", - "Epoch 35/100\n", - "3340/3340 [==============================] - 5s 1ms/step - loss: 0.1717 - accuracy: 0.9615 - val_loss: 0.1721 - val_accuracy: 0.9591\n", - "Epoch 36/100\n", - "3340/3340 [==============================] - 2s 657us/step - loss: 0.1718 - accuracy: 0.9614 - val_loss: 0.1723 - val_accuracy: 0.9593\n", - "Epoch 37/100\n", - "3340/3340 [==============================] - 4s 1ms/step - loss: 0.1718 - accuracy: 0.9615 - val_loss: 0.1714 - val_accuracy: 0.9593\n", - "Epoch 38/100\n", - "3340/3340 [==============================] - 4s 1ms/step - loss: 0.1718 - accuracy: 0.9614 - val_loss: 0.1718 - val_accuracy: 0.9592\n", - "Epoch 39/100\n", - "3340/3340 [==============================] - 4s 1ms/step - loss: 0.1717 - accuracy: 0.9615 - val_loss: 0.1717 - val_accuracy: 0.9592\n", - "Epoch 40/100\n", - "3340/3340 [==============================] - 9s 3ms/step - loss: 0.1717 - accuracy: 0.9614 - val_loss: 0.1718 - val_accuracy: 0.9593\n", - "Epoch 41/100\n", - "3340/3340 [==============================] - 4s 1ms/step - loss: 0.1717 - accuracy: 0.9614 - val_loss: 0.1721 - val_accuracy: 0.9593\n", - "Epoch 42/100\n", - "3340/3340 [==============================] - 7s 2ms/step - loss: 0.1716 - accuracy: 0.9615 - val_loss: 0.1717 - val_accuracy: 0.9593\n", - "Epoch 43/100\n", - "3340/3340 [==============================] - 5s 1ms/step - loss: 0.1718 - accuracy: 0.9614 - val_loss: 0.1722 - val_accuracy: 0.9592\n", - "Epoch 44/100\n", - "3340/3340 [==============================] - 3s 917us/step - loss: 0.1716 - accuracy: 0.9614 - val_loss: 0.1726 - val_accuracy: 0.9592\n", - "Epoch 45/100\n", - "3340/3340 [==============================] - 7s 2ms/step - loss: 0.1717 - accuracy: 0.9615 - val_loss: 0.1717 - val_accuracy: 0.9593\n", - "Epoch 46/100\n", - "3340/3340 [==============================] - 5s 2ms/step - loss: 0.1717 - accuracy: 0.9615 - val_loss: 0.1725 - val_accuracy: 0.9592\n", - "Epoch 47/100\n", - "3340/3340 [==============================] - 7s 2ms/step - loss: 0.1716 - accuracy: 0.9615 - val_loss: 0.1714 - val_accuracy: 0.9593\n", - "Epoch 48/100\n", - "3340/3340 [==============================] - 7s 2ms/step - loss: 0.1717 - accuracy: 0.9614 - val_loss: 0.1717 - val_accuracy: 0.9592\n", - "Epoch 49/100\n", - "3340/3340 [==============================] - 6s 2ms/step - loss: 0.1716 - accuracy: 0.9615 - val_loss: 0.1716 - val_accuracy: 0.9593\n", - "Epoch 50/100\n", - "3340/3340 [==============================] - 3s 856us/step - loss: 0.1717 - accuracy: 0.9615 - val_loss: 0.1722 - val_accuracy: 0.9590\n", - "Epoch 51/100\n", - "3340/3340 [==============================] - 6s 2ms/step - loss: 0.1716 - accuracy: 0.9614 - val_loss: 0.1717 - val_accuracy: 0.9591\n", - "Epoch 52/100\n", - "3340/3340 [==============================] - 7s 2ms/step - loss: 0.1715 - accuracy: 0.9614 - val_loss: 0.1721 - val_accuracy: 0.9590\n", - "Epoch 53/100\n", - "3340/3340 [==============================] - 3s 1ms/step - loss: 0.1715 - accuracy: 0.9614 - val_loss: 0.1719 - val_accuracy: 0.9590\n", - "Epoch 54/100\n", - "3340/3340 [==============================] - 7s 2ms/step - loss: 0.1716 - accuracy: 0.9614 - val_loss: 0.1724 - val_accuracy: 0.9591\n", - "Epoch 55/100\n", - "3340/3340 [==============================] - 6s 2ms/step - loss: 0.1715 - accuracy: 0.9613 - val_loss: 0.1716 - val_accuracy: 0.9591\n", - "Epoch 56/100\n", - "3340/3340 [==============================] - 9s 3ms/step - loss: 0.1715 - accuracy: 0.9613 - val_loss: 0.1725 - val_accuracy: 0.9589\n", - "Epoch 57/100\n", - "3340/3340 [==============================] - 7s 2ms/step - loss: 0.1714 - accuracy: 0.9613 - val_loss: 0.1716 - val_accuracy: 0.9591\n", - "3125/3125 [==============================] - 1s 262us/step\n", - "\n", - "===================================\n", - "Start location = 100, Window size = 400\n", - " Accuracy 0.96057\n", - " Fidelity 0.9211400000000001\n" - ] - } - ], + "outputs": [], "source": [ - "if True:\n", + "if False:\n", " #########################\n", " # 1. declare model \n", " #########################\n", @@ -567,52 +324,31 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'../checkpoints/scan_window_location_and_size_h4/sl100_ws400/qkeras_model_best.h5'" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ + "notes = {}\n", "ckp_filename = os.path.join(ckp_dir, checkpoint_filename)\n", "ckp_filename" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3125/3125 [==============================] - 1s 250us/step\n", - "Keras Accuracy (with sigmoid): 0.96083\n", - "Keras Fidelity (with sigmoid): 0.9216599999999999\n", - "3125/3125 [==============================] - 1s 297us/step\n", - "Keras Accuracy (w/o sigmoid): 0.96002\n", - "Keras Fidelity (w/o sigmoid): 0.92004\n" - ] - } - ], + "outputs": [], "source": [ "checkpoint_model = get_model(input_shape=input_shape, hidden=hidden_neurons, is_pruned=False, activation='sigmoid')\n", "checkpoint_model.load_weights(ckp_filename)\n", "\n", - "y_pred = checkpoint_model.predict(X_test)\n", - "test_acc = accuracy_score(y_test, np.where(y_pred < 0.5, 0, 1).reshape(-1))\n", + "y_keras = checkpoint_model.predict(X_test)\n", + "test_acc = accuracy_score(y_test, np.where(y_keras < 0.5, 0, 1).reshape(-1))\n", "\n", "print(f\"Keras Accuracy (with sigmoid): {test_acc}\")\n", "print(f\"Keras Fidelity (with sigmoid): {test_acc*2-1}\")\n", + "notes[\"Keras Accuracy (with sigmoid)\"] = test_acc\n", + "notes[\"Keras Fidelity (with sigmoid)\"] = test_acc*2-1\n", "\n", "checkpoint_model = get_model(input_shape=input_shape, hidden=hidden_neurons, is_pruned=False, activation=None)\n", "checkpoint_model.load_weights(ckp_filename)\n", @@ -621,7 +357,9 @@ "test_acc = accuracy_score(y_test, np.where(y_pred < 0.5, 0, 1).reshape(-1))\n", "\n", "print(f\"Keras Accuracy (w/o sigmoid): {test_acc}\")\n", - "print(f\"Keras Fidelity (w/o sigmoid): {test_acc*2-1}\")" + "print(f\"Keras Fidelity (w/o sigmoid): {test_acc*2-1}\")\n", + "notes[\"Keras Accuracy (w/o sigmoid)\"] = test_acc\n", + "notes[\"Keras Fidelity (w/o sigmoid)\"] = test_acc*2-1" ] }, { @@ -633,50 +371,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of layers: 3\n", - "% of zeros = 0.0\n", - "% of zeros = 0.0\n", - "% of zeros = 0.0\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAJdCAYAAAAbVYLfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1WElEQVR4nO3dfVzUVf7//yegDKKCGobitWYmpmIqZJuiySc1MrMrrdaQutlWWBatrW6bpvVJTSs/W9PamhdbWl59TLe8yDJdy6+raGopVuqiebGgpguKigrn90c/5uM4iIAHZgYe99uN2805c97zfp15z8DT8z7zngBjjBEAAACuSqC3CwAAAKgMCFUAAAAWEKoAAAAsIFQBAABYQKgCAACwgFAFAABgAaEKAADAAkIVAACABYQqAAAACwhVAMpk8uTJatmypYKCghQTE+PtclDOevbsqZ49e3q7DMCnEaqACjB79mwFBARo8+bN3i7FilWrVumFF17Qb37zG82aNUuvvfZaibfdtGmTnnrqKXXu3FnVq1dXQECAlZr+85//6PHHH1f9+vVVs2ZN9erVS99++22Jt9+1a5f69u2rWrVqqV69ehoyZIiOHj3q0a+goECvv/66WrRooZCQEHXo0EEff/xxiffzzTffqF+/fmrUqJFCQkLUtGlT9e/fXx999FGJH8MXHD58WC+//LK2bdvm7VIAn1HN2wUA8D9fffWVAgMDNWPGDAUHB5dq2+XLl+v9999Xhw4d1LJlS/30009XXU9BQYESExO1fft2jRw5UhEREXr33XfVs2dPbdmyRa1bty52+4MHD6pHjx4KDw/Xa6+9plOnTmnKlCn6/vvvtWnTJrcxvvjii5o4caKGDRumrl27aunSpXrooYcUEBCgwYMHF7ufhQsXatCgQYqJidGIESNUt25dZWRkaN26dZo+fboeeuihq34uysuqVavcbh8+fFjjxo1T8+bNmakEChkA5W7WrFlGkklLS/N2KSWSn59vzpw5c9n7k5OTTc2aNcv02JmZmeb06dPGGGNSUlKMjV9D8+fPN5LMwoULXW1HjhwxderUMQ8++OAVt3/yySdNjRo1zP79+11tX3zxhZFk3nvvPVfbwYMHTfXq1U1KSoqrraCgwHTv3t00btzYXLhwodj9REdHm3bt2pm8vDyP+7Kysq5Yp22nTp0q87ZpaWlGkpk1a5a9ggA/x+k/wEecO3dOY8aMUefOnRUeHq6aNWuqe/fuWrNmjauPMUbNmzfXgAEDPLY/e/aswsPD9bvf/c7VlpeXp7Fjx+q6666Tw+FQkyZN9MILLygvL89t24CAAA0fPlxz585Vu3bt5HA4tHLlyiLrDAgI0KxZs5Sbm6uAgAAFBARo9uzZrvvnzJmj2NhYhYaGqm7duurRo4fbLEdkZKRq1KhR1qepSIsWLVJkZKTuueceV1v9+vX1wAMPaOnSpR7jvdT//u//6s4771TTpk1dbQkJCbr++uu1YMECV9vSpUt1/vx5PfXUU662gIAAPfnkkzp48KA2bNhQ7H727t2rrl27Fjm7d+2117r+vW/fPgUEBGjKlCl666231KxZM9WoUUPx8fHasWOH23bfffedhg4dqpYtWyokJEQNGjTQo48+ql9++cWt38svv6yAgAClp6froYceUt26dXXrrbdKkjIzM5WcnKzGjRvL4XCoYcOGGjBggPbt2+fa/uI1VWvXrlXXrl0lScnJyW6vg7Fjx6p69epFnjp9/PHHVadOHZ09e7bY5wnwV4QqwEfk5OTo/fffV8+ePTVp0iS9/PLLOnr0qPr06eNatxIQEKDf/va3WrFihY4fP+62/aeffqqcnBz99re/lfTrKbG77rpLU6ZMUf/+/fX222/r7rvv1ltvvaVBgwZ57P+rr77Sc889p0GDBul//ud/1Lx58yLr/PDDD9W9e3c5HA59+OGH+vDDD9WjRw9J0rhx4zRkyBBVr15d48eP17hx49SkSRN99dVX9p6oImzdulU33XSTAgPdf6XFxsbq9OnTxZ5iPHTokI4cOaIuXbp43BcbG6utW7e67admzZpq27atR7/C+4vTrFkzrV69WgcPHrzimCTpgw8+0J///GelpKRo9OjR2rFjh2677TZlZWW5+nzxxRf617/+peTkZL399tsaPHiw5s2bpzvuuEPGGI/HvP/++3X69Gm99tprGjZsmCTp3nvv1SeffKLk5GS9++67euaZZ3Ty5En9/PPPRdbVtm1bjR8/XtKvQeni18GQIUN04cIFzZ8/322bc+fOadGiRbr33nsVEhJSovEDfsfbU2VAVVCS038XLlzwOC104sQJExkZaR599FFX248//mgkmb/85S9ufe+66y7TvHlzU1BQYIwx5sMPPzSBgYHm66+/dus3bdo0I8msX7/e1SbJBAYGmp07d5ZoPElJSR6n/3bv3m0CAwPNwIEDTX5+vtt9hTVdytbpv5o1a7o9R4WWLVtmJJmVK1dedtvC01gffPCBx30jR440kszZs2eNMcYkJiaali1bevTLzc01ksyoUaOKrXPGjBlGkgkODja9evUyL730kvn66689nq+MjAwjydSoUcMcPHjQ1b5x40YjyTz33HOutsJTqRf7+OOPjSSzbt06V9vYsWONJI/ToSdOnDCSzOTJk4utPT4+3sTHx7tuF3f6r1u3biYuLs6tbfHixUaSWbNmTbH7AfwZM1WAjwgKCnKdFiooKNDx48d14cIFdenSxe1TbNdff73i4uI0d+5cV9vx48e1YsUKPfzww65P0y1cuFBt27bVDTfcoGPHjrl+brvtNklyO60oSfHx8YqOji5z/UuWLFFBQYHGjBnjMWNk6xN+l3PmzBk5HA6P9sIZkTNnzhS7raQSbX81+5GkRx99VCtXrlTPnj31zTff6JVXXlH37t3VunVr/b//9/88+t99991q1KiR63ZsbKzi4uK0fPlyV9vFp1LPnj2rY8eO6eabb5akIj/9+MQTT7jdrlGjhoKDg7V27VqdOHGi2PpL6pFHHtHGjRu1d+9eV9vcuXPVpEkTxcfHW9kH4IsIVYAP+dvf/qYOHTooJCRE11xzjerXr69ly5YpOzvbrd8jjzyi9evXa//+/ZJ+DVDnz5/XkCFDXH12796tnTt3qn79+m4/119/vSTpyJEjbo/ZokWLq6p97969CgwMvKpgVlY1atQoct1U4dqd4tZwFd5Xku2vZj+F+vTpo88//1z/+c9/tG7dOqWkpGj//v268847PY5JUZ9avP76693WOh0/flwjRoxwrVWrX7++61he+rqRPI+zw+HQpEmTtGLFCkVGRqpHjx56/fXXlZmZecWxXM6gQYPkcDhcwT87O1ufffaZW+gHKiNCFeAj5syZo6FDh6pVq1aaMWOGVq5cqS+++EK33XabCgoK3PoOHjxY1atXd/3RmjNnjrp06aI2bdq4+hQUFKh9+/b64osvivy5eLG1VLJA4KsaNmyof//73x7thW1RUVHFbntx30u3r1evnmt2qmHDhsrMzPRYq1SS/VwqNDRU3bt31zvvvKM//elPOnHihFasWFHi7Qs98MADmj59up544gktXrxYq1atcn3I4NLXjVT0cX722Wf1008/acKECQoJCdFLL72ktm3bXnGN2OXUrVtXd955p+v1uWjRIuXl5bnW+wGVFdepAnzEokWL1LJlSy1evNjtf/Njx4716FuvXj0lJiZq7ty5evjhh7V+/XpNnTrVrU+rVq20fft29e7du0JmB1q1aqWCggKlp6dX+HWLYmJi9PXXX6ugoMDt1OPGjRsVGhrqmp0rSqNGjVS/fv0iL8y6adMmt7HExMTo/fff165du9xm5DZu3Oi6vywKF8lfGux2797t0fenn35yfYjgxIkTWr16tcaNG6cxY8YUu92VtGrVSs8//7yef/557d69WzExMXrjjTc0Z86cIvtf6TX1yCOPaMCAAUpLS9PcuXPVqVMntWvXrtR1Af6EmSrARwQFBUmS2yzIxo0bL/sx/SFDhig9PV0jR45UUFCQx4UnH3jgAR06dEjTp0/32PbMmTPKzc21WP2v638CAwM1fvx4jxmSS2d2bLvvvvuUlZWlxYsXu9qOHTumhQsXqn///m7roPbu3eu21kf69dNvn332mQ4cOOBqW716tX766Sfdf//9rrYBAwaoevXqevfdd11txhhNmzZNjRo10i233FJsnatXry6yvXCN1MUzjdKv69QOHTrkur1p0yZt3LhR/fr1k1T0a0aSR8AuzunTpz0ucdCqVSvVrl272EtR1KxZU9KvV7IvSr9+/RQREaFJkybpH//4B7NUqBKYqQIq0MyZM4u8/tOIESN05513avHixRo4cKASExOVkZGhadOmKTo6WqdOnfLYJjExUddcc40WLlyofv36uV3nSPo1dC1YsEBPPPGE1qxZo9/85jfKz8/XDz/8oAULFujzzz8v8jICZXXdddfpxRdfdC2+vueee+RwOJSWlqaoqChNmDBBkrR//359+OGHkuSaHXr11Vcl/XrJgYvXhfXs2VP/+Mc/rhjK7rvvPt18881KTk5Wenq664rq+fn5GjdunFvf3r17S5LbuqQ//vGPWrhwoXr16qURI0bo1KlTmjx5stq3b6/k5GRXv8aNG+vZZ5/V5MmTdf78eXXt2lVLlizR119/rblz57pCzuUMGDBALVq0UP/+/dWqVSvl5ubqyy+/1KeffqquXbuqf//+Hs/prbfeqieffFJ5eXmaOnWqrrnmGr3wwguSpLCwMNcaqPPnz6tRo0Za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xj19+nR1795ddevWVd26dZWQkODRf+jQoR7Htm/fvuU9jDIpzdhnz57tMa6QkBC3PpXxmBf1eywgIECJiYmuPv5wzNetW6f+/fsrKipKAQEBWrJkyRW3Wbt2rW666SY5HA5dd911mj17tkef0v7euCxThY0ZM8a8+eabJjU11YSHh5dom4kTJ5rw8HCzZMkSs337dnPXXXeZFi1amDNnzrj69O3b13Ts2NH885//NF9//bW57rrrzIMPPlhOoyi90tZ34cIF8+9//9vtZ9y4caZWrVrm5MmTrn6SzKxZs9z6Xfy8+IKyHJv4+HgzbNgwt3FlZ2e77r9w4YK58cYbTUJCgtm6datZvny5iYiIMKNHjy7v4ZRYacf9/fffm3vuucf8/e9/N3v27DGrV682rVu3Nvfee69bP1875vPmzTPBwcFm5syZZufOnWbYsGGmTp06Jisrq8j+69evN0FBQeb111836enp5k9/+pOpXr26+f777119SvKe97bSjvuhhx4yTqfTbN261ezatcsMHTrUhIeHm4MHD7r6JCUlmb59+7od2+PHj1fUkEqstGOfNWuWCQsLcxtXZmamW5/KeMx/+eUXtzHv2LHDBAUFmVmzZrn6+MMxX758uXnxxRfN4sWLjSTzySefFNv/X//6lwkNDTWpqakmPT3dvP322yYoKMisXLnS1ae0z2VxqnSoKjRr1qwShaqCggLToEEDM3nyZFfbf/7zH+NwOMzHH39sjDEmPT3dSDJpaWmuPitWrDABAQHm0KFD1msvLVv1xcTEmEcffdStrSQvcG8q69jj4+PNiBEjLnv/8uXLTWBgoNsv5r/85S8mLCzM5OXlWan9atg65gsWLDDBwcHm/PnzrjZfO+axsbEmJSXFdTs/P99ERUWZCRMmFNn/gQceMImJiW5tcXFx5ne/+50xpmTveV9Q2nFf6sKFC6Z27drmb3/7m6stKSnJDBgwwHap1pV27Ff6fV9Vjvlbb71lateubU6dOuVq85djXqgkv39eeOEF065dO7e2QYMGmT59+rhuX+1zebEqffqvtDIyMpSZmamEhARXW3h4uOLi4rRhwwZJ0oYNG1SnTh116dLF1SchIUGBgYHauHFjhdd8KRv1bdmyRdu2bdNjjz3mcV9KSooiIiIUGxurmTNnyvjQZdCuZuxz585VRESEbrzxRo0ePVqn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", - "text/plain": [ - "<Figure size 700x700 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAJdCAYAAAAIgsIrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAu9ElEQVR4nO3deZRU9Zn4/6cBaRDpZhVBVnHBRqAVGmOMAgbHIYhRR8UYI5KoyQgzJkRn5MQRUAd/xj3ayjjuiktgFJOouOK4RnFBo61GETMIAuJCCyoIfb9/+KNi2ew2n2rb1+ucOp66davuU30LfHPrVnVRlmVZAACwVTUq9AAAAN8GogsAIAHRBQCQgOgCAEhAdAEAJCC6AAASEF0AAAmILgCABEQXAEACogu+4bp37x4HH3xwocfIOf7442O77bYr9BgQERETJ06MoqKiQo8BESG6+Ba6/vrro6ioKJ599tlCj1IvLVy4MCZOnBhz5swp9Cj1yrvvvhunn356DBkyJFq2bBlFRUXxyCOPfO3Hrampid/+9rfRo0ePaNasWfTt2zduvfXWTb7/Rx99FCeddFK0b98+WrRoEUOGDInnn39+nev+4Q9/iL322iuaNWsWXbt2jQkTJsTq1as3aTtvv/12jB49Onr27BnNmjWLHXbYIfbff/+YMGHCJs9aX0yePDlmzJhR6DH4FhJdQJ6FCxfGpEmTRNdXvP7663HeeefFggULok+fPnX2uL/5zW/i3//93+PAAw+Myy67LLp27RrHHHNM3HbbbRu9b01NTQwfPjxuueWWGDt2bPz2t7+NJUuWxODBg+ONN97IW/fee++NQw89NFq1ahWXXXZZHHrooXHOOefEv/zLv2x0O2+++Wbsueeecd9998WPfvSjuPzyy2PMmDHRtm3bOO+887b4uadwxhlnxKeffpq3THRRKE0KPQCwYTU1NbFq1apo1qxZoUf5RlqxYkW0aNHiaz9O//794/333482bdrE9OnT48gjj/zaj7lgwYK48MILY8yYMXH55ZdHRMQJJ5wQgwYNitNOOy2OPPLIaNy48XrvP3369HjyySdj2rRpccQRR0RExFFHHRW77rprTJgwIW655Zbcuqeeemr07ds37r///mjS5Iu/+ktKSmLy5MlxyimnRK9evda7nYsvvjiWL18ec+bMiW7duuXdtmTJki1+/lvqs88+i6ZNm0ajRhs/btCkSZPc84VCc6QL1mHVqlVx5plnRv/+/aO0tDRatGgR++23X8yaNSu3TpZl0b179/jhD39Y6/6fffZZlJaWxs9//vPcspUrV8aECRNi5513juLi4ujSpUv827/9W6xcuTLvvkVFRTF27NiYOnVq9O7dO4qLi2PmzJkbnfn++++P8vLyaNasWZSVlcUdd9yRd/sHH3wQp556avTp0ye22267KCkpiWHDhsWLL76YW+eRRx6JioqKiIgYPXp0FBUVRVFRUVx//fW5dZ5++un4wQ9+EK1bt44WLVpE375949JLL601z4IFC+LQQw+N7bbbLtq3bx+nnnpqrFmzJnf722+/HUVFRXHBBRfEVVddFT179ozi4uKoqKiI2bNn13q8hx9+OPbbb79o0aJFtGrVKn74wx/Gq6++mrfO2vN3qqqq4phjjonWrVvH9773vYj4+7lvjzzySAwYMCCaN28effr0yb1FeMcdd0SfPn2iWbNm0b9//3jhhRfyHrtly5bRpk2bje6HzXHXXXfF559/HieffHJuWVFRUfzzP/9zvPPOO/HUU09t8P7Tp0+PDh06xOGHH55b1r59+zjqqKPirrvuyr22qqqqoqqqKk466aS8ADn55JMjy7KYPn36Brczd+7c6Ny5c63giojYfvvt866v/TnXxesx4ovXZFFRUdx2221xxhlnxI477hjbbrttVFdXx+effx6TJk2KXXbZJZo1axZt27aN733ve/HAAw/k7v/Vc7qKiopixYoVccMNN+Re38cff3zMmjUrioqK4s4776z1HG+55ZYoKira6P6AjRFdsA7V1dVx9dVXx+DBg+O8886LiRMnxnvvvRcHHXRQ7m23oqKiOPbYY+Pee++NDz74IO/+f/zjH6O6ujqOPfbYiPjiaNUhhxwSF1xwQYwYMSL39s7FF18cI0eOrLX9hx9+OH71q1/FyJEj49JLL43u3btvcN433ngjRo4cGcOGDYtzzz03mjRpEkceeWTe/3zeeuutmDFjRhx88MFx0UUXxWmnnRZ/+ctfYtCgQbFw4cKIiNh9993jrLPOioiIk046KW666aa46aabYv/994+IiAceeCD233//qKqqilNOOSUuvPDCGDJkSPzpT3/Km2fNmjVx0EEHRdu2beOCCy6IQYMGxYUXXhhXXXVVrdlvueWWOP/88+PnP/95nHPOOfH222/H4YcfHp9//nlunQcffDAOOuigWLJkSUycODHGjRsXTz75ZOy7777x9ttv13rMI488Mj755JOYPHlynHjiibnlb775ZhxzzDExYsSIOPfcc+PDDz+MESNGxNSpU+NXv/pVHHvssTFp0qSYO3duHHXUUVFTU7PBn/vX9cILL0SLFi1i9913z1s+cODA3O0bu/9ee+1V64jPwIED45NPPom//vWveY8zYMCAvPU6deoUnTt33uh2unXrFvPnz4+HH354408q6u71+GVnn3123H333XHqqafG5MmTo2nTpjFx4sSYNGlSDBkyJC6//PL4zW9+E127dl3vOW0RETfddFMUFxfHfvvtl3t9//znP4/BgwdHly5dYurUqbXuM3Xq1OjZs2fss88+m/T8Yb0y+Ja57rrrsojIZs+evd51Vq9ena1cuTJv2Ycffph16NAh++lPf5pb9vrrr2cRkV155ZV56x5yyCFZ9+7ds5qamizLsuymm27KGjVqlD322GN5602ZMiWLiOyJJ57ILYuIrFGjRtkrr7yySc+nW7duWURk//M//5NbtmzZsqxjx47ZnnvumVv22WefZWvWrMm777x587Li4uLsrLPOyi2bPXt2FhHZddddl7fu6tWrsx49emTdunXLPvzww7zb1j7PLMuyUaNGZRGR95hZlmV77rln1r9//7xtR0TWtm3b7IMPPsgtv+uuu7KIyP74xz/mlpWXl2fbb7999v777+eWvfjii1mjRo2y4447LrdswoQJWURkP/rRj9b7c3ryySdzy+67774sIrLmzZtnf/vb33LL/+u//iuLiGzWrFm1HifLsmzatGkbvH1TDR8+PNtpp51qLV+xYkUWEdnpp5++wfu3aNEi7/W41t13351FRDZz5swsy7Ls/PPPzyIi+7//+79a61ZUVGTf+c53Nridl19+OWvevHkWEVl5eXl2yimnZDNmzMhWrFhRa926fj3OmjUri4hsp512yj755JO89fv165cNHz58g7OvfU18WYsWLbJRo0bVWnf8+PFZcXFx9tFHH+WWLVmyJGvSpEk2YcKEDW4HNoUjXbAOjRs3jqZNm0bEF0epPvjgg1i9enUMGDAg71/Ru+66a+y99955/zr+4IMP4t57740f//jHubc1pk2bFrvvvnv06tUrli5dmrsccMABERF5b1tGRAwaNCjKyso2ed5OnTrFYYcdlrteUlISxx13XLzwwguxaNGiiIgoLi7OHRFZs2ZNvP/++7HddtvFbrvttsEjA2u98MILMW/evPjlL38ZrVq1yrttXR/J/8UvfpF3fb/99ou33nqr1nojR46M1q1b560XEbl133333ZgzZ04cf/zxeW/v9e3bNw488MC45557NrrttcrKyvKOVuy9994REXHAAQdE165day1f17x16dNPP43i4uJay9eev/fVE8C39P5r/7u+dTe2nd69e8ecOXPi2GOPjbfffjsuvfTSOPTQQ6NDhw7x3//937XW3xqvx1GjRkXz5s3zlrVq1SpeeeWVWh8a2FLHHXdcrFy5Mu/t1ttvvz1Wr16dO2oNX4fogvW44YYbom/fvrlzRdq3bx933313LFu2LG+94447Lp544on429/+FhFfBNbnn38eP/nJT3LrvPHGG/HKK69E+/bt8y677rprRNQ+GblHjx6bNevOO+9cK3zWPvbat99qamri4osvjl122SWKi4ujXbt20b59+3jppZdqPad1mTt3bkRE7LHHHhtdt1mzZtG+ffu8Za1bt44PP/yw1rpfjp2160VEbt21P9fddtut1n133333WLp0aaxYsSJv+fp+fl/dVmlpaUREdOnSZZ3L1zVvXWrevHmtc/oivjgncO3tdXH/tf9d37ob207EF6+nm266KZYuXRovvfRSTJ48OZo0aRInnXRSPPjgg3nrbo3X47r26VlnnRUfffRR7LrrrtGnT5847bTT4qWXXtroc1mfXr16RUVFRd4/oqZOnRrf+c53Yuedd97ix4W1RBesw8033xzHH3989OzZM6655pqYOXNmPPDAA3HAAQfUOs/n6KOPjm222Sb3F/XNN98cAwYMyIuEmpqa6NOnTzzwwAPrvHz5ROqIjf/PdktMnjw5xo0bF/vvv3/cfPPNcd9998UDDzwQvXv3rvNzlzb0ibtNXTfLsi3e/vp+fuvb1taYYVN07NgxFi1aVGs77777bkR8ccRoY/dfu+6G7t+xY8e85V9dd2Pb+bLGjRtHnz59Yvz48bmTztd1HtTGbO7rcV37dP/994+5c+fGtddeG3vssUdcffXVsddee8XVV1+92fOsddxxx8X//u//xjvvvBNz586NP//5z45yUWd8jhbWYfr06bHTTjvFHXfckfcv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gAREFwBAAqILACAB0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAREFwBAAqILACAB0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAQaTHRVVlZGWVlZVFRUFHoUAIBairIsywo9RF2qrq6O0tLSWLZsWZSUlBR6HACgAduc7mgwR7oAAOoz0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAREFwBAAqILACAB0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAREFwBAAqILACAB0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAREFwBAAqILACAB0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAREFwBAAqILACAB0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAREFwBAAqILACAB0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAREFwBAAqILACAB0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAREFwBAAqILACAB0QUAkIDoAgBIQHQBACQgugAAEhBdAAAJiC4AgAREFwBAAqILACAB0QUAkEC9jK4//elPsdtuu8Uuu+wSV199daHHAQD42poUeoCvWr16dYwbNy5mzZoVpaWl0b9//zjssMOibdu2hR4NAGCL1bsjXc8880z07t07dtxxx9huu+1i2LBhcf/99xd6LACAr6XOo+vRRx+NESNGRKdOnaKoqChmzJhRa53Kysro3r17NGvWLPbee+945plncrctXLgwdtxxx9z1HXfcMRYsWFDXYwIAJFXn0bVixYro169fVFZWrvP222+/PcaNGxcTJkyI559/Pvr16xcHHXRQLFmypK5HAQCoN+o8uoYNGxbnnHNOHHbYYeu8/aKLLooTTzwxRo8eHWVlZTFlypTYdttt49prr42IiE6dOuUd2VqwYEF06tRpvdtbuXJlVFdX510AAOqbpCfSr1q1Kp577rkYP358blmjRo1i6NCh8dRTT0VExMCBA+Pll1+OBQsWRGlpadx7773xH//xH+t9zHPPPTcmTZq01Wf/qu6n3513/e3/b3jyGb5tvvozj/Bzh/rCn0/qi/r8Wkx6Iv3SpUtjzZo10aFDh7zlHTp0iEWLFkVERJMmTeLCCy+MIUOGRHl5efz617/e4CcX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LUozMBGxZX/eVq5cGb/5zW+iW7duUVxcHN27d49rr7126w8boqvBW7FiRfTr1y8qKys3af1HH300DjzwwLjnnnviueeeiyFDhsSIESPihRde2MqT8mWbu99atGgRY8eOjUcffTReffXVOOOMM+KMM86Iq666aitPyldt7r5b66OPPorjjjsuvv/972+lydiQLd1vr7/+erz77ru5y/bbb7+VJmRdtmS/HXXUUfHQQw/FNddcE6+//nrceuutsdtuu23FKf/OV0Z8ixQVFcWdd94Zhx566Gbdr3fv3jFy5Mg488wzt85gbNCW7rfDDz88WrRoETfddNPWGYyN2px9d/TRR8cuu+wSjRs3jhkzZsScOXO2+nys26bst0ceeSSGDBkSH374YbRq1SrZbKzfpuy3mTNnxtFHHx1vvfVWtGnTJt1w/z9Hutigmpqa+Pjjjwvy4mTLvfDCC/Hkk0/GoEGDCj0Km+C6666Lt956KyZMmFDoUdhM5eXl0bFjxzjwwAPjiSeeKPQ4bMQf/vCHGDBgQPz2t7+NHXfcMXbdddc49dRT49NPP02y/Qb3C6+pWxdccEEsX748jjrqqEKPwibo3LlzvPfee7F69eqYOHFinHDCCYUeiY1444034vTTT4/HHnssmjTxV/I3RceOHWPKlCkxYMCAWLlyZVx99dUxePDgePrpp2OvvfYq9Hisx1tvvRWPP/54NGvWLO68885YunRpnHzyyfH+++/Hddddt9W3708463XLLbfEpEmT4q677nKewjfEY489FsuXL48///nPcfrpp8fOO+8cP/rRjwo9FuuxZs2aOOaYY2LSpEmx6667FnocNsNuu+2Wdx7Qd7/73Zg7d25cfPHF3tKvx2pqaqKoqCimTp0apaWlERFx0UUXxRFHHBFXXHFFNG/efKtuX3SxTrfddluccMIJMW3atBg6dGihx2ET9ejRIyIi+vTpE4sXL46JEyeKrnrs448/jmeffTZeeOGFGDt2bER88T+FLMuiSZMmcf/998cBBxxQ4CnZVAMHDozHH3+80GOwAR07dowdd9wxF1wREbvvvntkWRbvvPNO7LLLLlt1+6KLWm699db46U9/GrfddlsMHz680OOwhWpqamLlypWFHoMNKCkpib/85S95y6644op4+OGHY/r06bmI5pthzpw50bFjx0KPwQbsu+++MW3atFi+fHlst912ERHx17/+NRo1ahSdO3fe6tsXXQ3c8uXL480338xdnzdvXsyZMyfatGkTXbt2jfHjx8eCBQvixhtvjIgv3lIcNWpUXHrppbH33nvnvnOmefPmef8yYOva3P1WWVkZXbt2jV69ekXEF1/9ccEFF8S//uu/FmT+b7PN2XeNGjWKPfbYI+/+22+/fTRr1qzWcrauzf0zd8kll0SPHj2id+/e8dlnn8XVV18dDz/8cNx///2FegrfSpu734455pg4++yzY/To0TFp0qRYunRpnHbaafHTn/50q7+1GBERGQ3arFmzsoiodRk1alSWZVk2atSobNCgQbn1Bw0atMH1SWNz99vvfve7rHfv3tm2226blZSUZHvuuWd2xRVXZGvWrCnME/gW29x991UTJkzI+vXrl2RW/m5z99t5552X9ezZM2vWrFnWpk2bbPDgwdnDDz9cmOG/xbbkz9urr76aDR06NGvevHnWuXPnbNy4cdknn3ySZF7f0wUAkIDv6QIASEB0AQAkILoAABIQXQAACYguAIAERBcAQAKiCwAgAdEFAJCA6AIASEB0AQAkILoAABIQXQAACfw/JL0DJp9+//cAAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 700x700 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAJdCAYAAAAIgsIrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzPUlEQVR4nO3de1TUdeL/8RegDHgBNRRF8UZmjpmYAtmuqclJidS1m3Yxoo5thZtla6tbSdqetLTyu+207te8bGl5+5pWXlJJ1+rnKpmWipW6VF4WvAaKigrv3x8dJqdBFBzfA9PzcQ5nm8+8Z+b9efOJnjvz4UOQMcYIAAAAl1WwvycAAADwa0B0AQAAWEB0AQAAWEB0AQAAWEB0AQAAWEB0AQAAWEB0AQAAWEB0AQAAWEB0AQAAWEB0AbgsJk2apLZt2yokJETx8fH+ng4us169eqlXr17+ngZQrRFdQDUwa9YsBQUF6fPPP/f3VHxi5cqVevrpp/Wb3/xGM2fO1IsvvnhRjystLdWsWbM0YMAAxcbGqm7durrmmmv0l7/8RadOnbqkOf344496+OGH1bhxY9WtW1e9e/fWF198cdGP37Fjh/r166d69eqpUaNGGjp0qA4ePFjuPrz88stq06aNwsLCdO211+rdd9+96Nf59NNPlZKSoubNmyssLEwtW7ZU//799c4771z0c1QH+/fv1/PPP68tW7b4eypAtVHL3xMAEHg+/vhjBQcHa/r06QoNDb3ox504cULp6em6/vrr9cgjj6hJkyZav369MjMzlZWVpY8//lhBQUGVnk9paalSU1P15ZdfatSoUYqKitIbb7yhXr16adOmTWrXrl2Fj9+7d69uvPFGRUZG6sUXX9Tx48c1efJkbd26VRs3bvTYx2eeeUYTJ07UsGHDlJCQoCVLluiee+5RUFCQhgwZUuHrLFiwQIMHD1Z8fLxGjBihhg0bKjc3V+vWrdO0adN0zz33VHrfbVm5cqXH7f3792vcuHFq3bo173QCZQwAv5s5c6aRZLKzs/09lYtSUlJiTp48ed7709PTTd26dSv9vMXFxeazzz7z2j5u3DgjyaxatarSz2mMMfPmzTOSzIIFC9zbDhw4YBo0aGDuvvvuCz7+0UcfNeHh4eb77793b1u1apWRZP7xj3+4t+3du9fUrl3bZGRkuLeVlpaaHj16mBYtWpizZ89W+DpOp9N07NjRFBcXe92Xn59/wXn62vHjx6v82OzsbCPJzJw503cTAmo4Pl4EaojTp09r7Nix6tq1qyIjI1W3bl316NFDa9ascY8xxqh169YaOHCg1+NPnTqlyMhI/f73v3dvKy4uVmZmpq688ko5HA7Fxsbq6aefVnFxscdjg4KCNHz4cM2ZM0cdO3aUw+HQihUryp1nUFCQZs6cqaKiIgUFBSkoKEizZs1y3z979mwlJiaqTp06atiwoW688Ub3uyShoaG64YYbvJ5z0KBBkn76iK8qFi5cqOjoaN12223ubY0bN9Zdd92lJUuWeO3vL/3f//2fbr31VrVs2dK9LTk5WVdddZXmz5/v3rZkyRKdOXNGjz32mHtbUFCQHn30Ue3du1fr16+v8HV2796thISEct8dbNKkifufv/vuOwUFBWny5Ml67bXX1KpVK4WHh6tnz57atm2bx+O++uorPfDAA2rbtq3CwsLUtGlTPfjggzp8+LDHuOeff15BQUHKycnRPffco4YNG+q3v/2tJCkvL0/p6elq0aKFHA6HmjVrpoEDB+q7775zP/7cc7rWrl2rhIQESVJ6errHcZCZmanatWuX+9Hsww8/rAYNGlzyR8lAdUV0ATVEYWGh3nzzTfXq1UsvvfSSnn/+eR08eFB9+/Z1nzcTFBSk++67T8uXL9eRI0c8Hv/BBx+osLBQ9913n6SfPnIbMGCAJk+erP79++v111/X7373O7322msaPHiw1+t//PHHevLJJzV48GD9z//8j1q3bl3uPN9++2316NFDDodDb7/9tt5++23deOONkqRx48Zp6NChql27tsaPH69x48YpNjZWH3/8cYX7npeXJ0mKioqqzJK5bd68Wdddd52Cgz1/5CUmJurEiRP69ttvz/vYffv26cCBA+rWrZvXfYmJidq8ebPH69StW1cdOnTwGld2f0VatWqlrKws7d2794L7JElvvfWW/vrXvyojI0NjxozRtm3bdNNNNyk/P989ZtWqVfrPf/6j9PR0vf766xoyZIjmzp2rW265RcYYr+e88847deLECb344osaNmyYJOn222/Xe++9p/T0dL3xxht6/PHHdezYMf3www/lzqtDhw4aP368pJ9C6tzjYOjQoTp79qzmzZvn8ZjTp09r4cKFuv322xUWFnZR+w/UOP5+qw3AxX28ePbs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cYeuv/56paenKycnx31F+pKSEo0bN85jbJ8+fSTJ47yoP//5z1qwYIF69+6tESNG6Pjx45o0aZI6deqk9PR097gWLVroiSee0KRJk3TmzBklJCRo8eLF+uSTTzRnzhx3BJ3PwIED1aZNG/Xv319xcXEqKirS6tWr9cEHHyghIUH9+/f3WtPf/va3evTRR1VcXKwpU6boiiuu0NNPPy1JioiIcJ+DdebMGTVv3lwrV65Ubm5uhfM417fffqs+ffrorrvuktPpVK1atfTee+8pPz+/wivsx8XFqUGDBpo6darq16+vunXrKikpyX3OWO3atTVkyBD97W9/U0hIiO6+++6LnhNQY/nzVycB/KTskhHn+9qzZ48pLS01L774omnVqpVxOBymS5cu5sMPPzRpaWmmVatW5T7vY489ZiSZd955p9z7T58+bV566SXTsWNH43A4TMOGDU3Xrl3NuHHjTEFBgXucJI+rrF9IeZeMKDNjxgzTpUsX9+v17NnTfaX5skshnO8rLS3N47m6du1qmjZtelFzOnLkiHnooYfMFVdcYerUqWN69uxZ7iU6WrVqVe56btu2zdx8882mTp06pkGDBubee+81eXl5XuNKSkrc36fQ0FDTsWNHM3v27Iua47vvvmuGDBli4uLiTHh4uAkLCzNOp9M888wzprCw0D2ubJ0mTZpkXnnlFRMbG2scDofp0aOH+fLLLz2ec+/evWbQoEGmQYMGJjIy0tx5551m//79RpLJzMx0jyu7ZMTBgwc9Hn/o0CGTkZFhrr76alO3bl0TGRlpkpKSzPz58z3G/fKSEcYYs2TJEuN0Ok2tWrXKvXzExo0bjSRz8803X9T6ADVdkDEX+L+IAGqsJ598UtOnT1deXp7q1Knj7+n41LFjx9SoUSNNmTJFGRkZ/p6OVd99953atGmjSZMm6Y9//KO/p1NlX375peLj4/XWW295/GYtEKg4pwsIUKdOndLs2bN1++23B1xwSdK6devUvHlz91XTUfNMmzZN9erV8/jzTEAg45wuIMAcOHBAq1ev1sKFC3X48GGNGDHC31O6LFJTU5WamurvaaAKPvjgA+Xk5Oh///d/NXz4cPdJ90CgI7qAAJOTk6N7771XTZo00V//+tcqX6YAuFz+8Ic/KD8/X7fccovXLzIAgYxzugAAACzgnC4AAAALiC4AAAALAu6crtLSUu3fv1/169fnD6cCAIDLyhijY8eOKSYmxuPPjJUn4KJr//79io2N9fc0AADAr8iePXvUokWLCscEXHTVr19f0k87HxER4efZAACAQFZYWKjY2Fh3f1Qk4KKr7CPFiIgIogsAAFhxMac0cSI9AACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABdUyugYNGqSGDRvqjjvu8PdUAAAAfKJaRteIESP01ltv+XsaAAAAPlMto6tXr16qX7++v6cBAADgMz6PrnXr1ql///6KiYlRUFCQFi9e7DXG5XKpdevWCgsLU1JSkjZu3OjraQAAAFQrPo+uoqIide7cWS6Xq9z7582bp5EjRyozM1NffPGFOnfurL59++rAgQO+ngoAAEC1UcvXT5iSkqKUlJTz3v/qq69q2LBhSk9PlyRNnTpVS5cu1YwZMzR69OhKv15xcbGKi4vdtwsLCys/aQAAgMvM6jldp0+f1qZNm5ScnPzzBIKDlZycrPXr11fpOSdMmKDIyEj3V2xsrK+mCwAA4DNWo+vQoUMqKSlRdHS0x/bo6Gjl5eW5bycnJ+vOO+/UsmXL1KJFiwqDbMyYMSooKHB/7dmz57LNHwAAoKp8/vGiL6xevfqixzocDjkcjss4GwAAgEtn9Z2uqKgohYSEKD8/32N7fn6+mjZtanMqAAAAVlmNrtDQUHXt2lVZWVnubaWlpcrKylL37t1tTgUAAMAqn3+8ePz4ce3atct9Ozc3V1u2bFGjRo3UsmVLjRw5UmlpaerWrZsSExM1ZcoUFRUVuX+bEQAAIBD5PLo+//xz9e7d23175MiRkqS0tDTNmjVLgwcP1sGDBzV27Fjl5eUpPj5eK1as8Dq5HgAAIJAEGWOMvyfhS4WFhYqMjFRBQYEiIiL8PR0AABDAKtMd1fJvLwIAAAQaogsAAMACogsAAMCCgIkul8slp9OphIQEf08FAADACyfSAwAAVBEn0gMAAFQzRBcAAIAFRBcAAIAFRBcAAIAFRBcAAIAFRBcAAIAFRBcAAIAFRBcAAIAFRBcAAIAFRBcAAIAFRBcAAIAFARNd/MFrAABQnfEHrwEAAKqIP3gNAABQzRBdAAAAFhBdAAAAFhBdAAAAFhBdAAAAFhBdAAAAFhBdAAAAFhBdAAAAFhBdAAAAFhBdAAAAFhBdAAAAFhBdAAAAFgRMdLlcLjmdTiUkJPh7KgAAAF6CjDHG35Pwpcr8tW8AAIBLUZnuCJh3ugAAAKozogsAAMACogsAAMACogsAAMACogsAAMACogsAAMACogsAAMACogsAAMACogsAAMACogsAAMACogsAAMACogsAAMACogsAAMACogsAAMCCgIkul8slp9OphIQEf08FAADAS5Axxvh7Er5UWFioyMhIFRQUKCIiwt/TAQAAAawy3REw73QBAABUZ0QXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABUQXAACABQETXS6XS06nUwkJCf6eCgAAgJcgY4zx9yR8qbCwUJGRkSooKFBERIS/pwMAAAJYZbojYN7pAgAAqM6ILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAsCJrpcLpecTqcSEhL8PRUAAAAvQcYY4+9J+FJhYaEiIyNVUFCgiIgIf08HAAAEsMp0R8C80wUAAFCdEV0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWEF0AAAAWBEx0uVwuOZ1OJSQk+HsqAAAAXoKMMcbfk/ClwsJCRUZGqqCgQBEREf6eDgAACGCV6Y6AeacLAACgOiO6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAALCC6AAAA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AACqM6ILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAAqILAADAgoCJLpfLJafTqYSEBH9PBQAAwEvARFdGRoZycnKUnZ3t76kAAAB4CZjoAgAAqM6ILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAuILgAAAAsCJrpcLpecTqcSEhL8PRUAAAAvARNdGRkZysnJUXZ2tr+nAgAA4CVgogsAAKA6I7oAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsILoAAAAsCJjocrlccjqdSkhI8PdUAAAAvARMdGVkZCgnJ0fZ2dn+ngoAAICXgIkuAACA6ozoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDoAgAAsIDo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", - "text/plain": [ - "<Figure size 700x700 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "num_layers = len(checkpoint_model.layers)\n", "print(f'Number of layers: {num_layers}')\n", @@ -711,7 +408,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -725,55 +422,15 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model\n", - " Precision: ap_fixed<16,6>\n", - " ReuseFactor: 64\n", - " Strategy: Resource\n", - "LayerName\n", - " fc1\n", - " Precision\n", - " result: ap_fixed<19,18>\n", - " Trace: True\n", - " accum_t: ap_fixed<19,18>\n", - " fc1_relu\n", - " Precision\n", - " result: ap_fixed<19,18>\n", - " Trace: True\n", - " batchnorm1\n", - " Precision\n", - " scale: ap_fixed<24,8>\n", - " bias: ap_fixed<24,8>\n", - " result: ap_fixed<24,8>\n", - " Trace: True\n", - " accum_t: ap_fixed<24,8>\n", - " fc2\n", - " Precision\n", - " result: ap_fixed<10,5>\n", - " Trace: True\n", - " accum_t: ap_fixed<10,5>\n", - " fc2_linear\n", - " Precision\n", - " result: ap_fixed<10,5>\n", - " Trace: True\n", - " fc1_input\n", - " Precision: ap_fixed<14,14>\n", - " Trace: False\n" - ] - } - ], + "outputs": [], "source": [ "# Create HLS configuration \n", "hls_config = {}\n", "hls_config['Model'] = {}\n", "hls_config['Model']['Precision'] = 'ap_fixed<16,6>' # Default precision\n", - "hls_config['Model']['ReuseFactor'] = 64 # parallelized \n", + "hls_config['Model']['ReuseFactor'] = 1 # parallelized \n", "hls_config['Model']['Strategy'] = 'Resource'\n", "\n", "hls_config['LayerName'] = {}\n", @@ -797,10 +454,10 @@ "hls_config['LayerName']['fc1_relu']['Precision']['result'] = 'ap_fixed<19,18>'\n", "\n", "# Batchnormalization\n", - "hls_config['LayerName']['batchnorm1']['Precision']['scale'] = 'ap_fixed<24,8>'\n", - "hls_config['LayerName']['batchnorm1']['Precision']['bias'] = 'ap_fixed<24,8>'\n", - "hls_config['LayerName']['batchnorm1']['Precision']['result'] = 'ap_fixed<24,8>'\n", - "hls_config['LayerName']['batchnorm1']['accum_t'] = 'ap_fixed<24,8>'\n", + "hls_config['LayerName']['batchnorm1']['Precision']['scale'] = 'ap_fixed<18,2>'\n", + "hls_config['LayerName']['batchnorm1']['Precision']['bias'] = 'ap_fixed<18,2>'\n", + "hls_config['LayerName']['batchnorm1']['Precision']['result'] = 'ap_fixed<10,4>'\n", + "hls_config['LayerName']['batchnorm1']['accum_t'] = 'ap_fixed<10,4>'\n", "\n", "# Fc2\n", "hls_config['LayerName']['fc2']['Precision']['result'] = 'ap_fixed<10,5>'\n", @@ -821,16 +478,16 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "output_dir = f'../hls4ml_projects/sl-{start_location}_ws-{window_size}_hn-{hidden_neurons}'\n", + "output_dir = f'../hls4ml_projects/sl-{start_location}_ws-{window_size}_hn-{hidden_neurons}_Vivado'\n", "xilinx_part = 'xczu49dr-ffvf1760-2-e'\n", "io_type = 'io_parallel'\n", "clock_period = 3.225 # 3.225ns (307.2 MHz)\n", "hls_fig = os.path.join(output_dir, 'model.png')\n", - "backend = 'Vitis' \n", + "backend = 'Vivado' \n", "interface = 'axi_stream'\n", "#driver = 'c'\n", "board = 'zcu216'" @@ -838,45 +495,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Interpreting Sequential\n", - "Topology:\n", - "Layer name: fc1_input, layer type: InputLayer, input shapes: [[None, 800]], output shape: [None, 800]\n", - "Layer name: fc1, layer type: QDense, input shapes: [[None, 800]], output shape: [None, 4]\n", - "Layer name: batchnorm1, layer type: BatchNormalization, input shapes: [[None, 4]], output shape: [None, 4]\n", - "Layer name: fc2, layer type: QDense, input shapes: [[None, 4]], output shape: [None, 1]\n", - "Creating HLS model\n", - "WARNING: Changing pipeline style to \"dataflow\".\n", - "WARNING: Config parameter \"accum_t\" overwrites an existing attribute in layer \"fc1\" (Dense)\n", - "WARNING: Config parameter \"accum_t\" overwrites an existing attribute in layer \"fc2\" (Dense)\n", - "WARNING: Invalid ReuseFactor=64 in layer \"fc1\".Using ReuseFactor=50 instead. Valid ReuseFactor(s): 1,2,4,5,8,10,16,20,25,32,40,50,80,100,160,200,400,800,1600,3200.\n", - "WARNING: Invalid ReuseFactor=64 in layer \"fc2\".Using ReuseFactor=4 instead. Valid ReuseFactor(s): 1,2,4.\n", - "Creating hls4ml project directory ../hls4ml_projects/sl-100_ws-400_hn-4\n", - "Writing HLS project\n", - "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Done\n" - ] - } - ], + "outputs": [], "source": [ "hls_model = hls4ml.converters.convert_from_keras_model(\n", " model=checkpoint_model,\n", @@ -910,31 +531,61 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Keras Acc: 96.002%\n", - "Keras Fidelity: 92.004%\n", - "HLS Acc: 95.965:%\n", - "HLS Fidelity: 91.93:%\n" - ] - } - ], + "outputs": [], "source": [ "# Trace output \n", "y_hls = hls_model.predict(np.ascontiguousarray(X_test.astype(np.float32))) \n", "\n", - "keras_acc = accuracy_score(y_test, np.where(y_pred < 0.5, 0, 1).reshape(-1))\n", - "hls_acc = accuracy_score(y_test, np.where(y_hls < 0.5, 0, 1).reshape(-1))\n", + "keras_acc = accuracy_score(y_test, np.where(y_keras < 0.5, 0, 1).reshape(-1))\n", + "hls_acc = accuracy_score(y_test, np.where(y_hls < 0, 0, 1).reshape(-1))\n", "\n", - "print(f'Keras Acc: {keras_acc*100:.5}%')\n", - "print(f'Keras Fidelity: {(keras_acc*2-1) * 100:.5}%')\n", + "print(f'Keras Acc (w/ sigmoid): {keras_acc*100:.5}%')\n", + "print(f'Keras Fidelity (w/ sigmoid): {(keras_acc*2-1) * 100:.5}%')\n", "print(f'HLS Acc: {hls_acc*100:.5}:%')\n", - "print(f'HLS Fidelity: {(hls_acc*2-1) * 100:.5}:%')" + "print(f'HLS Fidelity: {(hls_acc*2-1) * 100:.5}:%')\n", + "\n", + "notes[\"HLS Acc\"] = hls_acc\n", + "notes[\"HLS Fidelity\"] = hls_acc*2-1\n", + "with open(os.path.join(output_dir, 'notes.json'), 'w') as file:\n", + " json.dump(notes, file)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create testbench files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "top_nrows = 10\n", + "bottom_nrows = 10\n", + "\n", + "y_pred_top = checkpoint_model.predict(X_test[:top_nrows])\n", + "y_pred_bottom = checkpoint_model.predict(X_test[-bottom_nrows:])\n", + "ykeras_pred = np.vstack((y_pred_top, y_pred_bottom))\n", + "\n", + "y_hls_top = hls_model.predict(np.ascontiguousarray(X_test[:top_nrows].astype(np.float32))) \n", + "y_hls_bottom = hls_model.predict(np.ascontiguousarray(X_test[-bottom_nrows:].astype(np.float32))) \n", + "yhls_pred = np.vstack((y_hls_top, y_hls_bottom))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "save_array_to_dat(data=X_test, top_nrows=top_nrows, bottom_nrows=bottom_nrows, filename=os.path.join(output_dir, 'tb_data/tb_input_features.dat'))\n", + "save_array_to_dat(data=ykeras_pred, top_nrows=top_nrows, bottom_nrows=bottom_nrows, filename=os.path.join(output_dir, 'tb_data/ykeras_pred.dat'))\n", + "save_array_to_dat(data=yhls_pred, top_nrows=top_nrows, bottom_nrows=bottom_nrows, filename=os.path.join(output_dir, 'tb_data/yhls_pred.dat'))" ] }, { @@ -946,38 +597,9 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Recompiling NN with tracing\n", - "Writing HLS project\n", - "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Done\n", - "3125/3125 [==============================] - 1s 210us/step\n", - "3125/3125 [==============================] - 1s 266us/step\n", - "Done taking outputs for Keras model.\n", - "HLS Keys: dict_keys(['fc1', 'fc1_relu', 'batchnorm1', 'fc2'])\n", - "Keras Keys: dict_keys(['fc1', 'fc1_relu', 'batchnorm1', 'fc2'])\n" - ] - } - ], + "outputs": [], "source": [ "_, hls_trace = hls_model.trace(np.ascontiguousarray(X_test.astype(np.float32))) \n", "keras_trace = hls4ml.model.profiling.get_ymodel_keras(checkpoint_model, X_test) \n", @@ -988,68 +610,9 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Layer(s): fc1 \t\t 162.74692\n", - "hls/keras min: -71750.5/-71586.625\n", - "hls/keras max: 79212.0/79376.28125\n", - "Layer(s): fc1_relu \t\t 82.6639\n", - "hls/keras min: 0.0/0.0\n", - "hls/keras max: 79212.0/79376.28125\n", - "Layer(s): batchnorm1 \t\t 0.06828449\n", - "hls/keras min: -1.27581787109375/-1.2758097648620605\n", - "hls/keras max: 7.1849365234375/7.247999668121338\n", - "Layer(s): fc2 \t\t 0.16358478\n", - "hls/keras min: -6.65625/-7.131763935089111\n", - "hls/keras max: 12.21875/12.465972900390625\n" - ] - }, - { - "data": { - "image/png": "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e4mPj2fBggVp+l25ciXdd2fr187d3T3dZfDMsLOzo127doSHh2f4ey+7fv1E8jrNHIpItitbtizVq1dn9erVGe5ldzfee+89NmzYQGhoKGXKlOH8+fPMnj2bkiVLppltS05O5ueff+bNN9+86/eaOXMmjRo1ok6dOvTs2ZOAgACOHz9OZGRkmmcvz5o1i7i4OM6ePQvcnkk7ffo0AH379r2rcJoVjRo1olixYqxevZonnnjCar8+ffqQkJDA8OHDcXd355133qFp06a8/vrrjB8/np07d9KyZUscHR05fPgwS5cuZcaMGTz33HM2379ly5Y4OTnRtm1bXn/9da5du8ann36Kl5cX586ds/RbtGgRs2fP5plnnqFcuXJcvXqVTz/9FDc3N1q3bp2mZlRUFG3btr3rxSPjxo3jp59+omnTpvTs2ZMqVapw7tw5li5dyq+//mpZHPP5559z4sQJbty4AcCGDRsYO3YsAC+//HKmH6Mokic9qGXSIpK3TZ061ShUqFCarU6sbT9iGEa67UT+uZXNmjVrjKefftrw8/MznJycDD8/P6NTp07GH3/8kabOihUrDMA4fPjwv47R2lY2hmEYe/fuNZ555hnDw8PDcHFxMSpVqmSMHDkyTZ87W7xk9Dp27Ni/vn92eOutt4zy5cunOWbtc7399tsGYMyaNctybN68eUbdunUNV1dXo3DhwkaNGjWMt99+2zh79qylT5kyZYzQ0NAM3//HH380atasabi4uBj+/v7Ghx9+aMyfPz/Nd7B9+3ajU6dORunSpQ1nZ2fDy8vLaNOmjbF169Y0tQ4cOGAAxurVq//1c9v6vXTixAnjlVdeMTw9PQ1nZ2ejbNmyRu/evY3ExERLn6ZNm1r9tVu3bt2/vr9IXmYyDM2zi0j2i4+Pp2zZskycOJHu3bvft/dt164dJpOJ77///r6954N09OhRKleuzIoVK2jevPmDHs49CQsLY8OGDWzbtk3bzog8QAqHIpJjPvzwQxYsWMD+/fuxs8v5W5wPHDhAjRo12LlzZ77azqRXr178+eefGS5yyS0uXbpEmTJl+Oabb9JdahaR+0vhUEREREQstFpZRERERCwUDkVERETEQuFQRERERCwUDkVERETEQptgPyBms5mzZ89SuHBhbdkgIiIiOcowDK5evYqfn9+/7h6hcPiAnD17llKlSj3o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", - "text/plain": [ - "<Figure size 700x500 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAn0AAAHWCAYAAAACQD99AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACbFElEQVR4nOzdd1yV5f/H8ddh4wDEhRu34syFlDNRVLAstRyl5vpmaiJSajkbmlvLVd9SW5bZsATFcGWpuc09ci8QB+BinvP7w5/nK3HOEQwE5f18PHg8vtzX57ru6xB+fXvd933dBpPJZEJEREREHmt2OT0BEREREcl+Cn0iIiIieYBCn4iIiEgeoNAnIiIikgco9ImIiIjkAQp9IiIiInmAQp+IiIhIHqDQJyIiIpIHKPSJiIiI5AEKfSK5yJQpU6hWrRpGoxGAU6dOYTAYmDZt2n37jh8/HoPBkKnzHTx4EAcHB/bv35/hPtu3b+fJJ58kf/78GAwG9uzZk6lz5ha9e/fG29s7p6dh0XfffYenpyc3btwwHzMYDAwePDgHZ5V5jRs35s0338xw/Y0bN+jXrx9eXl4YDAaCg4Ozb3LZaMOGDRgMBjZs2JDTUxFJQ6FPJJeIj49n8uTJjBgxAju7h/NH08fHh8DAQMaOHZuh+uTkZLp06cLVq1eZOXMmX375JeXKlctQ3xs3bjBu3Djatm2Lp6cnBoOBxYsX/4vZP55SU1MZN24cQ4YMoUCBAjk9nX9lxIgRzJ07l6ioqAzVT5w4kcWLFzNw4EC+/PJLXn755Qyfa+nSpbz00ktUrlwZg8FAixYtHnDWIo8vh5yegIjcsXDhQlJSUujWrdtDPe+rr75K+/btOX78OBUrVrRZe/z4cU6fPs1///tf+vXrl6nzXL58mXfeeYeyZctSp04drYJYsWLFCo4cOcKAAQNyeir/2rPPPoubmxvz5s3jnXfeuW/9unXraNy4MePGjcv0uebPn8/OnTtp2LAhV65ceZDpijz2tNInkkssWrSIZ555BhcXl4d6Xn9/fwoVKsTnn39+39pLly4B4OHhkenzlChRgosXL3L69GmmTp2a6f73c/PmzSwfMycsWrSIp556ilKlSj3U82bHz8/Ozo7OnTvzxRdfYDKZ7lt/6dKlB/rdAvjyyy+Ji4tj3bp1lCxZ8oHGsCYlJYWkpKQsHVMkJyj0ieQCJ0+eZO/evfj7+1ut+eSTT6hYsSLOzs40bNiQ7du333fcyMhImjRpgoeHBwUKFKBq1aq89dZbaWocHR1p0aIFP//8s82xevfuTfPmzQHo0qVLuktohw8f5oUXXqBo0aK4urpStWpV3n77bXO7s7MzXl5e951zRty9f/HgwYN0796dQoUK0aRJE3P7V199Rf369XF1dcXT05OuXbty9uxZm2Nauw/r7n2VD+NSdEJCAhERETZ/D+713nvvYWdnx0cffWQ+tmrVKpo2bUr+/PkpWLAggYGBHDhwIE2/3r17U6BAAY4fP0779u0pWLAgPXr0AOD333+nS5culC1bFmdnZ8qUKcOwYcO4fft2mjGioqJ45ZVXKF26NM7OzpQoUYJnn32WU6dOpalr3bo1p0+ftnnv592f/cmTJwkPD8dgMGAwGMxjJSQkMH78eKpUqYKLiwslSpTg+eef5/jx4+YxypQpkyW3Rdx7H+2sWbPMf+YOHjwI3Pk979y5M56enri4uNCgQQN++eWX+47r7e1N79690x1v0aKFLkXLQ6PLuyK5wObNmwGoV6+exfYlS5Zw/fp1/vOf/2AwGJgyZQrPP/88J06cwNHR0WKfAwcOEBQURO3atXnnnXdwdnbm77//ZtOmTelq69evz88//0x8fDxubm4Wx/vPf/5DqVKlmDhxIq+//joNGzakePHiAOzdu5emTZvi6OjIgAED8Pb25vjx46xYsYL333//QX4kGdKlSxcqV67MxIkTzStJ77//PmPGjOGFF16gX79+xMTE8NFHH9GsWTN27979wCtJD8POnTtJSkqy+ntwr9GjRzNx4kQ+/vhj+vfvD9xZ7erVqxcBAQFMnjyZW7duMX/+fJo0acLu3bvTPLiSkpJCQEAATZo0Ydq0aeTLlw+AZcuWcevWLQYOHEjhwoXZtm0bH330EefOnWPZsmXm/p06deLAgQMMGTIEb29vLl26RGRkJGfOnElznvr16wOwadMmnnjiCYufpXr16nz55ZcMGzaM0qVLM3z4cACKFi1KamoqQUFBrF27lq5duzJ06FCuX79OZGQk+/fvv+8tCQ9q0aJFJCQkMGDAAJydnfH09OTAgQPmVdiRI0eSP39+vvvuOzp27MgPP/zAc889ly1zEckyJhHJcaNHjzYBpuvXr6c5fvLkSRNgKly4sOnq1avm4z//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p6ciIij0iUgucuPGDW7cuGGzJiP73In8k6W9FP+pQIECj3TIFrkfPcghIrnGtGnTmDBhgs0aW/vciVhjaS/Ffxo3bhzjx49/OBMSyQFa6RORXOPEiRM2Xy0H0KRJE5vbnohYkpCQwB9//GGzpkKFCtozTx5rCn0iIiIieYA2ZxYRERHJA3RPXxYxGo1cuHCBggULPvCLxUVEREQyymQycf36dUqWLJmhHR8U+rLIhQsXKFOmTE5PQ0RERPKYs2fPUrp06fvWKfRlkbsvPT979ixubm45PBsRERF53MXHx1OmTBlzBrkfhb4scveSrpubm0KfiIiIPDQZva1MD3KIiIiI5AEKfSIiIiJ5gEKfiIiISB6g0CciIiKSByj0iYiIiOQBCn0iIiIieYBCn4iIiEgeoNAnIiIikgfkaOhLTU1lzJgxlC9fHldXVypWrMi7776LyWQy15hMJsaOHUuJEiVwdXXF39+fY8eOpRnn6tWr9OjRAzc3Nzw8POjbty83btxIU7N3716aNm2Ki4sLZcqUYcqUKenms2zZMqpVq4aLiwu1atVi5cqV2fPBRURERB6yHA19kydPZv78+cyZM4dDhw4xefJkpkyZwkcffWSumTJlCh9++CELFixg69at5M+fn4CAABISEsw1PXr04MCBA0RGRhIWFsbGjRsZMGCAuT0+Pp42bdpQrlw5du7cydSpUxk/fjyffPKJuWbz5s1069aNvn37snv3bjp27EjHjh3Zv3//w/lhiIiIyGMh1Whiy/Er/LznPFuOXyHVaLp/p4fAYLp3We0hCwoKonjx4nz22WfmY506dcLV1ZWvvvoKk8lEyZIlGT58OKGhoQDExcVRvHhxFi9eTNeuXTl06BA+Pj5s376dBg0aABAREUH79u05d+4cJUuWZP78+bz99ttERUXh5OQEwMiRI1m+fDmHDx8G4MUXX+TmzZuEhYWZ59K4cWPq1q3LggUL0s09MTGRxMRE8/d3338XFxen17CJiIjkURH7LzJhxUEuxv1vcaqEuwvjOvjQtmaJLD1XfHw87u7uGc4eObrS9+STT7J27VqOHj0KwF9//cUff/xBu3btADh58iRRUVH4+/ub+7i7u+Pr68uWLVsA2LJlCx4eHubAB+Dv74+dnR1bt2411zRr1swc+AACAgI4cuQI165dM9fce567NXfP80+TJk3C3d3d/FWmTJl/++MQERGRR1jE/osM/GpXmsAHEBWXwMCvdhGx/2IOzeyOHA19I0eOpGvXrlSrVg1HR0eeeOIJgoOD6dGjBwBRUVEAFC9ePE2/4sWLm9uioqIoVqxYmnYHBwc8PT3T1Fga495zWKu52/5Po0aNIi4uzvx19uzZTH9+EREReTykGk1MWHEQS5dP7x6bsOJgjl7qdcixMwPfffcdX3/9NUuWLKFGjRrs2bOH4OBgSpYsSa9evXJyavfl7OyMs7Nz+oabN8He/uFPSERERHLMjhNXiI2JxfX/vy90Ow6v61c4VKyCuSY2JoEdB87iW6Fw1pz05s1Mledo6HvjjTfMq30AtWrV4vTp00yaNIlevXrh5eUFQHR0NCVK/O86eHR0NHXr1gXAy8uLS5cupRk3JSWFq1evmvt7eXkRHR2dpubu9/erudueYSVLZq5eREREHnm+wKGMFM7M5onYkKOXd2/duoWdXdop2NvbYzQaAShfvjxeXl6sXbvW3B4fH8/WrVvx8/MDwM/Pj9jYWHbu3GmuWbduHUajEV9fX3PNxo0bSU5ONtdERkZStWpVChUqZK659zx3a+6eR0RERORRlqMrfR06dOD999+nbNmy1KhRg927dzNjxgz69OkDgMFgIDg4mPfee4/KlStTvnx5xowZQ8mSJenYsSMA1atXp23btvTv358FCxaQnJzM4MGD6dq1KyX/f9Wte/fuTJgwgb59+zJixAj279/P7NmzmTnzf3F76NChNG/enOnTpxMYGMi3337Ljh070mzrkiEXLoCe3hUREXkspRpN7Dh1lZgbiRQt4EwDb0/s7Qyk7t3H6WdfpELMGQC+rNuO6U1fItHhzq1gBqC4uzNrQlpgb2fImsnEx2fqCmOObtly/fp1xowZw08//cSlS5coWbIk3bp1Y+zYseYnbU0mE+PGjeOTTz4hNjaWJk2aMG/ePKpUqWIe5+rVqwwePJgVK1ZgZ2dHp06d+PDDDylQoIC5Zu/evQwaNIjt27dTpEgRhgwZwogRI9LMZ9myZYwePZpTp05RuXJlpkyZQvv27TP0WTL72LSIiIg8Wixtx1KyoBOfxW2m+uyJkJRETH4P3mgXzIaK/9tV5G7Em/9SvSzdtiWz2SNHQ9/jRKFPRETk8ZRqNDFn3d/MXHM0zfFi168wI3wmTU7vuXOgQwfWDX+ftzdfypX79OXo5V0RERGR3Cxi/0XG/3KAqPjENMcDjmzmg4iPKJRwndsOznwYOJDQH6bztL0dfzQ1se3kVS5dT6BYQRcalffMuku6/4JCn4iIiIgFdzdbvveSaL6k24xd+1+67v0VgH3FKxLcIZTjhcvQ7NQ1/CoWxt7OgF/FLNqWJQsp9ImIiIj8g6XNlutcOMKssGmUv3YRIwYWNO7EzCY9SLZ3BODS9QTLg+USCn0iIiIi/7Dt5FXzfXl2xlRe+3MZwX8swcFk5HzBogwPGsafZWun6VOsoEtOTDXDFPpERERE/uHuql3puGhmrphOw/MHAVhRrSlvBwwi3uV/O4QYAC/3O/fu5WYKfSIiIiL/UKyAMx0PrOedX+fjlnSL606ujG09kJ9qtARD+ocyxnXwyRUPa9ii0CciIiJyr9hYfEcPwS/sWwC2l/JhWFAI5zzSv5o1u7ZjyQ4KfSIiIiJ3/fYb9OyJ3ZkzGO3tmflkN+Y37kKKnX260mH+lRn8dOVcv8J3V46+e1dEREQkV0hKglGjoGVLOHMGKlbEbtMmasybQtFC+dOUlnB3YcFL9RjqX+WRCXyglT4RERHJ644cgR49YOfOO9/37QuzZkGBArQFWvt45crNljNLoU9ERETyJpMJPvkEhg2D27fB0xP++194/vk0Zbl1s+XMUugTERGRvCcmBvr1g19+ufO9vz8sXgylSuXotLKTQp+IiIg8dlKNNt5/GxEBvXtDdDQ4OcEHH8DQoWD3eD/qoNAnIiIij5WI/ReZsOKg+Y0acOfhiwmty9Pmi1nw0Ud3DtaoAV9/DXXq5MxEHzKFPhEREXlsROy/yMCvdqV5Zy5AoWMHKTejD1w+c+fAkCEweTK4uj70OeYUhT4RERF5LKQaTUxYcTBN4DOYjPTZ/jNvbvwc59QUrhQohMfSr7Fv3y7H5plTFPpERETksbDt5NU0l3SLX7/MtPBZND29B4DISr6MaPc6c6s2wi+H5piTFPpERETksXDp+v8CX8CRzXwQ8RGFEq5z28GZd1v1Y0mdtmAwpKnLSxT6RERE5LFQrKAL+ZJuM27NJ7y4LxKAvV6VCA4K5UTh0mnq8iKFPhEREXlk2NqKpdGlY/z6+VBKX72AEQPzG3dmVpPuJNs7AmAAvNzv9MmLFPpERETkkbBy70VG/7yfqzeTzMdKuLswvl0VAlYsxn7CBEqnpnK+YFGGB4XwZ9la5rq7L00b18HnkXyFWlZQ6BMREZFc7/3wA/z391PpjtufPoVn0Otw/uCdA127cmjIOE7/dh7ueajDy92FcR18aFuzxEOace6j0CciIiK52vvhB9MHPpOJ5w6s553I+RRMus0N53zk+2QBdi+/hL/BQMvGVa2/kSOPUugTERGRXGvl3ov89/eTaY65Jdzg/dVz6XD4dwC2l/JhWIfhTH2qPX6GO8HO3s6AX8XCD32+uZlCn4iIiORKqUYTo3/en+ZY4zN7mR42k1LXY0gx2DGrSXfmN+5Cqp19nt2KJaMU+kRERCRX+OeTuUaTyfzQhmNqMiG/f81/tv6AHSZOFipBcFAof5Wsau6fV7diySiFPhEREclxEfsvMmHFwTRv1PBwvbPVSsUrZ5m1Yhq1oo8D8G3tNrzTqj+3nP733tzC+Z3y7FYsGaXQJyIiIjkm1WhizrpjzFxzLF1b7K0keuxZxeh1n+Gaksg1l4KMbDeE1VWeTFf77rM18/yDGvej0CciIiI5ImL/Rcb/cpCo+PT34nneimPyqtm0/nsbABu9nyC0fTCXCqZ/OKN/U2/a1867W7FklEKfiIiIPHQr917ktSW7LLa1OL6DqatmUfRmLIn2Dkxu/gqLGnTAZLBLV9u/aXneDvTJ7uk+FhT6RERE5KFaufcCg7/Zne64c3IiozYsoveuMAAOFylHcIdQDhcrj4erI7G3k821hfM78e6zNbXClwkKfSIiIvLQROy/yGtL0ge+6pdOMPuXaVS5cgaAhfWfYXKL3iQ6OAEwt3s97OwM2mz5X1DoExERkWyXajTx5/ErjPxhX5rjBpORvtuX88bGL3BOTeFS/kKEtg9mY4X6d9q58wq1xhULK+T9S+kvjj9E3t7eGAyGdF+DBg0CICEhgUGDBlG4cGEKFChAp06diI6OTjPGmTNnCAwMJF++fBQrVow33niDlJSUNDUbNmygXr16ODs7U6lSJRYvXpxuLnPnzsXb2xsXFxd8fX3Ztm1btn1uERGRvCRi/0WaTF5Hj8+2prlEW/z6Zb5cOobR6xfinJpCZCVf2vaZYw58d43r4KPAlwVyNPRt376dixcvmr8iIyMB6NKlCwDDhg1jxYoVLFu2jN9++40LFy7w/PPPm/unpqYSGBhIUlISmzdv5vPPP2fx4sWMHTvWXHPy5EkCAwNp2bIle/bsITg4mH79+rF69WpzzdKlSwkJCWHcuHHs2rWLOnXqEBAQwKVLlx7ST0JEROTxk5RiJPS7v3j1q11p9t8DaHtkExELh9Dk9F/ccnRmVMBg+j8/mqv53M01Xm7OzH+pHm1r6r69rGAwmUymnJ7EXcHBwYSFhXHs2DHi4+MpWrQoS5YsoXPnzgAcPnyY6tWrs2XLFho3bsyqVasICgriwoULFC9eHIAFCxYwYsQIYmJicHJyYsSIEYSHh7N///9e49K1a1diY2OJiIgAwNfXl4YNGzJnzhwAjEYjZcqUYciQIYwcOTJDc4+Pj8fd3Z24uDjc3Nyy8sciIiLyyHlvxQE+23SKf4aMfEm3GbfmE17cd2ehZ69XJYKDQjlRuHSaumH+VRj8dCWt8NmQ2eyRoyt990pKSuKrr76iT58+GAwGdu7cSXJyMv7+/uaaatWqUbZsWbZs2QLAli1bqFWrljnwAQQEBBAfH8+BAwfMNfeOcbfm7hhJSUns3LkzTY2dnR3+/v7mGksSExOJj49P8yUiIiLwzJzf+dRC4Kt74QgrF73Oi/siMWJgbuMudHppaprAZ2eAed3rMdS/sgJfFss1D3IsX76c2NhYevfuDUBUVBROTk54eHikqStevDhRUVHmmnsD3932u222auLj47l9+zbXrl0jNTXVYs3hw4etznfSpElMmDAh059TRETkcfZu2AH2nku7EGJvTGXQlu94fdM3OJiMnHMrSkjQcLaVqZmu/5xuT2gblmySa1b6PvvsM9q1a0fJkiVzeioZMmrUKOLi4sxfZ8+ezekpiYiI5KikFCOf/XEqzbHSsVEsXTKSkD++xsFk5OfqzWn/ykfpAl8JdxcWvFSP9rUfjRzwKMoVK32nT59mzZo1/Pjjj+ZjXl5eJCUlERsbm2a1Lzo6Gi8vL3PNP5+yvft07701/3ziNzo6Gjc3N1xdXbG3t8fe3t5izd0xLHF2dsbZ2TnzH1ZEROQxkpRi5Mstpzh99RYXY2//r8Fk4vkD65gQuYCCSbeJd8rHmDYD+blGyzT9PVwdmdujHo0raEuW7JYrVvoWLVpEsWLFCAwMNB+rX78+jo6OrF271nzsyJEjnDlzBj8/PwD8/PzYt29fmqdsIyMjcXNzw8fHx1xz7xh3a+6O4eTkRP369dPUGI1G1q5da64RERGR9N4PP0jVMat4N/wQX2w5TeShO38fuyXcYM4vU5gRPpOCSbfZVtqH9n0+Shf4DMAHnWrxVKUiCnwPQY6v9BmNRhYtWkSvXr1wcPjfdNzd3enbty8hISF4enri5ubGkCFD8PPzo3HjxgC0adMGHx8fXn75ZaZMmUJUVBSjR49m0KBB5lW4V199lTlz5vDmm2/Sp08f1q1bx3fffUd4eLj5XCEhIfTq1YsGDRrQqFEjZs2axc2bN3nllVce7g9DRETkEdH/i+1EHky/tVnjM3uZETaDktcvk2xnz6ynujO/cWeMdvZp6rzcnBn/TA1tx/IQ5XjoW7NmDWfOnKFPnz7p2mbOnImdnR2dOnUiMTGRgIAA5s2bZ263t7cnLCyMgQMH4ufnR/78+enVqxfvvPOOuaZ8+fKEh4czbNgwZs+eTenSpfn0008JCAgw17z44ovExMQwduxYoqKiqFu3LhEREeke7hAREcnrklKMjPzhr3SBzzE1meG/f8WArT9ih4kThUoS3CGUvSWqpBujXc3izOleX6t7D1mu2qfvUaZ9+kRE5HGWlGKk52db+fPk1XRtFa+cZdaKadSKPg7AN7Xb8G6r/txyck1XW7u0G78Mbprt880LMps9cnylT0RERHK3SSsP8vHGk+kbTCZe2rOKt9d9hmtKIldd3RjVdjCrqzyZrtQA9GnizZigGtk/YbFIoU9EREQsSjWaGPrtbsL2XkzXVvhmLJNXzcb/+HYANno/QWj7YC4VLGyuaV29GCU8XCnnmY+X/bxxcsgVz4/mWQp9IiIiks7KvRd4+6f9XLudnK6txfHtTF05m6K3Ykm0d2By81dY1KADJsP/Qp3BAHN71FfQy0UU+kRERCSN91Yc5NNN6S/nOicn8taGhfTadWcHjMNFyhHcIZTDxcqnq+3XpLwCXy6j0CciIiLAncu5nedvYvfZuHRtPtEnmLViGlWunAFgYf1nmNyiN4kOTulqW/sU4+1An2yfr2SOQp+IiIgQsf8ig77eReo/9vQwmIz027acNzZ+gZMxhUv5CxHaPpiNFeqnG6OAsz0fPFeboLp6lVpupNAnIiKSx63ce4HXluxOd7z49ctMD59Jk9N/AfBr5caMaDuEa/nc09UG1SrB7G5PaO+9XEyhT0REJI9KNZr4aO0xZq89lq6t3eE/mLR6Dh4JN7jl6Mw7T/fn2zoBd57Q+IfWPsWY06Pew5iy/AsKfSIiInlMqtHE7DVHmb/hOMnGtNdz8yfeYtzaT3hh3xoA/vKqTHCHUE56lko3jqOdgZkv1CGobvo2yX0U+kRERPKQiP0Xef3b3SSlpH8h1xPnDzMzbDresRcxYmCeXxdmPdWdFPu0caFhOQ9eb1WFJysV0eXcR4hCn4iISB6xcu9FXluyK91xe2Mqg7Z8x+ubvsHBZOScW1FCgoazrUzNdLX9nirP6A56MvdRpNAnIiKSB4TtOc/gb/ekO14mNoqZYdNpcP4QAMt9mjO29UDiXQqkq326WlEFvkeYQp+IiMhjLNVoYsiSnazcH522wWTi+QPrmBC5gIJJt4l3yseYNgP5uUZLi+PUKlWQhb0bPYQZS3ZR6BMREXkM3X1YY866vzH+o80t4QYTV88l6PDvAGwr7UNI0HDOuRe3OFbfJuUYE5T+Uq88WhT6REREHjMR+y8y9Ns9JKb8M+6B3+m9TA+fQcnrl0m2s2dmkx4s8O2E0c4+XW2neqWY9HxtvU7tMaHQJyIi8phINZqYs+5vZq45mq7NMTWZ4b9/xYCtP2KHiROFShLcIZS9Jaqkq3V3dWByp9q0rVniYUxbHhKFPhERkcdAxP6LjF2+n0s3ktK1Vbx8ltlh06gZfRyAJXUCeO/pftxyck1XW7+sB9+9+qS2YnkMKfSJiIg84iL2X+TVr9JvxYLJxEu7V/L2+oW4piRy1dWNkW2H8GsVP4vj+Fcvyqe99LDG40qhT0RE5BGVajTxx7EYi4Gv8M1YpqyaTavj2wHY6P0Eoe2DuVSwcLpaZwcD0zvrzRqPO4U+ERGRR9DKvRcJWbaHhOT0D2u0OL6dqStnU/RWLIn2jnzQojeL63fAZEj/QEa7msWZ072+LufmAQp9IiIij5j3ww/w399PpTvunJzIWxsW0mtXOACHi5Rj6DNvcKSot8Vx/KsXY/5LDbJxppKbKPSJiIg8Im4npfLcvD84HHUjXZtP9Almr5hK5StnAfiswbNMad6LRAcni2P1b+rN24E1snW+krso9ImIiORyqUYTXeZvYtfZuHRtBpORftuW88bGL3AypnApfyGGBw7j9/L1LI7VuHwhvujbWHvv5UEKfSIiIrnYir8uMOSb3RbbvOIvM33lDJ46vReA1ZUbM7LtEK7lc09XOzKgKn2aVlDYy8MU+kRERHKpvou3sfZwjMW29of/YOLqOXgk3OCWozMTWg1gae02YEj/QEbfJuV4tWWl7J6u5HIKfSIiIrlMqtFEq2nrOXX1drq2/Im3GL/mE7rsXwPAX16VCe4QyklPy9ut1C7tpvfmCqDQJyIikqus3HuRQUt2YbLQVu/8IWaGTadcbBSpBjvmNe7C7Ke6kWJv+a/zvk3KMybIJ3snLI8MhT4REZFcINVoYug3OwnbF52uzd6YypDN3zJ481IcTEbOuRVjWFAI28tYXsFrXMGTL/r46v49SUOhT0REJIct3XaaET/ut9hWJjaKWSumUf/CYQB+8mnB2DYDue6cP12tr3chvuynJ3PFMoU+ERGRHFRt9CoSUtK/VQOTic771zJ+zccUSLpNvFM+Rge8xi8+LSyO079ped4O1KVcsU6hT0REJAckpRjxGbOKFAs377nfvs77q+cSdOQPALaWrkFI0HDOuxezONa87k/QvnbJ7JyuPAYU+kRERB6yd1YcYOGmUxbb/E7vZUbYdErcuEKynT0zm/RggW8njHb26WrLebqwLvRpvTdXMkShT0RE5CHye381F6+npDvulJJMyO9fMmDbT9hh4kShkgzt8Ab7SlS2OM6HL9ThmXqls3u68hjJ8Ts9z58/z0svvUThwoVxdXWlVq1a7Nixw9xuMpkYO3YsJUqUwNXVFX9/f44dO5ZmjKtXr9KjRw/c3Nzw8PCgb9++3LiR9r2Ee/fupWnTpri4uFCmTBmmTJmSbi7Lli2jWrVquLi4UKtWLVauXJk9H1pERPKc20mpeI8Mtxj4Kl4+y09fDufVbT9ih4klddoS2PtDi4GvXGEXjk9sr8AnmZahlb4PP/ww0wO/8sorFCxY0GbNtWvXeOqpp2jZsiWrVq2iaNGiHDt2jEKFCplrpkyZwocffsjnn39O+fLlGTNmDAEBARw8eBAXFxcAevTowcWLF4mMjCQ5OZlXXnmFAQMGsGTJEgDi4+Np06YN/v7+LFiwgH379tGnTx88PDwYMGAAAJs3b6Zbt25MmjSJoKAglixZQseOHdm1axc1a2pTSxEReXCvLNrG+iMW3qxhMvHS7pWMXv8ZLilJXHV1Y0S714ms3NjiOGULufDbG62yebbyuDKYTCZL+z+mYWdnR+nSpbG3T38/gSVnz57l6NGjVKhQwWbdyJEj2bRpE7///rvFdpPJRMmSJRk+fDihoaEAxMXFUbx4cRYvXkzXrl05dOgQPj4+bN++nQYNGgAQERFB+/btOXfuHCVLlmT+/Pm8/fbbREVF4eTkZD738uXLOXz4ziPwL774Ijdv3iQsLMx8/saNG1O3bl0WLFhw388cHx+Pu7s7cXFxuLm53f+HJCIij72kFCM1x0WQlJr+r9oiN68xedWHtDq+HYDfytcjtH0wMQU8LY7VqlpRPuvdKFvnK4+WzGaPDN/Tt2PHDooVs/zU0D/db4Xvrl9++YWAgAC6dOnCb7/9RqlSpXjttdfo378/ACdPniQqKgp/f39zH3d3d3x9fdmyZQtdu3Zly5YteHh4mAMfgL+/P3Z2dmzdupXnnnuOLVu20KxZM3PgAwgICGDy5Mlcu3aNQoUKsWXLFkJCQtLMLyAggOXLl1uce2JiIomJiebv4+PjM/SZRUQkbxizfB9f/nnGYlvL49uZsnI2RW/FkmjvyKQWr/B5/SBMhvR3XRVwsmf76Na4OmVs4UXEmgzd0zdu3DgKFCiQ4UHfeustPD0t/0vlXidOnGD+/PlUrlyZ1atXM3DgQF5//XU+//xzAKKiogAoXrx4mn7Fixc3t0VFRaULow4ODnh6eqapsTTGveewVnO3/Z8mTZqEu7u7+atMmTL3/bwiIpI3VB4VbjHwuSQn8M6v81n0/QSK3orlUFFvnuk1k8UNnrEY+Mp6urD/nbYKfJIlMrTSN27cuEwNOmrUqAzVGY1GGjRowMSJEwF44okn2L9/PwsWLKBXr16ZOufDNmrUqDQrg/Hx8Qp+IiJ53NUbSdR7L9JiW43o48xaMY3KV84C8GmDZ5navBeJDk4W62d1rkPHBnpYQ7JOjm7ZUqJECXx80u4eXr16dX744QcAvLy8AIiOjqZEiRLmmujoaOrWrWuuuXTpUpoxUlJSuHr1qrm/l5cX0dFp32V49/v71dxt/ydnZ2ecnZ0z/FlFROTxdTspldrjI0i28GINg8lI/20/EbrxS5yMKUQX8CS0fTC/l69ncayi+R358+3W2ntPslyWbdly6NCh+z648U9PPfUUR44cSXPs6NGjlCtXDoDy5cvj5eXF2rVrze3x8fFs3boVPz8/APz8/IiNjWXnzp3mmnXr1mE0GvH19TXXbNy4keTkZHNNZGQkVatWNT8p7Ofnl+Y8d2vunkdERMSSPou3UX2s5cBXIj6Gr78dzVsbFuFkTCGiih9tX/nIauArU8iF7WPaKPBJtsiy0JeUlMTp06cz1WfYsGH8+eefTJw4kb///pslS5bwySefMGjQIAAMBgPBwcG89957/PLLL+zbt4+ePXtSsmRJOnbsCNxZGWzbti39+/dn27ZtbNq0icGDB9O1a1dKlrzzSpru3bvj5ORE3759OXDgAEuXLmX27NlpLs8OHTqUiIgIpk+fzuHDhxk/fjw7duxg8ODBWfMDEhGRx06Dd39l3WELW7EA7Q//QcTCwTx5Zi+3HJ0Z0XYIr3Z8i2v53C3Wv/JUOX4foe1YJPtkaMsWIN2Trf8UExPDkiVLSE1NzdQEwsLCGDVqFMeOHaN8+fKEhISYn96FO9u2jBs3jk8++YTY2FiaNGnCvHnzqFKlirnm6tWrDB48mBUrVmBnZ0enTp348MMP0zx8snfvXgYNGsT27dspUqQIQ4YMYcSIEWnmsmzZMkaPHs2pU6eoXLkyU6ZMoX379hn6HNqyRUQk77h6I4kG70ViYXGPAom3GL/mYzrvv3P1aE+JygQHhXLKs5TFsRwMcPDddjg55Pj7EuQRk9nskeHQZ29vT926da0OeuPGDXbt2pXp0Pe4UOgTEckb6r+7mis3079VA6De+UPMWjGNsnHRpBrsmNe4C7Of6kaKveVb6FtWKcyiPpY3Yha5n2zbp69SpUoMGzaMl156yWL7nj17qF+/fsZnKiIi8gi5kZBCzfGrLbbZG1MZsvlbBm9eioPJyDm3YgR3GM6O0jUs1huAg9qKRR6yDIe+Bg0asHPnTquhz2AwkMFFQxERkUdKu5nrOBR922Jb2WsXmRU2jXoX7jyY+GONloxr/SrXnfNbrG9RpQiL+/hm21xFrMlw6Js+fXqaN1D8U506dTAaLd3dICIi8ujyHhluucFkovP+tYxf8zEFkm4T75yf0W1e4xef5lbHOqTVPclBGQ591varExEReRzFxCfScOIai23ut68zcfUcAo9sAmBrmZqEBIZw3t3y60rtgeMfBGbXVEUyJNObM6empmJv/79/pWzbtg2j0cgTTzyhzYpFROSxUGPMSm4mW75lye/0X8wIm0GJG1dItrNnRtOX+LjR8xjtLK/gtahchMV9dTlXcl6Gnw8/ffo0DRo0wNnZmXbt2hEfH0/r1q1p3LgxTz75JD4+Phw9ejQ75yoiIpLtvEeGWwx8TinJjFq/kG++fZsSN65w3LMUz780jfmNu1gMfHbcuZyrwCe5RYZD3/DhwylQoADLly/Hzc2N9u3bk5KSwtmzZzl//jyVK1dOt++diIjIoyImPtHq/XuVLp/hpy+H859tPwKwpE5bgnrNZl+JyhbrX/ItzYkPAnX/nuQqGb68u3HjRn799Vfq1q1L06ZNKVSoEBs3bqRUqTubTU6cODHDGxmLiIjkFreTUqkxNsLiRsuYTLy8O5y31y/EJSWJK65ujGz3OpGVre+td/Q9bbQsuVOGQ19CQgLu7ndeHVOwYEHs7e0pWLCgud3NzY1bt25l/QxFRESySZ9F21h3xPJr1IrcvMaUlbN5+sQOAH4rX4/Q9sHEFPC0WO9oZ+DYRC1+SO6V4X+K1KhRg4ULFwLw+eefU7hwYb799ltz+zfffJPm1WgiIiK5Wc2xK60Gvqf/3kbEwsE8fWIHifaOjG81gN5dxlsNfC83KqPAJ7lehl/Dtnr1ajp27IjRaMTOzo7Vq1fTv39/PDw8sLOzY/v27SxZsoQXXnghu+ecK+k1bCIijwZbW7G4JCfw9vqFvLx7JQCHinoztEMoR4t6Wx1Pl3Mlp2Tbu3cBTp06xc6dO6lfvz7e3t5ER0czd+5cbt26RWBgIC1btvxXk3+UKfSJiOR+1UeHc9vya3OpEX2c2b9MpdLVcwB82uBZpjbvRaKDk8X6ZpU9+aKvX3ZNVeS+sjX0iXUKfSIiuVeq0UTFt1ZabDOYjAzY9iPDN36FkzGF6AKeDG8/jD/KP2F1PL1ZQ3KDzGaPTG/OLCIi8ij57PcTvBt+yGJbifgYZoTPwO/MPgAiqvgxsu0QYl0t/wXqag+H3tebNeTRlOHQl5yczNtvv82PP/6Ip6cnr776Kn369DG3R0dHU7JkSVJTU7NloiIiIpll9b25QOCh35m4eg7uiTe56ejChFYD+K52azAYLNZP7VSLLg3LZtdURbJdhkPf+++/zxdffEFoaCixsbGEhISwdetWPv74Y3ONrhSLiEhuEBWbQOMP1lpsK5B4iwlrFtBp/zoA9pSoQnDQcE55lrI63vGJ7bG3sxwGRR4VGQ59X3/9NZ9++ilBQUEA9O7dm3bt2vHKK6+Yt3IxWPnXkYiIyMNSaWQ4Vp7VoN65Q8wKm0bZuGhSDXbMbdyFD5/qRoq95b8OezQqzfvP18m+yYo8RBkOfefPn6dmzZrm7ytVqsSGDRt4+umnefnll5kyZUq2TFBERCQjbG3FYm9M5fVN3zJ4y1LsTUbOuhdnWFAIO0rXsDqetmKRx02GQ5+XlxfHjx/H29vbfKxUqVKsX7+eli1b0rt372yYnoiIyP1VGRlOkpW2stcuMnvFNJ64eASAH2u0ZFzrV7nunN9ivYs9HNbDGvIYyvA/YZ5++mmWLFmS7njJkiVZt24dJ0+ezNKJiYiI3M/tpFS8rQU+k4kueyNZufh1nrh4hHjn/Azp8AYhQcOtBr5ejcsq8MljK8MrfWPGjOHw4cMW20qVKsVvv/1GZGRklk1MRETElpf/u4nfj8dabHO/fZ1JER/R/uhmAP4sU5OQoBAuuBWzOp4u58rjTpszZxFtziwi8vDY2orlyVN7mB4+kxI3rpBsZ8+Mpi/xcaPnMdpZ3kx5TXBzKnkVyK6pimSbHNuc+eLFiyQnJ1O2rPYwEhGR7HHwXDzt5/xusc0pJZnQjV8wYPtPABz3LM3QDqHs96pkdbxTH+hSruQdWRb6nn76aY4eParNmUVEJFvYWt2rHHOa2WHT8Ll05/7yr+q24/2Wfbnt5GKx3sPFjj3j22XLPEVyqywLfV988QW3bt3KquFEREQA21uxYDLRc1cYb21YhEtKEldc3RjRbihrKvtaHW/X6NZ4FnDKptmK5F5ZFvoaNmyYVUOJiIgAUGFkOEYrbUVvXGPKqlm0PLETgA3l6/NG+2BiChSyOp4u50pe9q9C37Fjxzhz5gzlypWjUiXr90yIiIhklq3LuU//vY0pq2ZT5FYcifaOTGzZh8/rBVl9b65XQUf+fLtNdk1V5JGQ4dA3adIkGjVqRKtWrbh27RpdunRh3bo77y00GAy0adOGb775Bg8Pj+yaq4iI5AE7T1yj0yebLba5JCcwet1nvLRnFQCHinoztEMoR4t6Wx3vr7FtcM/nmB1TFXmkZHhDonnz5uHp6QnAm2++ydWrV9m5cye3bt1i165dxMbGEhoamm0TFRGRx5/3yHCrga9G1N+ELw42B77/NuzIsz1n2gx8pz4IVOAT+X8ZXumLiYkxh741a9bw+eef88QTTwBQp04d5syZQ4cOHbJnliIi8lg7c/kWzaatt9hmZ0xlwLafCPn9K5yMKUQV8GR4YAibvOtaHe/Pka3w8rD85K5IXpXh0FeuXDn2799PuXLlMBgMODik7Wpvb8/NmzezfIIiIvJ4s3XvXon4GGaGTafx2f0ArKryJKPaDibW1fpGtHpYQ8SyDF/e7d+/P2+88QZ///03gwcPJjQ0lOPHjwNw8uRJhg0bRps2uklWREQy5u57c60JOrSRiIWDaXx2PzcdXXij3esM7DjKauCrXNRFgU/Ehgyv9IWGhnLmzBl8fHyoWLEip06dokqVKjg4OJCSkkK9evX45ptvsnOuIiLymAj4IJwjsZbbCiTeYkLkfDoduHO5d0+JKgztEMrpQiWtjrd/fAAFXLJsFzKRx1Km3iz94Ycf8tdff9GnTx969+5Nv379GDVqFBEREWzbtg0vL69MnXz8+PEYDIY0X9WqVTO3JyQkMGjQIAoXLkyBAgXo1KkT0dHRacY4c+YMgYGB5MuXj2LFivHGG2+QkpKSpmbDhg3Uq1cPZ2dnKlWqxOLFi9PNZe7cuXh7e+Pi4oKvry/btm3L1GcREZGM8R5pPfDVP3eQlYuG0OnAelINdsx+siude0yxGvhcuXM5V4FP5P4y/aekevXqVK9ePcsmUKNGDdas+d9O6/feKzhs2DDCw8NZtmwZ7u7uDB48mOeff55NmzYBkJqaSmBgIF5eXmzevJmLFy/Ss2dPHB0dmThxInDn0nNgYCCvvvoqX3/9NWvXrqVfv36UKFGCgIAAAJYuXUpISAgLFizA19eXWbNmERAQwJEjRyhWrFiWfVYRkbxsz6lYOi7YZLHNITWFIZu/ZfCW77A3GTnrXpzgoOHsLO1jdTy9WUMkcwwmk8mUkcKdO3dSv379LD35+PHjWb58OXv27EnXFhcXR9GiRVmyZAmdO3cG4PDhw1SvXp0tW7bQuHFjVq1aRVBQEBcuXKB48eIALFiwgBEjRhATE4OTkxMjRowgPDyc/fv3m8fu2rUrsbGxREREAODr60vDhg2ZM2cOAEajkTJlyjBkyBBGjhyZoc8SHx+Pu7s7cXFxuLlZv8FYRCQvsnXvXrlrF5i1YjpPXDwCwA81WjK+9atcd85vtY/u3RPJfPbI8OXdhg0bUqlSJSZOnMiFCxf+1STvdezYMUqWLEmFChXo0aMHZ86cAe6EzOTkZPz9/c211apVo2zZsmzZsgWALVu2UKtWLXPgAwgICCA+Pp4DBw6Ya+4d427N3TGSkpLYuXNnmho7Ozv8/f3NNZYkJiYSHx+f5ktERNKKik2wHvhMJrrs/ZWVi17niYtHiHfOz+Bn3mR40HCrgS+fnQKfyIPK1D19Tz/9NLNnz6ZcuXIEBQWxfPlyUlNTH/jkvr6+LF68mIiICObPn8/Jkydp2rQp169fJyoqCicnp3Rv+ChevDhRUVEAREVFpQl8d9vvttmqiY+P5/bt21y+fJnU1FSLNXfHsGTSpEm4u7ubv8qUKfNAPwMRkceV98hwGn+w1mKbx+145i2fxNRVH5I/OYE/y9SkbZ+PCKvezOp4u0a35uBEBT6RB5Wp0Pfee+9x/vx5vv32W0wmE507d6ZUqVKMGDGCo0ePZvrk7dq1o0uXLtSuXZuAgABWrlxJbGws3333XabHethGjRpFXFyc+evs2bM5PSURkVzD1uXcp07tIWLhYNof3UyynT0fNO9N967vc8HN8j3ULtxZ3dP9eyL/TqZCH9x50KJTp06Eh4dz+vRpBg0axPfff0/16tVp1sz6v9AywsPDgypVqvD333/j5eVFUlISsbGxaWqio6PNTwl7eXmle5r37vf3q3Fzc8PV1ZUiRYpgb29vscbW08jOzs64ubml+RIRyet+3XHBauBzSknmrXWf8fXS0XjduMpxz9I89/J0FjTujNHO3mKfXaNbc1iXc0WyRIZDn8FgSHesVKlSjBkzhuPHj/Prr7/+60ucN27c4Pjx45QoUYL69evj6OjI2rX/uzRw5MgRzpw5g5+fHwB+fn7s27ePS5cumWsiIyNxc3PDx8fHXHPvGHdr7o7h5ORE/fr109QYjUbWrl1rrhERkfvzHhnOgO93W2yrHHOa5V+GMGD7TwB8Vbcdgb1nsd+rktXxtLonkrUy/PSunZ0dUVFRWbqFSWhoKB06dKBcuXJcuHCBcePGsWfPHg4ePEjRokUZOHAgK1euZPHixbi5uTFkyBAANm++8zLu1NRU6tatS8mSJZkyZQpRUVG8/PLL9OvXL82WLTVr1mTQoEH06dOHdevW8frrrxMeHp5my5ZevXrx8ccf06hRI2bNmsV3333H4cOH093rZ42e3hWRvGrz4ct0X7zVcqPJRK9dYYzasAiXlCQu53NnRLvXWVvJ1+p4i7s3oEXtjP1/r0heltnskeF9+tavX4+np+e/mtw/nTt3jm7dunHlyhWKFi1KkyZN+PPPPylatCgAM2fOxM7Ojk6dOpGYmEhAQADz5s0z97e3tycsLIyBAwfi5+dH/vz56dWrF++88465pnz58oSHhzNs2DBmz55N6dKl+fTTT82BD+DFF18kJiaGsWPHEhUVRd26dYmIiMhw4BMRyats3btX9MY1pqyaRcsTOwHYUL4+b7QPJqZAIat99GSuSPbJ8Eqf2KaVPhHJa2wFvlZ/b2XKytkUvh1PgoMTE1u8whf1gsDCrUJ3KfCJZE62rfQBXLlyhb1791KnTh08PT25fPkyn332GYmJiXTp0iVL39QhIiK506xVfzHrt3MW21yTEhi9/lN67Lmz+f2hot683uENjhUtZ3W8NcHNqeRVIFvmKiL/k+HQt23bNtq0aUN8fDweHh5ERkbSpUsXHBwcMBqNfPDBB/zxxx/Uq1cvO+crIiI5yNbqXs2ov5m9YhoVr94JhJ80fI5pzXqS5OBotY9W90Qengw/vfv222/TpUsX4uLieOutt+jYsSOtWrXi6NGj/P3333Tt2pV33303O+cqIiI5ZN2eKKuBz86YysA/l/HTl8OpePUcUQU86fHie0x8uq/VwPdhx1oKfCIPWYbv6fP09GTTpk1Ur16d5ORkXFxc2LJlC40aNQJg165dPPPMM5w7Z3nJ/3Gne/pE5HFla3WvZPwlZoTNoPHZO+83X1nlSd5qO5hYV+v/P6iwJ5I1su2evqSkJFxdXQFwdHQkX758FClSxNxepEgRrly58gBTFhGR3CjuVjJ13vnVanuHg7/x/q/zcEu8yU1HF8b7D2BZrdZWH9ZoXtaBz18LsNgmItkvw6GvTJkynDhxAm9vbwC+/fZbSpQoYW6/ePFimhAoIiKPLlurewUSbzEhcj6dDqwHYHeJqgR3GM7pQiWt9jn6XjucHDL9EigRyUIZDn1du3ZN8+aLwMC0y/O//PKL+VKviIg8umwFvvrnDjIrbDpl4qJJNdgxx+9FPnryRVLsrf91osu5IrlDlu3Td+vWLezt7XF2ds6K4R45uqdPRB51trZicUhN4fVN3zDoz2XYm4ycdS9OcNBwdpb2sTrewq71ebqu9XeYi8i/k6379NmSL1++rBpKREQeMlure+WuXWD2imnUvXgUgB9qPs04/1e54Wz9//e1uieS+2Qq9F28eJH58+fzxx9/cPHiRezs7KhQoQIdO3akd+/e2NvbZ9c8RUQkG+w7E0eHeX9YbjSZeGFvJOPWfkL+5ATinPPzdsAgwqo3szpeg/IufP+fVtk0WxH5NzIc+nbs2IG/vz+VKlXC1dWVY8eO0b17d5KSkggNDWXhwoVERERQsGDB7JyviIhkEVurex6345kUMYd2RzcDsKVsLUICQ7joVtRqHz2sIZK7ZfhPZ3BwMMOGDWPHjh38/vvvLF68mKNHj/Ltt99y4sQJbt26xejRo7NzriIikkVsBb6nTu0hYuFg2h3dTJKdA5Na9KbHi+/ZDHynPghU4BPJ5TL8IEe+fPnYv38/FSpUAMBoNOLi4sLZs2cpXrw4kZGR9O7dm/Pnz2frhHMrPcghIo+C0KW/8/3ueIttzilJvPHb5/Tb8TMAxz1L83qHUA54VbI63nf9/GhUyTNb5ioitmXbgxzFihXj4sWL5tAXHR1NSkqK+SSVK1fm6tWrDzhtERHJbrZW9yrHnObDFVOpHnMKgC+faM/7LfuQ4OhitY8e1hB5tGQ49HXs2JFXX32VqVOn4uzszLvvvkvz5s3Nb+k4cuQIpUqVyraJiojIg1mz6yL9vttludFkoteuMN5avxDn1GQu53NnRLvXWVvJ1+p4o1tXoF+r6tk0WxHJLhkOfe+99x4XL16kQ4cOpKam4ufnx1dffWVuNxgMTJo0KVsmKSIiD8bW6l7RG9eYunIWLU7uBGB9hfq80T6Yy/kLWe2j1T2RR1emN2dOSEggJSWFAgUKZNecHkm6p09EcpOkFCNVRq+y2u5/bCuTV82m8O14EhyceL9lH758ItDqe3NBgU8kt8n2zZldXKzf3yEiIjmv1shwrltpc01KYPT6T+mxJwKAg8XK83qHN/i7SFmr4/0w4EnqV7C++icij4YMh75atWrxwgsv0Lt3b8qUKZOdcxIRkQdk63Juzai/mb1iKhWv3tll4eNGzzO96cskOTha7aPVPZHHR4Yv79rZ2eHp6UlsbCz+/v7079+fZ599FgeHLHuT2yNNl3dFJCcN/3YjP+yxvL5nZ0zlP9t+JOT3r3A0pnKxQGGGBw5js3ddq+P19i3C+OesP8whIjkvWy/v7t27l23btrFw4UK6du1KoUKF6NmzJ3379qV6dT3JJSKSE2yt7pWMv8TMsBn4nt0PQHjVp3grYDBxrtbfnqTVPZHHU6a2T3dwcKBjx4788ssvnDlzhmHDhvHLL79Qs2ZNnnzySRYuXJhd8xQRkX+IiU+0GfieOfgbEQuH4Ht2PzecXAltH8ygZ0cq8InkURm+vGtvb8/FixcpVqxYurYNGzbw2Wef8dNPP3Hjxo0sn+SjQJd3ReRhshX2CibeZELkAp4/sB6A3SWqMrRDKGcKlbDaZ/XrzahaUu9OF3mUZNvlXVvZsEWLFrRo0YL4eMuv9hERkaxjK/A1OHeAWSumUzr+EqkGO+b4vchHT75Iir31/7vX6p5I3pDh0NerVy/z2zes0QqXiEj2CRwfzoEEy20OqSm8vukbBv25DHuTkTPuxQkOCmVXaev3W3dvUIiJnZ/MptmKSG6T4dC3aNGi7JyHiIjYYGt1z/vqeWaFTafuxaMA/FDzacb5v8oN53xW+2h1TyTv0X4rIiK5WNjWswz+aa/lRpOJF/ZGMm7tJ+RPTiDOOT9vBQwmvHpTm2Mq8InkTQp9IiK5lK3VPY/b8XwQ8RFtj24BYEvZWoQEhnDRrajVPn+NbYN7PusbMYvI402hT0QkF7IV+Jqc3M30lTMpfuMqSXYOTGv2Mv9t9Bwmg/VduLS6JyIKfSIiuYitsOecksQbv31Ovx0/A/C3Z2mGdgjlgFclq316NirMO883zvJ5isijR6FPRCSXsBX4qsScYvaKaVSPOQXAF08EMrHlKyQ4uljto9U9EbmXQp+ISA57bdFqVh5JsdhmMBnpvXMFIzcsxjk1mcv53Hmz3VDWVWpkdbwywO8KfCLyDwp9IiI5yNbqXtEbV5m2chbNT+4CYF2FBrzZfiiX8xey2kereyJiTabevZudPvjgAwwGA8HBweZjCQkJDBo0iMKFC1OgQAE6depEdHR0mn5nzpwhMDCQfPnyUaxYMd544w1SUtL+i3nDhg3Uq1cPZ2dnKlWqxOLFi9Odf+7cuXh7e+Pi4oKvry/btm3Ljo8pIgLAjYQUm4Gv9bE/iVg4mOYnd5Hg4MSY1q/Sp/M4BT4ReWC5IvRt376djz/+mNq1a6c5PmzYMFasWMGyZcv47bffuHDhAs8//7y5PTU1lcDAQJKSkti8eTOff/45ixcvZuzYseaakydPEhgYSMuWLdmzZw/BwcH069eP1atXm2uWLl1KSEgI48aNY9euXdSpU4eAgAAuXbqU/R9eRPIc75Hh1By/2mKba1ICEyPm8N8f36Pw7XgOFKtAUK9ZfFkvCAwGi33efLqcAp+I3JfBZOulupl05swZSpUqhb29fYb73Lhxg3r16jFv3jzee+896taty6xZs4iLi6No0aIsWbKEzp07A3D48GGqV6/Oli1baNy4MatWrSIoKIgLFy5QvHhxABYsWMCIESOIiYnBycmJESNGEB4ezv79+83n7Nq1K7GxsURERADg6+tLw4YNmTNnDgBGo5EyZcowZMgQRo4cmaHPkdmXHotI3mRrda/WxWPMCptGxavnMWLgv42eY3rTl0lysL63nsKeSN6V2eyRpSt93t7e+Pj48OOPP2a4z6BBgwgMDMTf3z/N8Z07d5KcnJzmeLVq1Shbtixbtvz/ZqRbtlCrVi1z4AMICAggPj6eAwcOmGv+OXZAQIB5jKSkJHbu3Jmmxs7ODn9/f3ONJYmJicTHx6f5EhGxpuP74VYDn50xlde2fMePX4VS8ep5LhYoTI+u7zGpZR+rga+euwKfiGROlj7IsX79ek6cOMHSpUvTXIa15ttvv2XXrl1s3749XVtUVBROTk54eHikOV68eHGioqLMNfcGvrvtd9ts1cTHx3P79m2uXbtGamqqxZrDhw9bnfukSZOYMGHCfT+jiIit1b1ScZeYET4D37N3rkaEVW3C2wGDiHMtaLWPwp6IPIgsDX3NmzenefPmvPLKK/etPXv2LEOHDiUyMhIXF+v7TOVWo0aNIiQkxPx9fHw8ZcqUycEZiUhus3LbOV778S+r7c8c/I33fp2HW+JNbji5Ms7/VX6o+bTVe/dAgU9EHtwDhb64uDjzSpqXlxfu7u6ZHmPnzp1cunSJevXqmY+lpqayceNG5syZw+rVq0lKSiI2NjbNal90dDReXl7mc//zKdu7T/feW/PPJ36jo6Nxc3PD1dUVe3t77O3tLdbcHcMSZ2dnnJ2dM/25RSRvsLW6VzDxJu/8Op/nDm4AYFfJqgQHhXKmUAmrfb7q2YgmPtbfqysicj+Zuqfv008/xcfHB09PT3x8fNL8788++yxTJ27VqhX79u1jz5495q8GDRrQo0cP8/92dHRk7dq15j5HjhzhzJkz+Pn5AeDn58e+ffvSPGUbGRmJm5sbPj4+5pp7x7hbc3cMJycn6tevn6bGaDSydu1ac42ISGbYCnwNz+5n1cIhPHdwA6kGO2Y+1Z0uPabYDHynPghU4BORfy3DK31Tp05l/PjxvP766wQEBJjvgYuOjubXX39l6NChXLt2jdDQ0AyNV7BgQWrWrJnmWP78+SlcuLD5eN++fQkJCcHT0xM3NzeGDBmCn58fjRvfeY9kmzZt8PHx4eWXX2bKlClERUUxevRoBg0aZF6Fe/XVV5kzZw5vvvkmffr0Yd26dXz33XeEh//v/5RDQkLo1asXDRo0oFGjRsyaNYubN29m6DK1iMhdtsKeQ2oKQzd9w2t/LsPeZOSMe3GCO4Syq1R1q33aVIRP+utyrohkjQyHvjlz5rBo0SJeeOGFNMerV69OixYtqFOnDm+88UaGQ19GzJw5Ezs7Ozp16kRiYiIBAQHMmzfP3G5vb09YWBgDBw7Ez8+P/Pnz06tXL9555x1zTfny5QkPD2fYsGHMnj2b0qVL8+mnnxIQEGCuefHFF4mJiWHs2LFERUVRt25dIiIi0j3cISJija3A5331PLPCplH34jEAvq/ZivH+/+GGcz6rfXTvnohktQzv0+fq6squXbuoXt3yv0oPHjxIgwYNuHXrVpZO8FGhffpE8qa3vt/Mkh3XLDeaTLy491fGrf2EfMmJxDnnZ1TbIays1sTmmAp8IpIRmc0eGV7pa9iwIR988AGfffYZDg5pu6WmpjJ58mQaNmyY+RmLiDyibK3uFboVxwcRHxFw7E8ANpetzfDAYVx0s35v3sbQlpQtYn31T0Tk38jU5d2AgAC8vLxo1qxZmnv6Nm7ciJOTE7/++mu2TVREJDexFfiantzFtJWzKH7jKkl2Dkxr9jL/bfQcJoP1Z+e0uici2S1Tr2G7fv06X331FX/++WeaLVv8/Pzo3r17nr6sqcu7InmDrbDnnJLEm799Tt8dPwNwrHAZgjuEcqB4Rat96nvADyMV+EQk8zKbPbL03bt5mUKfyOPPVuCrGnOKWSumUT3mFABfPBHIxJavkOBoffN5re6JyL+Rbff03RUVFcXWrVvNK30lSpSgUaNGNjcyFhF5lDUYGc5lK20Gk5HeO1cwcsNinFOTicnnwZvth7K+ou17nBX4RORhy3Dou3nzJv/5z3/49ttvMRgMeHp6AnD16lVMJhPdunXj448/Jl8+3YQsIo8PW6t7RW9cZXr4TJqd2g3AugoNeLP9UC7nL2S1j8KeiOSUDL+RY+jQoWzbto3w8HASEhKIjo4mOjqahIQEVq5cybZt2xg6dGh2zlVE5KGJiU+0GfjaHN3C6oWDaXZqNwkOToxuPZA+nccp8IlIrpXhe/oKFSpEeHg4Tz75pMX2TZs2ERQUxLVrVvareszpnj6Rx4etsOealMCYdf+l+1+rAThQrAKvd3iD40XKWO3TsVY+ZvVomeXzFJG8Ldvu6TMajTg5OVltd3Jywmg0ZnQ4EZFcyVbgq33xKLNWTKPCtQsYMfBJo+eY0fRlkhwcrfbR6p6I5BYZDn1BQUEMGDCAzz77jCeeeCJN2+7duxk4cCAdOnTI8gmKiDwMtsKenTGVV7f+wLA/vsbRmMrFAoUJCRrOlnK1bY6pwCciuUmmNmfu3r079evXp1ChQhQrVgyAS5cuERsbS0BAAHPmzMm2iYqIZBdbga9U3CVmhE3H99wBAMKqNuHtgEHEuRa02kdhT0RyowyHvkKFCrFq1SoOHTpkcXPmatWqZdskRUSywxcbjjI24pjV9mcObuC91fNwS7rFDSdXxvm/yg81nwaDwWofBT4Rya0yvU9f9erVqV69enbMRUTkobG1uueWcIN3IufT8eBvAOwsWY1hQcM5U6iE1T7vtK1MzxZVsnyeIiJZJVOhLykpieXLl7Nly5Y0K31PPvkkzz77rM0HPUREcgtbga/h2f3MDJtO6fgYUgx2fPRkV+Y8+SKpdvZW+2h1T0QeBRkOfX///TcBAQFcuHABX19fihcvDtx5iGPBggWULl2aVatWUalSpWybrIjIv2Er7DmkphC8aQkD//wee5OR0x5eDAsazq5Stq9sKPCJyKMiw/v0tW7dmvz58/PFF1+k2wsmPj6enj17cvv2bVavXp0tE83ttE+fSO5mK/CVv3qeWSumUSfqzv19y2r6M95/ADedrb9hSGFPRHJatu3Tt2nTJrZt22ZxUDc3N9599118fX0zN1sRkWz2zLvh7L1ppdFkoutfqxm77r/kS04k1qUAowIGs6paE5tjKvCJyKMow6HPw8ODU6dOUbNmTYvtp06dwsPDI6vmJSLyr9la3St0K47JER/R5tifAGwqV5vh7UOIcititc/q15tRtaT1rVpERHKzDIe+fv360bNnT8aMGUOrVq3M9/RFR0ezdu1a3nvvPYYMGZJtExURyQxbga/pyV1MD59JsZvXSLJzYGqznnzaqCMmg/XXkWt1T0QedRm+pw9g8uTJzJ49m6ioKAz/v0+VyWTCy8uL4OBg3nzzzWybaG6ne/pEcgdbYc85JYkRGxbTZ+cvABwrXIbgDqEcKF7Rah8PYI8Cn4jkQpnNHpkKfXedPHkyzZYt5cuXz/xMHzMKfSI5z1bgqxpzitm/TKXa5dMAfF4vkEktXiHB0cVqH63uiUhulm0PctyrfPnyCnoikmtUHBlOqpU2g8nIKztWMOK3xTinJhOTz4M32w9lfcWGNsdU4BORx80DhT5Lfv75Z+Li4ujZs2dWDSkicl+2VveKXb/CtJWzaHZqNwBrKzbkzXZDuZLfw2ofhT0ReVw90OVdS6pVq8axY8dITbX27+3Hmy7vijxc56/e5qkp66y2tzm6hQ8iPsLzdjy3HZx5/+m+fFW3nd6bKyKPjYdyedeSw4cPZ9VQIiI22Vrdy5d0mzFr/0u3vb8CsL94RYYGhXK8SBmrfZ5wg5/eUuATkcdbloU+EZGHwVbgq33xKLNWTKPCtQsYMfCJ7/NMb/oSyfaOVvtodU9E8opMh75t27axZcuWNE/v+vn50ahRoyyfnIjIXbbCnp0xlYF/fk/wpiU4GlO5ULAIwwND2FKuts0xFfhEJC/JcOi7dOkSnTp1YtOmTZQtWzbN5szDhg3jqaee4ocffqBYsWLZNlkRyZtsBb7ScdHMCJtOo3MHAQir1pS3AgYR71LAah+FPRHJizIc+l577TVSU1M5dOgQVatWTdN25MgR+vTpw6BBg1i2bFmWT1JE8qYhX6xhxcFEq+3PHljPu7/Oxy3pFjecXBnb+lV+rPG0HtYQEbEgw0/vFixYkI0bN/LEE09YbN+5cyctWrTg+vXrWTrBR4We3hXJWrZW99wSbvDur/N59tBvAOwsWY3gDqGc9fCy2uf1ZqUIaV83q6cpIpJjsu3pXWdnZ+Lj4622X79+HWdn54wOJyJila3A1+jsfmaETad0fAwpBjs+fKobc/1eINXO3mofre6JiGQi9L344ov06tWLmTNn0qpVK3OijI+PZ+3atYSEhNCtW7dsm6iIPP5shT3H1GSC/1jCwD+/xw4Tpz28CA4KZXepajbHVOATEbkjw6FvxowZGI1GunbtSkpKCk5OTgAkJSXh4OBA3759mTZtWrZNVEQeb7YCX4Ur55gVNo3aUX8D8F0tfya0GsBN53xW+yjsiYikZZfRQmdnZ+bPn09MTAxr1qxh4cKFLFy4kDVr1hATE8O8efMyfXl3/vz51K5dGzc3N9zc3PDz82PVqlXm9oSEBAYNGkThwoUpUKAAnTp1Ijo6Os0YZ86cITAwkHz58lGsWDHeeOMNUlJS0tRs2LCBevXq4ezsTKVKlVi8eHG6ucydOxdvb29cXFzw9fVl27ZtmfosIvJgGo8Mtx74TCa67Ykg7POh1I76m1iXAgx8diRvtg9W4BMRyaRM79Pn5uZGy5Yts+TkpUuX5oMPPqBy5cqYTCY+//xznn32WXbv3k2NGjUYNmwY4eHhLFu2DHd3dwYPHszzzz/Ppk2bAEhNTSUwMBAvLy82b97MxYsX6dmzJ46OjkycOBGAkydPEhgYyKuvvsrXX3/N2rVr6devHyVKlCAgIACApUuXEhISwoIFC/D19WXWrFkEBARw5MgRbUEjko1sre553orjg4iPaHPsTwA2lavN8PYhRLkVsdpn5eCm+JTWg1QiIpZk6OndDz/8kAEDBuDi4pKhQRcsWECPHj0oWLBgpifk6enJ1KlT6dy5M0WLFmXJkiV07twZuPOqt+rVq7NlyxYaN27MqlWrCAoK4sKFC+Z9AxcsWMCIESOIiYnBycmJESNGEB4ezv79+83n6Nq1K7GxsURERADg6+tLw4YNmTNnDgBGo5EyZcowZMgQRo4cmaF56+ldkcyxFfiandjJtJWzKHbzGon2Dkxt1pPPGnbEZLB+cUKreyKS12Q2e2To8u6wYcMytRXLm2++SUxMTIbr4c6q3bfffsvNmzfx8/Nj586dJCcn4+/vb66pVq0aZcuWZcuWLQBs2bKFWrVqmQMfQEBAAPHx8Rw4cMBcc+8Yd2vujpGUlMTOnTvT1NjZ2eHv72+usSQxMZH4+Pg0XyJyf942Luc6pyQxbs3HfLFsHMVuXuNY4TI89/IMPm30vAKfiMi/lKHLuyaTiVatWuHgkLGrwbdv387wBPbt24efnx8JCQkUKFCAn376CR8fH/bs2YOTkxMeHh5p6osXL25+BVxUVFSawHe3/W6brZr4+Hhu377NtWvXSE1NtVhz+PBhq/OeNGkSEyZMyPDnFBHbq3vVLp1k1oppVLt8GoDF9YKY1OIVEh2t3yussCciknEZSnHjxo3L1KDPPvssnp6eGaqtWrUqe/bsIS4uju+//55evXrx22+/Zep8OWHUqFGEhISYv4+Pj6dMmTI5OCOR3MtW2DOYjPTZ8Qtv/rYY59QUYvJ58Eb7oWyo2NDmmAp8IiKZky2hLzOcnJyoVKkSAPXr12f79u3Mnj2bF198kaSkJGJjY9Os9kVHR+PldWfXfS8vr3RP2d59uvfemn8+8RsdHY2bmxuurq7Y29tjb29vsebuGJY4OztrM2qRDLAV+Ipdv8K0lbNodmo3AGsqNmREu6Fcye9htY/CnojIg8nwli0Pi9FoJDExkfr16+Po6MjatWvNbUeOHOHMmTP4+fkB4Ofnx759+7h06ZK5JjIyEjc3N3x8fMw1945xt+buGE5OTtSvXz9NjdFoZO3ateYaEcm8g+fibQa+gKObWb1wMM1O7ea2gzOj27xGv05jFfhERLJJprdsyUqjRo2iXbt2lC1bluvXr7NkyRI2bNjA6tWrcXd3p2/fvoSEhODp6YmbmxtDhgzBz8+Pxo0bA9CmTRt8fHx4+eWXmTJlClFRUYwePZpBgwaZV+FeffVV5syZw5tvvkmfPn1Yt24d3333HeHh//vLKCQkhF69etGgQQMaNWrErFmzuHnzJq+88kqO/FxEHnW2wl6+pNuMXftfuu79FYD9xSsytEMoxwtbvz3CDjihwCci8q/kaOi7dOkSPXv25OLFi7i7u1O7dm1Wr15N69atAZg5cyZ2dnZ06tSJxMREAgICmDdvnrm/vb09YWFhDBw4ED8/P/Lnz0+vXr145513zDXly5cnPDycYcOGMXv2bEqXLs2nn35q3qMP7rxiLiYmhrFjxxIVFUXdunWJiIhI93CHiNyfrcBX58IRZoVNo/y1ixgx8LFvJ2Y07UGyvaPVPlrdExHJGhnap0/uT/v0SV5nK+zZGVMZ+Of3DPvjaxxMRi4ULEJIUAh/lq1tc0wFPhER6zKbPf7VSt+mTZto0KCBHmgQyeNsBb7ScdHMCJtOo3MHAVhRrSlvBwwi3qWA1T4KeyIiWe9fhb527dqxZ88eKlSokFXzEZFHSJ/54aw7bb392QPreffX+bgl3eK6kytjWw/kpxotwWCw2keBT0Qke/yr0KcrwyJ5l63VPbeEG7z763yePXRnz80dpaoTHDSccx7Wt0Hq4OPMRz39rbaLiMi/k6MPcojIo8lW4Gt0dj8zwqZTOj6GFIMds5/qxjy/F0i1s7faR6t7IiLZ71+Fvo8//lhPuIrkIbbCnmNqMsP++JpX//wBO0yc8ijBsKDh7C5VzeaYCnwiIg/Hvwp93bt3z6p5iEguZyvwVbhyjllh06gd9TcAS2u15p1W/bnpnM9qH4U9EZGHS5d3RcQmW2EPk4nuf0Uwet2n5EtOJNalACPbDiGi6lM2x1TgExF5+BT6RMQqW4HP81Yck1d9SOu/twLwR7k6DA8cRnTBIlb7bH/Ln6Ju2uJJRCQnKPSJiEW2Al/zEzuZunIWxW5eI9HeganNevJZw46YDNZf563VPRGRnKXQJyJp2Ap7zsmJjPxtMa/sXAHA0cJlGfpMKIeK2d6rU4FPRCTnWf9nuRWff/454eH/+0vhzTffxMPDgyeffJLTp23s0ioiuZ6twFft0kl++WKYOfAtqt+BDr1m2gx8pz4IVOATEcklMh36Jk6ciKurKwBbtmxh7ty5TJkyhSJFijBs2LAsn6CIZD/vkeFWA5/BZKTv9uX8/MUwql4+Q0x+D3p3Hs8E//+Q6Gj9/jyFPRGR3CXTl3fPnj1LpUqVAFi+fDmdOnViwIABPPXUU7Ro0SKr5yci2czW6l6x61eYHj6Tpqf3ABBZqREj277OlfweVvso7ImI5E6ZXukrUKAAV65cAeDXX3+ldevWALi4uHD79u2snZ2IZJttf1+1GfgCjmxm9cLBND29h9sOzrwVMIj+z49R4BMReURleqWvdevW9OvXjyeeeIKjR4/Svn17AA4cOIC3t3dWz09EsoGtsJcv6Tbj1nzCi/siAdhXvCLBHUI5XriMzTEV+EREcrdMh765c+cyevRozp49yw8//EDhwoUB2LlzJ926dcvyCYpI1rIV+OpcOMKssGmUv3YRIwY+9u3EjKY9SLZ3tNpHYU9E5NFgMJlMppyexOMgPj4ed3d34uLicHNzy+npiKRjK+zZG1N5bct3DN30DQ4mI+cLFmV40DD+LFvb5pgKfCIiOSez2eOB9+m7desWZ86cISkpKc3x2rVt/yUhIg+frcBXOjaKmWEzaHj+IAArqjXl7YBBxLsUsNpHYU9E5NGT6dAXExND7969iYiIsNiempr6ryclIlmjx6xwNkVZaTSZeO7Aet6JnE/BpNtcd3JlbOuB/FSjJRgMVsdU4BMReTRl+und4OBg4uLi2Lp1K66urkRERPD5559TuXJlfvnll+yYo4g8AO+R1gOfW8INPlwxlZnhMyiYdJvtpXxo98pH/FTzaauBr2t9DwU+EZFHWKZX+tatW8fPP/9MgwYNsLOzo1y5crRu3Ro3NzcmTZpEYKD+UhDJabYu5/qe2ceMsBmUuh5DisGO2U91Y57fC6Ta2Vvto7AnIvLoy3Tou3nzJsWKFQOgUKFCxMTEUKVKFWrVqsWuXbuyfIIiknG2wp5jajLD/viaV//8ATtMnPIoQXCHUPaUrGpzTAU+EZHHQ6ZDX9WqVTly5Aje3t7UqVOHjz/+GG9vbxYsWECJEiWyY44ikgG2Al/FK2eZtWIataKPA/Bt7Ta806o/t5xcrfZR2BMRebxkOvQNHTqUixcvAjBu3Djatm3L119/jZOTE4sXL87q+YnIfdgKe5hM9NizitHrPsM1JZFrLgUZ2XYIq6s+aXNMBT4RkcfPv96n79atWxw+fJiyZctSpEiRrJrXI0f79ElOsBX4PG/FMXnVbFr/vQ2A38vVJTQwmOiC1v+crg9pQfli+bN8niIikvWydZ++5ORkqlWrRlhYGNWrVwcgX7581KtX78FmKyIPJNVoouJbK622tzi+g6mrZlH0ZiyJ9g5MadaLhQ2fxWSw/sC+VvdERB5vmQp9jo6OJCQkZNdcRCQDbK3uOScnMvK3xbyycwUAR4qUJbhDKIeKVbA5pgKfiMjjL9P39A0aNIjJkyfz6aef4uDwwC/0EJEHYCvwVb90glkrplH18hkAFtXvwAfNe5Po6Gy1j8KeiEjekenUtn37dtauXcuvv/5KrVq1yJ8/7f0/P/74Y5ZNTkTusBX2DCYjfbb/zJsbP8c5NYWY/B6Eth/GbxXq2xxTgU9EJG/JdOjz8PCgU6dO2TEXEbHAVuArfv0y08Jn0fT0HgAiK/kyot3rXM3nbrWPwp6ISN6U6dC3aNGi7JiHiPxDxPbzvPrDHqvtbY9sYlLEHAolXOe2gzPvturHkjpt9d5cERGx6IFuyktJSWHDhg0cP36c7t27U7BgQS5cuICbmxsFChTI6jmK5Dm2VvfyJd1m3JpPeHFfJAB7vSoRHBTKicKlrfYpBOxW4BMRydMyHfpOnz5N27ZtOXPmDImJibRu3ZqCBQsyefJkEhMTWbBgQXbMUyTPsBX46l44wqwV0/COvYgRA/Mbd2ZWk+4k2zta7aPVPRERAbC+aZcVQ4cOpUGDBly7dg1X1/+9wum5555j7dq1mRpr0qRJNGzYkIIFC1KsWDE6duzIkSNH0tQkJCQwaNAgChcuTIECBejUqRPR0dFpas6cOUNgYCD58uWjWLFivPHGG6SkpKSp2bBhA/Xq1cPZ2ZlKlSpZfHvI3Llz8fb2xsXFBV9fX7Zt25apzyPyb3iPDLca+OyNqQzZ9A3ff/UG3rEXOV+wKN26TWRq814KfCIikiGZDn2///47o0ePxsnJKc1xb29vzp8/n6mxfvvtNwYNGsSff/5JZGQkycnJtGnThps3b5prhg0bxooVK1i2bBm//fYbFy5c4Pnnnze3p6amEhgYSFJSEps3b+bzzz9n8eLFjB071lxz8uRJAgMDadmyJXv27CE4OJh+/fqxevVqc83SpUsJCQlh3Lhx7Nq1izp16hAQEMClS5cy+yMSyTRbq3ulY6NYumQkw//4GgeTkV+qN6Ndn4/YWraW1T6nPghU4BMRkTQy/Rq2QoUKsWnTJnx8fChYsCB//fUXFSpU4I8//rC4CpcZMTExFCtWjN9++41mzZoRFxdH0aJFWbJkCZ07dwbg8OHDVK9enS1bttC4cWNWrVpFUFAQFy5coHjx4gAsWLCAESNGEBMTg5OTEyNGjCA8PJz9+/ebz9W1a1diY2OJiIgAwNfXl4YNGzJnzhwAjEYjZcqUYciQIYwcOfK+c9dr2ORBvPrZKiKOGS03mkw8f2AdEyIXUDDpNtedXBnT5jWW+7TQwxoiIpLp7JHplb42bdowa9Ys8/cGg4EbN24wbtw42rdvn9nh0oiLiwPA09MTgJ07d5KcnIy/v7+5plq1apQtW5YtW7YAsGXLFmrVqmUOfAABAQHEx8dz4MABc829Y9ytuTtGUlISO3fuTFNjZ2eHv7+/ueafEhMTiY+PT/MlkhneI8OtBj63hBt89MsUZoTPpGDSbbaX8qHdKx+xvEZLq4Gve4NCCnwiImJVph/kmD59OgEBAfj4+JCQkED37t05duwYRYoU4ZtvvnngiRiNRoKDg3nqqaeoWbMmAFFRUTg5OeHh4ZGmtnjx4kRFRZlr7g18d9vvttmqiY+P5/bt21y7do3U1FSLNYcPH7Y430mTJjFhwoQH+7CS59m6nNv4zF6mh82k1PUYUgx2zGrSnfmNu5BqZ2+1j8KeiIjcT6ZDX+nSpfnrr79YunQpf/31Fzdu3KBv37706NEjzYMdmTVo0CD279/PH3/88cBjPEyjRo0iJCTE/H18fDxlypTJwRnJo8BW2HNMTSbk96/5z9YfsMPEyUIlGBYUyp6SVW2OqcAnIiIZkenQ980339CtWzd69OhBjx490rS98cYbTJ06NdOTGDx4MGFhYWzcuJHSpf+315iXlxdJSUnExsamWe2Ljo7Gy8vLXPPPp2zv3ld4b80/7zWMjo7Gzc0NV1dX7O3tsbe3t1hzd4x/cnZ2xtnZ+jtNRf7JVuCreOUss1ZMo1b0cQC+rd2Gd1r155aT9X9IKeyJiEhmZPqevoEDB7Jq1ap0x4cNG8ZXX32VqbFMJhODBw/mp59+Yt26dZQvXz5Ne/369XF0dEyzFcyRI0c4c+YMfn5+APj5+bFv3740T9lGRkbi5uaGj4+Pueaf28lERkaax3BycqJ+/fppaoxGI2vXrjXXiDyoJ2xsxYLJRI/dKwlbHEyt6ONccynIfzq+xch2ryvwiYhIlsr0St/XX39Nt27dCAsLo0mTJgAMGTKEH3/8kfXr12dqrEGDBrFkyRJ+/vlnChYsaL4Hz93dHVdXV9zd3enbty8hISF4enri5ubGkCFD8PPzo3HjxsCdB0t8fHx4+eWXmTJlClFRUYwePZpBgwaZV+JeffVV5syZw5tvvkmfPn1Yt24d3333HeHh//uLOCQkhF69etGgQQMaNWrErFmzuHnzJq+88kpmf0QiZrZW9wrfjOWDiA9p/fedlerfy9VleOAwLhUsbLXP9rf8KeqmFWYREcm8TG/ZArBkyRIGDx5MZGQkn332GT///DPr16+nSpUqmTu5lacQFy1aRO/evYE7mzMPHz6cb775hsTERAICApg3b16ay66nT59m4MCBbNiwgfz589OrVy8++OADHBz+l2k3bNjAsGHDOHjwIKVLl2bMmDHmc9w1Z84cpk6dSlRUFHXr1uXDDz/E19c3Q59FW7bIvVKNJiq+tdJqe4vjO5i6chZFb8WSaO/AlOa9WdjgGUwG64vvWt0TEZF7ZTZ7PFDoA5g3bx4hISEULVqU9evXU6lSpQcZ5rGh0Cd32Vrdc05OZNSGRfTeFQbAkSJlGdrhDQ4XK2+1DyjwiYhIepnNHhm6vHvvU6r3Klq0KPXq1WPevHnmYzNmzMjgVEUeP7YCn0/0CWatmEaVK2cAWFS/Ax80702io/XLtQp7IiKSVTIU+nbv3m3xeKVKlYiPjze3W7tcK/K4sxX2DCYj/bYtJ/T3L3BOTeFS/kKEtg9mY4X6NsdU4BMRkayUodCX2Qc0RPISW4Gv+PXLTA+fSZPTfwEQWcmXEe1e52o+d6t9FPZERCQ7ZPrpXRG548fNpwj55YDV9rZHNvFBxEd4JNzglqMz7z7dn2/qBOi9uSIikiMU+kQegK3VvfyJtxi39hNe2LcGgL1elQgOCuVE4dJW+9RwgfDxCnwiIpJ9FPpEMslW4Hvi/GFmhk3HO/YiRgzMb9yZWU26k2zvaLWPVvdERORhUOgTySBbYc/emMqgLd/x+qZvcDAZOedWlJCg4WwrU9PmmAp8IiLysCj0iWSArcBXJjaKmWHTaXD+EAA/V2/OmDYDiXcpYLWPwp6IiDxsCn0iNoQu/Z3vd8dbbjSZeP7AOiZELqBg0m3infIxps1Afq7R0uaYCnwiIpITFPpErLC1uueWcIOJq+cSdPh3ALaV9iEkaDjn3Itb7fOWf3kG+Ptk+TxFREQyQqFPxAJbgc/v9F6mh8+g5PXLpBjsmNmkB/Mbd8ZoZ2+1j1b3REQkpyn0idzDVthzTE1m+O9fMWDrj9hh4mShEgQHhfJXyao2x1TgExGR3EChT+T/2Qp8FS+fZXbYNGpGHwfgm9pteLdVf245uVrto7AnIiK5iUKf5HnPvhfOXzesNJpMvLRnFW+v+wzXlESuuRRkZLshrK7ypM0xFfhERCS3UeiTPM3W6l7hm7FMXjUb/+PbAdjo/QSh7YO5VLCw1T5H32uHk4Ndls9TRETk31LokzwpKcVIldGrrLa3OL6dqStnU/RWLIn2Dkxu/gqLGnTAZLAe6LS6JyIiuZlCn+Q5tlb3nJMTeWvDQnrtulNzuEg5gjuEcrhYeat9CgL7FPhERCSXU+iTPMVW4POJPsHsFVOpfOUsAAvrP8PkFr1JdHCy2kereyIi8qhQ6JM84emR4Zyw0mYwGem3bTlvbPwCJ2MKl/IXIrR9MBsr1Lc5pgKfiIg8ShT65LFna3XPK/4y01fO4KnTewH4tXJjRrYdwtV87lb7KOyJiMijSKFPHlt7TsXSccEmq+3tDv/BpNVz8Ei4wS1HZ955uj/f1gkAg8FqHwU+ERF5VCn0yWPJ1upe/sRbjF/zCV32rwHgL6/KBHcI5aRnKat9Aqs5Mrd3myyfp4iIyMOi0CePHVuBr975Q8wMm0652CiMGJjn14VZT3Unxd76HwWt7omIyONAoU8eG7VGhnPdSpu9MZXBm5cyZPO3OJiMnHMrSkjQcLaVqWlzTAU+ERF5XCj0yWPB1upemdgoZq2YRv0LhwFY7tOcsa0HEu9SwGofhT0REXncKPTJI23Gyj18uPG85UaTiU771zFhzQIKJN0m3ikfY9oM5OcaLW2OqcAnIiKPI4U+eWTZWt1zv32d91fPJejIHwBsK+1DSNBwzrkXt9pn3vN1aN+odJbPU0REJDdQ6JNHkq3A53d6LzPCplPixhWS7eyZ2aQHC3w7YbSzt9pHq3siIvK4U+iTR4qtsOeYmszwjV8yYNtP2GHiRKGSBHcIZW+JKlb7FAW2K/CJiEgeoNAnjwxbga/i5bPMDptGzejjACypE8B7T/fjlpOr1T5a3RMRkbxEoU9yvUGLfyX8cLLlRpOJl3avZPT6z3BJSeKqqxsj2w7h1yp+NsdU4BMRkbxGoU9yNVure0VuXmPyqg9pdXw7ABu9nyC0fTCXCha22ufoe+1wcrDL8nmKiIjkdgp9kmvZCnwtjm9n6srZFL0VS6K9I5Ob92ZRgw6YDNYDnVb3REQkL8vRJY+NGzfSoUMHSpYsicFgYPny5WnaTSYTY8eOpUSJEri6uuLv78+xY8fS1Fy9epUePXrg5uaGh4cHffv25caNG2lq9u7dS9OmTXFxcaFMmTJMmTIl3VyWLVtGtWrVcHFxoVatWqxcuTLLP69kjPfIcKuBzyU5gXd+nc/i7ydQ9FYsh4uU45leM1nY8Fmrga+euwKfiIhIjoa+mzdvUqdOHebOnWuxfcqUKXz44YcsWLCArVu3kj9/fgICAkhISDDX9OjRgwMHDhAZGUlYWBgbN25kwIAB5vb4+HjatGlDuXLl2LlzJ1OnTmX8+PF88skn5prNmzfTrVs3+vbty+7du+nYsSMdO3Zk//792ffhxSJbq3s+0SdY8fkweu6+U7Ow/jM822smR4p6W+1z6oNAfhylwCciImIwmUymnJ4EgMFg4KeffqJjx47AnVW+kiVLMnz4cEJDQwGIi4ujePHiLF68mK5du3Lo0CF8fHzYvn07DRo0ACAiIoL27dtz7tw5SpYsyfz583n77beJiorCyckJgJEjR7J8+XIOH77zWq4XX3yRmzdvEhYWZp5P48aNqVu3LgsWLMjQ/OPj43F3dycuLg43N7es+rHkGV2nh/NnjOU2g8lI/20/EbrxS5yMKVzKX4jhgcP4vXw9m2NqdU9ERB5nmc0eufaO9pMnTxIVFYW/v7/5mLu7O76+vmzZsgWALVu24OHhYQ58AP7+/tjZ2bF161ZzTbNmzcyBDyAgIIAjR45w7do1c82957lbc/c8liQmJhIfH5/mSx6M90jrgc8r/jJfLR3NWxsW4WRMYXXlxgT0mWMz8J36IFCBT0RE5B9ybeiLiooCoHjxtK/NKl68uLktKiqKYsWKpWl3cHDA09MzTY2lMe49h7Wau+2WTJo0CXd3d/NXmTJlMvsR87zzV2/bvJzb/vAfRCwazFOn93LL0ZkRbYfwn+fe5lo+d6t9FPZEREQs09O7D2jUqFGEhISYv4+Pj1fwywRbYS9/4i0mrPmYzvvXAvCXV2WCO4Ry0rOU1T4hLcrwetvaWT5PERGRx0WuDX1eXl4AREdHU6JECfPx6Oho6tata665dOlSmn4pKSlcvXrV3N/Ly4vo6Og0NXe/v1/N3XZLnJ2dcXZ2foBPJrYCX73zh5gZNp1ysVEYMTDX7wVmP9WNFHvrv6pa3RMREbm/XHt5t3z58nh5ebF27Vrzsfj4eLZu3Yqf3523Lfj5+REbG8vOnTvNNevWrcNoNOLr62uu2bhxI8nJ/3ujQ2RkJFWrVqVQoULmmnvPc7fm7nkka3T6wPpWLPbGVIL/+Jrvvh5BudgozrkV48Xuk5je7GWrga+SQYFPREQko3J0pe/GjRv8/fff5u9PnjzJnj178PT0pGzZsgQHB/Pee+9RuXJlypcvz5gxYyhZsqT5Cd/q1avTtm1b+vfvz4IFC0hOTmbw4MF07dqVkiVLAtC9e3cmTJhA3759GTFiBPv372f27NnMnDnTfN6hQ4fSvHlzpk+fTmBgIN9++y07duxIs62L/Du2VvfKXrvIrLBp1LtwBICffFowts1Arjvnt9pHYU9ERCRzcnTLlg0bNtCyZct0x3v16sXixYsxmUyMGzeOTz75hNjYWJo0acK8efOoUqWKufbq1asMHjyYFStWYGdnR6dOnfjwww8pUKCAuWbv3r0MGjSI7du3U6RIEYYMGcKIESPSnHPZsmWMHj2aU6dOUblyZaZMmUL79u0z/Fm0ZYtlv+64wIDvd1tuNJnovH8t49d8TIGk28Q75WN0wGv84tPC5pgKfCIiIpnPHrlmn75HnUJferZW99xvX2fi6jkEHtkEwNbSNQgJGs5592JW+/ww4EnqVyiU5fMUERF5FGU2e+TaBznk0WYr8Pmd/osZYTMoceMKyXb2zGzSgwW+nTDa2Vvto9U9ERGRf0ehT7JUpw/C2Rlruc0pJZnhv39J/20/YYeJE4VKMrTDG+wrUdnqeG0r27Ggb7vsmayIiEgeotAnWcbW6l7Fy2f5cMVUalw6AcCSOm159+l+3HZysdpHq3siIiJZR6FP/rWvfjvG6FVHLTeaTLy8O5y31y/EJSWJq65ujGj3OpGVG1sdzxU4pMAnIiKSpRT65F+xtbpX5OY1pqyczdMndgDwW/l6hLYPJqaAp9U+Wt0TERHJHgp98sBsBb6n/97GlFWzKXIrjkR7Rya1eIXP6wdhMljfD1yBT0REJPso9EmmdZ8ZzuZoy20uyQm8vX4hL+9eCcChot4EdwjlSFFvq+MNblqS0MAnsmGmIiIicpdCn2SKrdW9GtHHmf3LVCpdPQfAZw2eZUrzXiQ6OFnto9U9ERGRh0OhTzJk4brDvPPrcYttBpORAdt+ZPjGr3AyphBdwJPQ9sH8Xr6e1fGqOULEuwp8IiIiD4tCn9yXrdW9EvExTA+fyZNn9gKwunJjRrYdwrV87lb7aHVPRETk4VPoE6tuJKRQc/xqq+2Bh35n4uo5uCfe5JajMxNaDWBp7TZgMFjto8AnIiKSMxT6xCJbq3sFEm8xfs3HdN6/FoA9JSoTHBTKKc9SVvt81bMRTXyKZvk8RUREJGMU+iQdW4Gv3rlDzAqbRtm4aFINdsxr3IXZT3Ujxd76r5JW90RERHKeQp+Yzft1P1PWnbbYZm9MZcjmbxmyeSn2JiPn3IoxLCiE7WVqWh3Pvzx8+h8FPhERkdxAoU8A26t7Za9dZFbYNOpdOALATz4tGNtmINed81vto9U9ERGR3EWhL4/bfPgy3RdvtdxoMtF5/1rGr/mYAkm3iXfOz+g2r/GLT3ObYyrwiYiI5D4KfXmYrdU999vXmbh6DoFHNgGwtUxNQgJDOO9ezGqfjaEtKVskX5bPU0RERP49hb48ylbg8zv9FzPCZlDixhWS7eyZ2aQHC3w7YbSzt9pHq3siIiK5m0JfHvOfT1ey+m+TxTanlGRCN37BgO0/AXDcsxTBQaHsK1HZ6nh9GhdlbMdG2TJXERERyToKfXmIrdW9SpfP8OGKqfhcOgnAkjpteffpftx2crHaR6t7IiIijw6FvjwgbOtZBv+013KjyUTPXWG8tWERLilJXHF1Y2S714ms3NjmmAp8IiIijxaFvsecrdW9IjevMWXlbJ4+sQOA38rXI7R9MDEFPK32OfpeO5wc7LJ8niIiIpK9FPoeY7YC39N/b2PKqtkUuRVHor0jk1q8wuf1gzAZrAc6re6JiIg8uhT6HkPdZoSz5ZLlNpfkBN5ev5CXd68E4FBRb4Z2COVoUW+r4816tiYd/cplw0xFRETkYVHoe8zYWt2rEfU3s1dMo9LVcwB82uBZpjbvRaKDk9U+Wt0TERF5PCj0PSbe+3k7n1pZ3rMzptJ/+08M3/gVTsYUogt4Mrz9MP4o/4TV8dpUhE/6K/CJiIg8LhT6HgO2VvdKxMcwI3wGfmf2ARBRxY+RbYcQ6+pmtY9W90RERB4/Cn2PsLhbydR551er7UGHNvL+6rm4J97klqMz41v9h+9qtwaDwWofBT4REZHHk0LfI8rW6l6BxFtMiJxPpwPrAdhTojLBQaGc8ixltc/q15tRtWTBLJ+niIiI5A4KfY8gW4Gv3rlDzAqbRtm4aFINdsxt3IUPn+pGir31/9Ra3RMREXn8KfQ9Qsb++CdfbLtisc0hNYUhm79l8JbvsDcZOedWjOAOw9lRuobV8YKblya4XZ3smq6IiIjkIgp9jwhbq3vlrl1g1orpPHHxCAA/1mjJuNavct05v9U+Wt0TERHJWxT6HgFWA5/JRJd9axi/5mPyJycQ75yft9u8xgqf5jbHU+ATERHJe/QS1X+YO3cu3t7euLi44Ovry7Zt23J0PtYCn8fteOYtn8TUVbPJn5zA1jI1advnI5uB76+xbRT4RERE8iiFvnssXbqUkJAQxo0bx65du6hTpw4BAQFcumTlnWbZzFrge/LUHiIWDqb90c0k29kzuXkvunV9nwtuxayOdeqDQNzzOWbXVEVERCSXM5hMJlNOTyK38PX1pWHDhsyZMwcAo9FImTJlGDJkCCNHjrTZNz4+Hnd3d+IuXMDNzfrGx5lRfUxEmu+dUpMZ+scS+uxaAcCJQiV4o10wB4tXtDrGC/U8mPBc4yyZj4iIiOQe8fHxuJcsSVxcXIayh0Lf/0tKSiJfvnx8//33dOzY0Xy8V69exMbG8vPPP6epT0xMJDEx0fx9fHw8ZcqUIQ7ImsgnIiIiYl084A4ZDn26vPv/Ll++TGpqKsWLF09zvHjx4kRFRaWrnzRpEu7u7uavMmXKPKypioiIiGSant59QKNGjSIkJMT8/d2VPi5cgGy6vNtp3xp+q1Cfy/kLWe1z6N22WXJuERERyeXi46FkyQyXK/T9vyJFimBvb090dHSa49HR0Xh5eaWrd3Z2xtnZOf1A+fPf+coCt51c0nz/Vf0gm/V6MldERCQPSU3NVLku7/4/Jycn6tevz9q1a83HjEYja9euxc/PL0fmlNEQ9+bT5RT4RERExCat9N0jJCSEXr160aBBAxo1asSsWbO4efMmr7zySo7N6dQHgTbfxqGwJyIiIhmh0HePF198kZiYGMaOHUtUVBR169YlIiIi3cMdD5u14KfAJyIiIhmlLVuyiHmfvgw+Ni0iIiLyb2Q2e+iePhEREZE8QKFPREREJA9Q6BMRERHJAxT6RERERPIAhT4RERGRPEChT0RERCQPUOgTERERyQMU+uT/2rv3qCbvMw7g33BJCEIIiiQEuVkRvIsy0yjW9pgjOrZp106LtEVltXZYobZWu06htRWKzussTm1BjxfETZxVRBkXnS1iRVARh7bS4lGBWcSgWAXy7A8P7+GVi1jBSPJ8zsmxeX9P8j7P+4vx6Zu8vzDGGGPMAnDTxxhjjDFmAbjpY4wxxhizAPzbu52k6dfsDAaDiTNhjDHGmCVo6jk6+ou63PR1ktraWgCAh4eHiTNhjDHGmCWpra2Fk5PTQ+Mk1NH2kLXLaDTi6tWrcHR0hEQi6ZJ9GAwGeHh44PLlyx36YWVzwXVbVt2A5dbOdXPdlsJSa+/suokItbW10Gg0sLJ6+Df2+ExfJ7GyskKfPn2eyL4UCoVF/SVpwnVbHkutneu2LJZaN2C5tXdm3R05w9eEL+RgjDHGGLMA3PQxxhhjjFkAbvq6EZlMhpiYGMhkMlOn8kRx3ZZVN2C5tXPdXLelsNTaTV03X8jBGGOMMWYB+EwfY4wxxpgF4KaPMcYYY8wCcNPHGGOMMWYBuOljjDHGGLMA3PR1E+vXr4e3tzfs7Oyg1Wpx4sQJU6fUrqNHj+K3v/0tNBoNJBIJ9u7dKxonIixZsgRubm6Qy+XQ6/W4ePGiKKa6uhphYWFQKBRQKpWIiIjArVu3RDFnzpzB2LFjYWdnBw8PDyQkJLTIZffu3fD394ednR2GDBmC9PT0Tq8XAOLi4vCrX/0Kjo6OcHV1xZQpU1BaWiqK+fnnnxEZGYlevXrBwcEBL730EiorK0Ux5eXlCAkJgb29PVxdXbFgwQI0NDSIYnJzczFixAjIZDL069cPycnJLfJ5kq+ZxMREDB06VFhwVKfT4eDBg8K4udb9oPj4eEgkEkRHRwvbzLH22NhYSCQS0c3f39+sa25y5coVvPrqq+jVqxfkcjmGDBmCkydPCuPm+N4GAN7e3i3mXCKRIDIyEoD5znljYyMWL14MHx8fyOVyPPPMM1i6dKnot2671ZwTe+qlpKSQVCqlL7/8ks6dO0dvvPEGKZVKqqysNHVqbUpPT6cPP/yQ9uzZQwAoLS1NNB4fH09OTk60d+9eOn36NP3ud78jHx8funPnjhAzceJEGjZsGB0/fpz+85//UL9+/Sg0NFQYv3nzJqlUKgoLC6Pi4mLauXMnyeVy+vvf/y7EfP3112RtbU0JCQlUUlJCf/nLX8jW1pbOnj3b6TUHBwdTUlISFRcXU1FREf36178mT09PunXrlhAzZ84c8vDwoKysLDp58iQ9++yzNHr0aGG8oaGBBg8eTHq9ngoLCyk9PZ1cXFzogw8+EGIuXbpE9vb2NH/+fCopKaF169aRtbU1ZWRkCDFP+jWzb98+OnDgAF24cIFKS0vpz3/+M9na2lJxcbFZ193ciRMnyNvbm4YOHUpRUVHCdnOsPSYmhgYNGkTXrl0Tbv/73//MumYiourqavLy8qIZM2ZQfn4+Xbp0iQ4dOkTfffedEGOO721ERFVVVaL5zszMJACUk5NDROY7559++in16tWL9u/fT2VlZbR7925ycHCgNWvWCDHdac656esGRo0aRZGRkcL9xsZG0mg0FBcXZ8KsOu7Bps9oNJJarably5cL22pqakgmk9HOnTuJiKikpIQA0LfffivEHDx4kCQSCV25coWIiD7//HNydnamu3fvCjELFy4kPz8/4f7UqVMpJCRElI9Wq6U333yzU2tsTVVVFQGgI0eOENH9Gm1tbWn37t1CzPnz5wkA5eXlEdH9ZtnKyooqKiqEmMTERFIoFEKd77//Pg0aNEi0r2nTplFwcLBw/2l4zTg7O9PmzZstou7a2lry9fWlzMxMGjdunND0mWvtMTExNGzYsFbHzLVmovvvL0FBQW2OW8p7GxFRVFQUPfPMM2Q0Gs16zkNCQmjWrFmibb///e8pLCyMiLrfnPPHu0+5e/fuoaCgAHq9XthmZWUFvV6PvLw8E2b2y5WVlaGiokJUk5OTE7RarVBTXl4elEolAgMDhRi9Xg8rKyvk5+cLMc899xykUqkQExwcjNLSUty4cUOIab6fppgncexu3rwJAOjZsycAoKCgAPX19aJ8/P394enpKap7yJAhUKlUonwNBgPOnTsnxLRXk6lfM42NjUhJScHt27eh0+ksou7IyEiEhIS0yM+ca7948SI0Gg369u2LsLAwlJeXm33N+/btQ2BgIP7whz/A1dUVAQEB2LRpkzBuKe9t9+7dw7Zt2zBr1ixIJBKznvPRo0cjKysLFy5cAACcPn0ax44dw6RJkwB0vznnpu8pd/36dTQ2Nor+ogCASqVCRUWFibJ6PE15t1dTRUUFXF1dReM2Njbo2bOnKKa152i+j7ZiuvrYGY1GREdHY8yYMRg8eLCQi1QqhVKpbDOfx6nJYDDgzp07JnvNnD17Fg4ODpDJZJgzZw7S0tIwcOBAs687JSUFp06dQlxcXIsxc61dq9UiOTkZGRkZSExMRFlZGcaOHYva2lqzrRkALl26hMTERPj6+uLQoUN46623MG/ePGzZskWUuzm/twHA3r17UVNTgxkzZgi5mOucL1q0CK+88gr8/f1ha2uLgIAAREdHIywsTJR7d5lzmw5HMsY6LDIyEsXFxTh27JipU3li/Pz8UFRUhJs3b+If//gHwsPDceTIEVOn1aUuX76MqKgoZGZmws7OztTpPDFNZzkAYOjQodBqtfDy8kJqairkcrkJM+taRqMRgYGBWLZsGQAgICAAxcXF2LBhA8LDw02c3ZPzxRdfYNKkSdBoNKZOpculpqZi+/bt2LFjBwYNGoSioiJER0dDo9F0yznnM31PORcXF1hbW7e4CqqyshJqtdpEWT2eprzbq0mtVqOqqko03tDQgOrqalFMa8/RfB9txXTlsZs7dy7279+PnJwc9OnTR9iuVqtx79491NTUtJnP49SkUCggl8tN9pqRSqXo168fRo4cibi4OAwbNgxr1qwx67oLCgpQVVWFESNGwMbGBjY2Njhy5AjWrl0LGxsbqFQqs629OaVSif79++O7774z6/l2c3PDwIEDRdsGDBggfLRt7u9tAPDjjz/i3//+N/74xz8K28x5zhcsWCCc7RsyZAhee+01vPPOO8KZ/e4259z0PeWkUilGjhyJrKwsYZvRaERWVhZ0Op0JM/vlfHx8oFarRTUZDAbk5+cLNel0OtTU1KCgoECIyc7OhtFohFarFWKOHj2K+vp6ISYzMxN+fn5wdnYWYprvpymmK44dEWHu3LlIS0tDdnY2fHx8ROMjR46Era2tKJ/S0lKUl5eL6j579qzoDSIzMxMKhUL4x+ZhNT0trxmj0Yi7d++add3jx4/H2bNnUVRUJNwCAwMRFhYm/Le51t7crVu38P3338PNzc2s53vMmDEtlmG6cOECvLy8AJjve1tzSUlJcHV1RUhIiLDNnOe8rq4OVlbiVsna2hpGoxFAN5zzDl/ywUwmJSWFZDIZJScnU0lJCc2ePZuUSqXoKqinTW1tLRUWFlJhYSEBoJUrV1JhYSH9+OOPRHT/EnelUkn/+te/6MyZMzR58uRWL3EPCAig/Px8OnbsGPn6+oouca+pqSGVSkWvvfYaFRcXU0pKCtnb27e4xN3GxoZWrFhB58+fp5iYmC5b1uCtt94iJycnys3NFS1tUFdXJ8TMmTOHPD09KTs7m06ePEk6nY50Op0w3rSswYQJE6ioqIgyMjKod+/erS5rsGDBAjp//jytX7++1WUNnuRrZtGiRXTkyBEqKyujM2fO0KJFi0gikdDhw4fNuu7WNL96l8g8a3/33XcpNzeXysrK6Ouvvya9Xk8uLi5UVVVltjUT3V+Wx8bGhj799FO6ePEibd++nezt7Wnbtm1CjDm+tzVpbGwkT09PWrhwYYsxc53z8PBwcnd3F5Zs2bNnD7m4uND7778vxHSnOeemr5tYt24deXp6klQqpVGjRtHx48dNnVK7cnJyCECLW3h4OBHdv8x98eLFpFKpSCaT0fjx46m0tFT0HD/99BOFhoaSg4MDKRQKmjlzJtXW1opiTp8+TUFBQSSTycjd3Z3i4+Nb5JKamkr9+/cnqVRKgwYNogMHDnRJza3VC4CSkpKEmDt37tCf/vQncnZ2Jnt7e3rxxRfp2rVrouf54YcfaNKkSSSXy8nFxYXeffddqq+vF8Xk5OTQ8OHDSSqVUt++fUX7aPIkXzOzZs0iLy8vkkql1Lt3bxo/frzQ8BGZb92tebDpM8fap02bRm5ubiSVSsnd3Z2mTZsmWqvOHGtu8tVXX9HgwYNJJpORv78/bdy4UTRuju9tTQ4dOkQAWtRDZL5zbjAYKCoqijw9PcnOzo769u1LH374oWhple405xKiZstKM8YYY4wxs8Tf6WOMMcYYswDc9DHGGGOMWQBu+hhjjDHGLAA3fYwxxhhjFoCbPsYYY4wxC8BNH2OMMcaYBeCmjzHGGGPMAnDTxxhjjDFmAbjpY8zCPf/884iOjm43RiKRYO/evU8kn7Z0JM+Hyc3NhUQigUQiwZQpUzolL9a9xcbGCq+J1atXmzodxroUN32MsS5BRJg0adJT0TA+qLS0FMnJyaJt69evh7e3N+zs7KDVanHixImHPs/u3bvh7+8POzs7DBkyBOnp6aJxIsKSJUvg5uYGuVwOvV6PixcvimKqq6sRFhYGhUIBpVKJiIgI3Lp167HqS05OFhqZB2/Nf/B+/fr1GDBgAORyOfz8/LB161bR82zatAljx46Fs7MznJ2dodfrWxyXPXv2YMKECejVqxckEgmKiopa1Pf222/Dz88Pcrkcnp6emDdvHm7evNluDZ117M6cOYOxY8fCzs4OHh4eSEhIEI2/9957uHbtGvr06dNuPoyZA276GGNdYvXq1ZBIJKZOo1Wurq5QKpXC/V27dmH+/PmIiYnBqVOnMGzYMAQHB4sapAd98803CA0NRUREBAoLCzFlyhRMmTIFxcXFQkxCQgLWrl2LDRs2ID8/Hz169EBwcDB+/vlnISYsLAznzp1DZmYm9u/fj6NHj2L27NmPVd+0adNw7do10S04OBjjxo2Dq6srACAxMREffPABYmNjce7cOXz00UeIjIzEV199JTxPbm4uQkNDkZOTg7y8PHh4eGDChAm4cuWKEHP79m0EBQXhs88+azWXq1ev4urVq1ixYgWKi4uRnJyMjIwMREREtFtDZxw7g8GACRMmwMvLCwUFBVi+fDliY2OxceNGIcbBwQFqtRrW1taPdpAZ644e6Zd6GWNmZ9y4cfT222/TggULyNnZmVQqFcXExIhiAFBaWhoREd29e5ciIyNJrVaTTCYjT09PWrZsmSi+sLCQ3N3d6dq1a6LHEt3/QXUAlJGRQcOHDyc7Ozt64YUXqLKyktLT08nf358cHR0pNDSUbt++LcozKirqsWpt2veNGzdE20eNGkWRkZHC/cbGRtJoNBQXF9fmc02dOpVCQkJE27RaLb355ptEdP9H2NVqNS1fvlwYr6mpIZlMRjt37iQiopKSEgJA3377rRBz8OBBkkgkdOXKlV9c54OqqqrI1taWtm7dKmzT6XT03nvvieLmz59PY8aMafN5GhoayNHRkbZs2dJirKysjABQYWHhQ/NJTU0lqVRK9fX1rY531rH7/PPPydnZme7evSvELFy4kPz8/Frs08vLi1atWvXQ3BnrzvhMH2MMW7ZsQY8ePZCfn4+EhAR8/PHHyMzMbDV27dq12LdvH1JTU1FaWort27fD29tbGK+rq8P06dOxfv16qNXqNvcZGxuLv/3tb/jmm29w+fJlTJ06FatXr8aOHTtw4MABHD58GOvWrevsUlu4d+8eCgoKoNfrhW1WVlbQ6/XIy8tr83F5eXmixwBAcHCw8JiysjJUVFSIYpycnKDVaoWYvLw8KJVKBAYGCjF6vR5WVlbIz8/vlPoAYOvWrbC3t8fLL78sbLt79y7s7OxEcXK5HCdOnEB9fX2rz1NXV4f6+nr07NnzsfK5efMmFAoFbGxsWh3vrGOXl5eH5557DlKpVIgJDg5GaWkpbty48Vg1MNYdcdPHGMPQoUMRExMDX19fvP766wgMDERWVlarseXl5fD19UVQUBC8vLwQFBSE0NBQYfydd97B6NGjMXny5Hb3+cknn2DMmDEICAhAREQEjhw5gsTERAQEBGDs2LF4+eWXkZOT06l1tub69etobGyESqUSbVepVKioqGjzcRUVFe0+punPh8U0fdzaxMbGBj179mx334/qiy++wPTp0yGXy4VtwcHB2Lx5MwoKCkBEOHnyJDZv3oz6+npcv3691edZuHAhNBpNi2b3UVy/fh1Lly5t9yPszjp2bc1R830wZkm46WOMYejQoaL7bm5ubX6fbcaMGSgqKoKfnx/mzZuHw4cPC2P79u1DdnZ2h66CbL5PlUoFe3t79O3bV7Stve/UNVdeXg4HBwfhtmzZsg49zhLk5eXh/PnzLb5Dt3jxYkyaNAnPPvssbG1tMXnyZISHhwO4f6bzQfHx8UhJSUFaWlqLM4QdZTAYEBISgoEDByI2NvYXPQdj7Jfjpo8xBltbW9F9iUQCo9HYauyIESNQVlaGpUuX4s6dO5g6darwsWF2dja+//57KJVK2NjYCB/fvfTSS3j++efb3KdEInmkHB6k0WhQVFQk3ObMmdOhxwGAi4sLrK2tUVlZKdpeWVnZ7sfTarW63cc0/fmwmAcb24aGBlRXV7e770exefNmDB8+HCNHjhRtl8vl+PLLL1FXV4cffvgB5eXl8Pb2hqOjI3r37i2KXbFiBeLj43H48OEW/4PQUbW1tZg4cSIcHR2RlpbWYr6b66xj19YcNd8HY5aEmz7G2CNTKBSYNm0aNm3ahF27duGf//wnqqursWjRIpw5c0bUgAHAqlWrkJSU1GX52NjYoF+/fsLtUb5zJpVKMXLkSNHH2UajEVlZWdDpdG0+TqfTtfgIPDMzU3iMj48P1Gq1KMZgMCA/P1+I0el0qKmpQUFBgRCTnZ0No9EIrVbb4RracuvWLaSmprZ7paytrS369OkDa2trpKSk4De/+Y3oTF9CQgKWLl2KjIwM0ffnHkXTVbRSqRT79u176JnCzjp2Op0OR48eFX1HMTMzE35+fnB2dv5FtTDWnbX+LVrGGGvDypUr4ebmhoCAAFhZWWH37t1Qq9VQKpWwsrJq9QyKp6cnfHx8TJBtx8yfPx/h4eEIDAzEqFGjsHr1aty+fRszZ84UYl5//XW4u7sjLi4OABAVFYVx48bhr3/9K0JCQpCSkoKTJ08Ky4FIJBJER0fjk08+ga+vL3x8fLB48WJoNBphYegBAwZg4sSJeOONN7BhwwbU19dj7ty5eOWVV6DRaB67rl27dqGhoQGvvvpqi7ELFy7gxIkT0Gq1uHHjBlauXIni4mJs2bJFiPnss8+wZMkS7NixA97e3sL34Jo+Rgfur5VXXl6Oq1evAri/BiJw/0yaWq0WGr66ujps27YNBoMBBoMBANC7d29hqRR/f3/ExcXhxRdf7LRjN336dHz00UeIiIjAwoULUVxcjDVr1mDVqlWPfWwZ65ZMffkwY8y0WlsKZfLkyRQeHi7cR7NlVzZu3EjDhw+nHj16kEKhoPHjx9OpU6fafH60sWRL82VTkpKSyMnJSfS4mJgYGjZsWLt5Pqq2lmwhIlq3bh15enqSVCqlUaNG0fHjx0Xj48aNEx0TovtLj/Tv35+kUikNGjSIDhw4IBo3Go20ePFiUqlUJJPJaPz48VRaWiqK+emnnyg0NJQcHBxIoVDQzJkzqba2VhQDgJKSkh65Xp1OR9OnT291rKSkhIYPH05yuZwUCgVNnjyZ/vvf/4pivLy8CECLW/MlfZKSktqNaTrmrd3KysrarLGzjt3p06cpKCiIZDIZubu7U3x8fKvHg5dsYZZAQkT0JJtMxhgzldzcXLzwwgu4ceOGaHHmp1lZWRn69++PkpIS+Pr6mjods+Xt7Y3o6OjH/qk/xp5m/J0+xpjF6dOnj2iZmadZeno6Zs+ezQ1fF1m2bBkcHBxQXl5u6lQY63J8po8xZjHu3Lkj/IRY089vMctWXV2N6upqAPe/Y+jk5GTijBjrOtz0McYYY4xZAP54lzHGGGPMAnDTxxhjjDFmAbjpY4wxxhizANz0McYYY4xZAG76GGOMMcYsADd9jDHGGGMWgJs+xhhjjDELwE0fY4wxxpgF+D/Up804ZHoNcgAAAABJRU5ErkJggg==", - "text/plain": [ - "<Figure size 700x500 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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atSvX/+ZX/vksnv3biIiIuJ8T/7Xp59+yogRI5g+fTrdunUD4Mcff6Rz5860aNGC0aNHExYWxtSpU6lbty579+7F398/un9UVBQtWrSgbt26jB07lkyZMgHw22+/ERYWRvfu3cmWLRs7d+7kq6++4sKFC/z222/R/du1a8fhw4d5//338ff359q1a6xevZpz587FuE6VKlUA2LJlC5UqVXrm5/XDDz9w9+5devTowcOHD5k4cSKNGzfm4MGD0e/T1atXc+rUKbp27UquXLk4fPgw33zzDYcPH2b79u2YTCZefPFFjh07xk8//cSECROi37t+fn4ADB06lCFDhlC7dm2GDRuGq6srO3bsYN26dTRv3jy6nhMnTvDSSy/x1ltv0blzZ2bMmEGXLl2oUqUKZcqUiVH7+++/j6+vL4MHD+bMmTMEBwfTs2dPfvnll+g2Q4YMYejQoTRt2pTu3btz9OhRpk6dyq5du9iyZUuMf1tu3rxJq1ateOWVV3jttdeiP3+AuXPnEhERwfvvv8+tW7cYM2YMHTp0oHHjxmzYsIGPPvqIEydO8NVXXxEUFMSMGTOe+bWXdMwQSUaffvqpARh3796Ncfz06dMGYGTLls24detW9PGFCxcagLF48eLoY4MHDzb++9adMGGCARjXr19/5vXnzZtnAMaOHTue2u7xNdq2bRvj+HvvvWcAxv79+6OPhYWFxerfokULo3DhwjGOlSlTxmjQoEGstoMGDTIAY8GCBbFes1qthmEYxvr16w3AKFWqlBEeHh79+sSJEw3AOHjwYPSxBg0aGIDxww8/RB8LDw83cuXKZbRr1y76WHBwsAEYc+bMiT4WERFh1KpVy/D09DRCQ0MNw/jf98bb29u4du2aza/TO++8E30sKirKyJcvn2EymYxRo0ZFH799+7bh4eFhdO7cOdbn+VjmzJmf+npS+O6772J9DR8DjB49ehiGYRj9+/c3zGazMWvWrOjX7969a2TJksXo1q1bjH5XrlwxfHx8Yhzv3LmzARgDBgyIdR1b76GRI0caJpPJOHv2rGEYj75+gPHll1/G6/NydXU1unfv/tQ2j7+3Hh4exoULF6KP79ixwwCMvn37PrXGn376yQCMTZs2RR/78ssvDcA4ffp0jLbHjx83zGaz8cILLxgWiyXGa4/f54ZhGAULFox1zmvXrhlubm5G//79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9qSjR48ya9asp7ZZsGABzZs3J1u2bJhMJvbt2/fM83777bfUq1cPX19ffH19adq0KTt37ozR5nGIePLPl19+GaPd0qVLqVGjBh4eHvj6+iY6EP43XD75Z9euXXH2++abb2jYsCHe3t6YTCbu3LkTq82xY8d47rnnyJ49O97e3tStW5f169c/8/P++eefo19/+eWXuXz5sjZ1F4mDApaIABAcHBznXoQpLUeOHGTJkuWpbe7fv0/dunUZPXp0vM+7YcMGOnbsyPr169m2bRv58+enefPmXLx4MbrN5cuXY/yZMWMGJpOJdu3aRbeZP38+r7/+Ol27dmX//v1s2bKFV1991e7P879q164d69pvv/02hQoVomrVqnH2CwsLo2XLlnz88cdxtgkMDCQqKop169axe/duKlSoQGBgYPTm3o/NnDkzxvX/Gxo9PDzIlSsXrq6uifo8RdItQ0TSlAYNGhjvv/++8cEHHxi+vr5Gzpw5jcGDB8doAxh//PGHYRiGER4ebvTo0cPIlSuX4ebmZhQoUMAYMWJEjPZ79+418ubNa1y+fDlGX8MwjPXr1xuAsWLFCqNixYqGu7u70ahRI+Pq1avGsmXLjJIlSxpeXl5Gx44djfv378eos3fv3on6XB9f+/bt2/Huc/r0aQMw9u7da/f1oqKiDC8vL2P27NlxtnnuueeMxo0bR38cGRlp5M2b1/juu+/svp49IiIiDD8/P2PYsGHxah/X1+769esGYGzatCn6WGhoqAEYq1evjj725PsgLo74PoukRxrBEkmDZs+eTebMmdmxYwdjxoxh2LBhrF692mbbSZMmsWjRIn799VeOHj3K3Llz8ff3j349LCyMV199la+//ppcuXLFec0hQ4YwefJktm7dyvnz5+nQoQPBwcHMmzePpUuXsmrVKr766itHf6rJKiwsjMjISLJmzWrz9atXr7J06VLeeuut6GN79uzh4sWLmM1mKlWqRO7cuWnVqhWHDh1yaG2LFi3i5s2bdO3aNVHnyZYtGyVKlOCHH37g/v37REVFMX36dHLkyEGVKlVitO3RowfZs2enevXqzJgxA8MwEnVtkYzEOaULEBH7lS9fnsGDBwNQrFgxJk+ezNq1a2nWrFmstufOnaNYsWLUrVsXk8lEwYIFY7zet29fateuzXPPPffUaw4fPpw6deoA8NZbbzFw4EBOnjxJ4cKFAXjppZdYv349H330kSM+xRTx0UcfkSdPHpo2bWrz9dmzZ+Pl5cWLL74YfezUqVPAowA6fvx4/P39GTduHA0bNuTYsWNxhjV7ff/997Ro0YJ8+fIl6jwmk4k1a9bw/PPP4+XlhdlsJkeOHKxYsQJfX9/odsOGDaNx48ZkypSJVatW8d5773Hv3j169eqV2E9FJEPQCJZIGlS+fPkYH+fOnZtr167ZbNulSxf27dtHiRIl6NWrF6tWrYp+bdGiRaxbt47g4GC7rpkzZ04yZcoUHa4eH4urhiedO3cOT0/P6D8jRoyIVz+AuXPnxui7efPmePd9mlGjRvHzzz/zxx9/4O7ubrPNjBkz6NSpU4zXrVYrAJ988gnt2rWjSpUqzJw5E5PJxG+//eaQ2i5cuMDKlStjjJwllGEY9OjRgxw5crB582Z27tzJ888/T5s2bbh8+XJ0u88++4w6depQqVIlPvroIz788MNYE/tFJG4awRJJg1xcXGJ8bDKZon/RP6ly5cqcPn2a5cuXs2bNGjp06EDTpk35/fffWbduHSdPnow1gbxdu3bUq1ePDRs22LymyWSyq4Yn5cmTJ8ZTfvaM8rRt25YaNWpEf5w3b954943L2LFjGTVqFGvWrIkVXh/bvHkzR48e5ZdffolxPHfu3ACULl06+pibmxuFCxfm3Llzia4NHk02z5YtG23btk30udatW8eSJUu4ffs23t7eAEyZMoXVq1cze/ZsBgwYYLNfjRo1+PzzzwkPD8fNzS3RdYikdwpYIhmAt7c3L7/8Mi+//DIvvfQSLVu25NatWwwYMIC33347Rtty5coxYcIE2rRpk2T1ODs7U7Ro0QT19fLywsvLy2G1jBkzhi+++IKVK1c+9em877//nipVqlChQoUYx6tUqYKbmxtHjx6lbt26AERGRnLmzJlYt2MTwjAMZs6cyRtvvBEr1CZEWFgYAGZzzBsYZrP5qQF53759+Pr6KlyJxJMClkg6N378eHLnzk2lSpUwm8389ttv5MqViyxZsmA2m21ObC9QoACFChVKgWoT7tatW5w7d45Lly4Bj9bOAsiVK1f05/jGG2+QN29eRo4cCcDo0aMZNGgQ8+bNw9/fP3qZgse3Hx8LDQ3lt99+Y9y4cbGu6+3tzbvvvsvgwYPJnz8/BQsWjL6V1r59+0R/XuvWreP06dOxgjDAxYsXadKkCT/88APVq1cH4MqVK1y5coUTJ04AcPDgQby8vChQoABZs2alVq1a+Pr60rlzZwYNGoSHhwfffvstp0+fJiAgAIDFixdz9epVatasibu7O6tXr2bEiBEEBQUl+vMRySg0B0sknfPy8mLMmDFUrVqVatWqcebMGZYtWxZrBCOtW7RoEZUqVYoOCa+88gqVKlVi2rRp0W3OnTsXY57R1KlTiYiI4KWXXiJ37tzRf8aOHRvj3D///DOGYdCxY0eb1/7yyy955ZVXeP3116lWrRpnz55l3bp1MSaN+/v7M2TIELs/r++//57atWtTsmTJWK9FRkZy9OjR6FEpgGnTplGpUiW6desGQP369alUqRKLFi0CIHv27KxYsYJ79+7RuHFjqlatyl9//cXChQujR+dcXFz4+uuvqVWrFhUrVmT69OmMHz8++sEKEXk2k6HnbkUkldqwYQONGjXi9u3bz1xoNDULCwsjW7ZsLF++nIYNG6Z0OQ7VsGFDKlasGK8HJUQykvT1X1gRSZfy5csX5+hRWrB+/XoaN26crsLV46c5HfUUp0h6oxEsEUm1Hjx4EL1tjaen51MXQpXkdffuXa5evQpAlixZyJ49ewpXJJK6KGCJiIiIOJhuEYqIiIg4mAKWiIiIiIMpYImIiIg4mAKWiIiIiIMpYImIiIg4mAKWiIiIiIMpYImIiIg4mAKWiIiIiIP9P0A++vKVDCpaAAAAAElFTkSuQmCC", - "text/plain": [ - "<Figure size 700x500 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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168XrK2thZSUlGxjPD09hfr16+c4jr29vTBr1iy5zi0Pef4cFi9eLFhZWck1/p49ewQNDQ0hNTU1077srt/d3V346aefpLatWrVKqFKliiAWi6W2K+LvAlFJwNupRIRt27ahbNmyuHHjBhYvXox58+bh1KlTWcauWrUKhw8fxp49exAUFIQdO3bA0tJSsj8xMRG9e/fG2rVrYWJiku05586dizVr1uDq1at48+YNevbsiRUrVmDnzp04evQoTp48idWrVyv6UmUiFotx9OhR1KhRA05OTjAyMoK9vX2ut4UPHz6M5s2bY/To0TA2NkbdunWxYMECpKenS8U9f/4cpqamsLa2Rp8+faRu0b579w43btyAkZERWrRoAWNjYzg4OODy5csFcam5iomJgYGBgdzH6OrqZpphzElycnKmWU5tbW28ffsWr169kuv8RKUFizgigq2tLTw9PVG9enX0798fjRs3xpkzZ7KMff36NapXr45WrVrBwsICrVq1gru7u2S/h4cHWrRogR9++CHHc86fPx8tW7ZEw4YNMWTIEFy4cAHr169Hw4YN0bp1a/z00084d+6cQq9TVu/evUN8fDwWLlwIZ2dnnDx5Et27d8ePP/6ICxcuZHvcixcvsG/fPqSnp+PYsWOYPXs2li1bhvnz50ti7O3tsXXrVvj7+2P9+vUIDQ1F69atERcXJxkDyChyhw0bBn9/f9jZ2aF9+/Z4/vx5wV74d4KDg7F69WqMGDFC5mM+fPiA33//HcOHD5frXE5OTti/fz/OnDkDsViMZ8+eYdmyZQCAiIgIucYiKi1YxBERbG1tpT5XqlQJ7969yzJ24MCBuHfvHmrWrIlx48bh5MmTkn2HDx/G2bNnsWLFCrnOaWxsjDJlysDa2lpqW3Y5fO/169coV66c5GfBggUyHQcAO3bskDr20qVLEIvFAIAffvgBHh4eaNCgAaZNmwY3Nzds2LAh27HEYjGMjIywceNGNGrUCL169cLMmTOljuncuTN+/vln2NrawsnJCceOHUN0dDT27NkjGQMARowYgUGDBqFhw4bw8fFBzZo1sWXLFpmvK7/CwsLg7OyMn3/+GcOGDZPpmNjYWLi6uqJ27dqYO3euXOcbNmwYxowZAzc3N2hoaKBZs2b45ZdfACDfzwISlVRc2EBEUFdXl/osEokkxcT37OzsEBoaiuPHj+P06dPo2bMnOnTogH379uHs2bMICQnJ9CB/jx490Lp1a5w/fz7Lc4pEIrly+J6pqSnu3bsn+SzP7b+uXbvC3t5e8rly5cpQVVWFmpoaateuLRVbq1atHG9rVqpUCerq6lBVVZU6JjIyEikpKVk+kK+vr48aNWogODhYMgaALM+d28pYRQkPD0fbtm3RokULbNy4UaZj4uLi4OzsDB0dHRw4cCDT95kbkUiERYsWYcGCBYiMjIShoaFkNvjb4p6I/odFHBHJTVdXF7169UKvXr3w008/wdnZGZ8+fcK0adMwdOhQqdh69erBx8cHXbp0KbB81NTUUK1atTwdq6OjAx0dnUzbmzRpgqCgIKltz549g4WFRbZjtWzZEjt37oRYLJbMHj179gyVKlXKdkVlfHw8QkJC0K9fPwCApaUlTE1Nszx3586d5bq2vAgLC0Pbtm3RqFEj+Pr6yjQLFhsbCycnJ2hqauLw4cM5ruDNjaqqKipXrgwA+Pfff9G8eXMYGhrmeTyikoxFHBHJZfny5ahUqRIaNmwIFRUV7N27FyYmJtDX14eKikqWixnMzc1hZWVVBNnm3ZQpU9CrVy+0adMGbdu2hb+/P44cOSI1m9i/f39UrlwZ3t7eAIBRo0ZhzZo1GD9+PMaOHYvnz59jwYIFGDdunOSYyZMno0uXLrCwsEB4eDg8PT2hqqoqea5QJBJhypQp8PT0RP369dGgQQNs27YNT58+zdSyQ16RkZGIjIyUzPo9fPgQOjo6MDc3h4GBAcLCwuDo6AgLCwssXboU79+/lxz79XsNCwtD+/bt8ffff6Np06aIjY1Fp06dkJiYiO3btyM2NhaxsbEAAENDQ8msZHBwMOLj4xEZGYkvX75IZk5r164NDQ0NfPjwAfv27YOjoyOSkpLg6+uLvXv35vgMIlFpxyKOiOSio6ODxYsX4/nz51BVVUWTJk1w7NixEvfcUvfu3bFhwwZ4e3tj3LhxqFmzJv777z+0atVKEvP69Wup6zYzM8OJEyfg4eEBW1tbVK5cGePHj8fUqVMlMW/fvoW7uzs+fvwIQ0NDtGrVCtevX5eabZowYQKSkpLg4eGBT58+oX79+jh16hSqVq0qiXF0dISlpaVMTYu/2rBhA7y8vCSf27RpAwDw9fXFwIEDcerUKQQHByM4OBhVqlSROlYQBABAamoqgoKCkJiYCAAICAjAjRs3ACDTbGhoaKhk5fLQoUOlCrKGDRtmitm2bRsmT54MQRDQvHlznD9/Hk2bNpX5+ohKG5Hw9V8mEVEJd/78ebRt2xafP3/OtdlvcWdhYQEvLy8MHDiwqFMpdI6OjmjQoIFMC2iISrKS9Z/OREQyqFKlilRbFGXz6NEj6OnpoX///kWdSqH6upL40qVLRZ0KUbHAmTgiKjW+fPmCsLAwAEC5cuVybEZMxU9cXByioqIAZKzqrVixYhFnRFS0WMQRERERKSHeTiUiIiJSQiziiIiIiJQQizgiIiIiJcQijoiI/q/dOiABAAAAEPT/dTsCXSEwJHEAAEMSBwAwJHEAAEMSBwAwFNqLhGQ+FhSRAAAAAElFTkSuQmCC", - "text/plain": [ - "<Figure size 700x500 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "idx = 0\n", "\n", @@ -1098,1883 +661,9 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "****** Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2023.2.1 (64-bit)\n", - " **** SW Build 4070103 on Dec 13 2023\n", - " **** IP Build 4080415 on Thu Dec 14 21:01:57 MST 2023\n", - " **** SharedData Build 4077621 on Mon Dec 11 00:23:44 MST 2023\n", - " ** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.\n", - " ** Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.\n", - "\n", - "source /data/Xilinx/Vitis_HLS/2023.2/scripts/vitis_hls/hls.tcl -notrace\n", - "INFO: [HLS 200-10] Running '/data/Xilinx/Vitis_HLS/2023.2/bin/unwrapped/lnx64.o/vitis_hls'\n", - "INFO: [HLS 200-10] For user 'jcampos' on host 'correlator7.fnal.gov' (Linux_x86_64 version 5.14.0-427.35.1.el9_4.x86_64) on Sun Oct 06 16:32:00 EDT 2024\n", - "INFO: [HLS 200-10] On os \"AlmaLinux release 9.4 (Shamrock Pampas Cat)\"\n", - "INFO: [HLS 200-10] In directory '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4'\n", - "INFO: [HLS 200-2053] The vitis_hls executable is being deprecated. Consider using vitis-run --mode hls --tcl\n", - "Sourcing Tcl script 'build_prj.tcl'\n", - "INFO: [HLS 200-1510] Running: open_project NN_prj \n", - "INFO: [HLS 200-10] Opening project '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj'.\n", - "INFO: [HLS 200-1510] Running: set_top NN \n", - "INFO: [HLS 200-1510] Running: add_files firmware/NN.cpp -cflags -std=c++0x \n", - "INFO: [HLS 200-10] Adding design file 'firmware/NN.cpp' to the project\n", - "INFO: [HLS 200-1510] Running: add_files -tb NN_test.cpp -cflags -std=c++0x \n", - "INFO: [HLS 200-10] Adding test bench file 'NN_test.cpp' to the project\n", - "INFO: [HLS 200-1510] Running: add_files -tb firmware/weights \n", - "INFO: [HLS 200-10] Adding test bench file 'firmware/weights' to the project\n", - "INFO: [HLS 200-1510] Running: add_files -tb tb_data \n", - "INFO: [HLS 200-10] Adding test bench file 'tb_data' to the project\n", - "INFO: [HLS 200-1510] Running: open_solution solution1 \n", - "INFO: [HLS 200-10] Opening solution '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1'.\n", - "INFO: [SYN 201-201] Setting up clock 'default' with a period of 3.225ns.\n", - "INFO: [SYN 201-201] Setting up clock 'default' with an uncertainty of 0.871ns.\n", - "INFO: [HLS 200-1611] Setting target device to 'xczu49dr-ffvf1760-2-e'\n", - "INFO: [HLS 200-1505] Using flow_target 'vivado'\n", - "Resolution: For help on HLS 200-1505 see docs.xilinx.com/access/sources/dita/topic?Doc_Version=2023.2%20English&url=ug1448-hls-guidance&resourceid=200-1505.html\n", - "INFO: [HLS 200-1464] Running solution command: config_compile -name_max_length=80\n", - "INFO: [XFORM 203-1161] The maximum of name length is set to 80.\n", - "INFO: [HLS 200-1464] Running solution command: config_compile -complex-mul-dsp=0\n", - "INFO: [XFORM 203-1161] The maximum of name length is set to 80.\n", - "INFO: [HLS 200-1464] Running solution command: config_schedule -enable_dsp_full_reg=0\n", - "INFO: [HLS 200-1510] Running: config_array_partition -maximum_size 4096 \n", - "INFO: [XFORM 203-101] Allowed max sub elements number after partition is 4096.\n", - "ERROR: [HLS 200-642] The 'config_array_partition -maximum_size' command is not supported.\n", - "INFO: [HLS 200-1510] Running: config_compile -name_max_length 80 \n", - "INFO: [XFORM 203-1161] The maximum of name length is set to 80.\n", - "INFO: [HLS 200-1510] Running: set_part xczu49dr-ffvf1760-2-e \n", - "INFO: [XFORM 203-1161] The maximum of name length is set to 80.\n", - "INFO: [HLS 200-1510] Running: config_schedule -enable_dsp_full_reg=false \n", - "INFO: [HLS 200-1510] Running: create_clock -period 3.225 -name default \n", - "INFO: [HLS 200-1510] Running: set_clock_uncertainty 27% default \n", - "***** C/RTL SYNTHESIS *****\n", - "INFO: [HLS 200-1510] Running: csynth_design \n", - "INFO: [HLS 200-111] Finished File checks and directory preparation: CPU user time: 0.03 seconds. CPU system time: 0 seconds. Elapsed time: 0.03 seconds; current allocated memory: 287.297 MB.\n", - "INFO: [HLS 200-10] Analyzing design file 'firmware/NN.cpp' ... \n", - "WARNING: [HLS 214-113] Either use an argument of the function or declare the variable inside the dataflow loop body (firmware/NN.cpp:38:65)\n", - "Resolution: For help on HLS 214-113 see docs.xilinx.com/access/sources/dita/topic?Doc_Version=2023.2%20English&url=ug1448-hls-guidance&resourceid=214-113.html\n", - "WARNING: [HLS 214-113] Either use an argument of the function or declare the variable inside the dataflow loop body (firmware/NN.cpp:38:69)\n", - "Resolution: For help on HLS 214-113 see docs.xilinx.com/access/sources/dita/topic?Doc_Version=2023.2%20English&url=ug1448-hls-guidance&resourceid=214-113.html\n", - "WARNING: [HLS 214-113] Either use an argument of the function or declare the variable inside the dataflow loop body (firmware/NN.cpp:52:71)\n", - "Resolution: For help on HLS 214-113 see docs.xilinx.com/access/sources/dita/topic?Doc_Version=2023.2%20English&url=ug1448-hls-guidance&resourceid=214-113.html\n", - "WARNING: [HLS 214-113] Either use an argument of the function or declare the variable inside the dataflow loop body (firmware/NN.cpp:52:75)\n", - "Resolution: For help on HLS 214-113 see docs.xilinx.com/access/sources/dita/topic?Doc_Version=2023.2%20English&url=ug1448-hls-guidance&resourceid=214-113.html\n", - "WARNING: [HLS 214-113] Either use an argument of the function or declare the variable inside the dataflow loop body (firmware/NN.cpp:57:70)\n", - "Resolution: For help on HLS 214-113 see docs.xilinx.com/access/sources/dita/topic?Doc_Version=2023.2%20English&url=ug1448-hls-guidance&resourceid=214-113.html\n", - "WARNING: [HLS 214-113] Either use an argument of the function or declare the variable inside the dataflow loop body (firmware/NN.cpp:57:74)\n", - "Resolution: For help on HLS 214-113 see docs.xilinx.com/access/sources/dita/topic?Doc_Version=2023.2%20English&url=ug1448-hls-guidance&resourceid=214-113.html\n", - "WARNING: [HLS 200-471] Dataflow form checks found 6 issue(s) in file firmware/NN.cpp\n", - "Resolution: For help on HLS 200-471 see docs.xilinx.com/access/sources/dita/topic?Doc_Version=2023.2%20English&url=ug1448-hls-guidance&resourceid=200-471.html\n", - "WARNING: [HLS 207-5292] unused parameter 'keep' (firmware/nnet_utils/nnet_helpers.h:285:99)\n", - "WARNING: [HLS 207-5292] unused parameter 'data' (firmware/nnet_utils/nnet_code_gen.h:11:36)\n", - "WARNING: [HLS 207-5292] unused parameter 'buffer' (firmware/nnet_utils/nnet_code_gen.h:12:36)\n", - "WARNING: [HLS 207-5292] unused parameter 'partition' (firmware/nnet_utils/nnet_code_gen.h:13:44)\n", - "WARNING: [HLS 207-5292] unused parameter 'data' (firmware/nnet_utils/nnet_code_gen.h:21:24)\n", - "WARNING: [HLS 207-5292] unused parameter 'buffer' (firmware/nnet_utils/nnet_code_gen.h:22:24)\n", - "WARNING: [HLS 207-5292] unused parameter 'partition' (firmware/nnet_utils/nnet_code_gen.h:23:32)\n", - "INFO: [HLS 200-111] Finished Source Code Analysis and Preprocessing: CPU user time: 3.38 seconds. CPU system time: 0.25 seconds. Elapsed time: 3.66 seconds; current allocated memory: 291.832 MB.\n", - "INFO: [HLS 200-777] Using interface defaults for 'Vivado' flow target.\n", - "INFO: [HLS 200-1995] There were 1,820 instructions in the design after the 'Compile/Link' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 5,618 instructions in the design after the 'Unroll/Inline (step 1)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 2,148 instructions in the design after the 'Unroll/Inline (step 2)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,366 instructions in the design after the 'Unroll/Inline (step 3)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,292 instructions in the design after the 'Unroll/Inline (step 4)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,221 instructions in the design after the 'Array/Struct (step 1)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,221 instructions in the design after the 'Array/Struct (step 2)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,221 instructions in the design after the 'Array/Struct (step 3)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,590 instructions in the design after the 'Array/Struct (step 4)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,127 instructions in the design after the 'Array/Struct (step 5)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,112 instructions in the design after the 'Performance (step 1)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,112 instructions in the design after the 'Performance (step 2)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,112 instructions in the design after the 'Performance (step 3)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,112 instructions in the design after the 'Performance (step 4)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,114 instructions in the design after the 'HW Transforms (step 1)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 200-1995] There were 1,111 instructions in the design after the 'HW Transforms (step 2)' phase of compilation. See the Design Size Report for more details: /data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/report/csynth_design_size.rpt\n", - "INFO: [HLS 214-415] Performing recursive inline in function 'nnet::dense_resource<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>' (firmware/nnet_utils/nnet_dense_resource.h:250:9)\n", - "WARNING: [HLS 214-273] In function 'void nnet::dense_resource_rf_leq_nin<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>(ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>*, config2::weight_t*, config2::bias_t*)', Pragma conflict happens on 'INLINE' and 'FUNCTION_INSTANTIATE' pragmas: same function (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "INFO: [HLS 214-415] Performing recursive inline in function 'nnet::dense_resource<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>' (firmware/nnet_utils/nnet_dense_resource.h:250:9)\n", - "WARNING: [HLS 214-273] In function 'void nnet::dense_resource_rf_leq_nin<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>(ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>*, config5::weight_t*, config5::bias_t*)', Pragma conflict happens on 'INLINE' and 'FUNCTION_INSTANTIATE' pragmas: same function (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "WARNING: [HLS 214-273] In function 'void nnet::dense<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>(ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>*, config2::weight_t*, config2::bias_t*)', Pragma conflict happens on 'INLINE' and DATAFLOW pragmas: Inline into dataflow region may break the canonical form (firmware/nnet_utils/nnet_dense.h:38:0)\n", - "WARNING: [HLS 214-273] In function 'void nnet::dense<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>(ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>*, config5::weight_t*, config5::bias_t*)', Pragma conflict happens on 'INLINE' and DATAFLOW pragmas: Inline into dataflow region may break the canonical form (firmware/nnet_utils/nnet_dense.h:38:0)\n", - "INFO: [HLS 214-131] Inlining function 'nnet::product::mult<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<6, 1, (ap_q_mode)5, (ap_o_mode)3, 0> >::product(ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<6, 1, (ap_q_mode)5, (ap_o_mode)3, 0>)' into 'void nnet::dense_resource_rf_leq_nin<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>(ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>*, config2::weight_t*, config2::bias_t*)' (firmware/nnet_utils/nnet_dense_resource.h:56:17)\n", - "INFO: [HLS 214-131] Inlining function 'nnet::product::mult<ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0> >::product(ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>)' into 'void nnet::normalize<ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, config4>(ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>*, config4::scale_t*, config4::bias_t*)' (firmware/nnet_utils/nnet_batchnorm.h:54:25)\n", - "INFO: [HLS 214-131] Inlining function 'nnet::product::mult<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<6, 1, (ap_q_mode)5, (ap_o_mode)3, 0> >::product(ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<6, 1, (ap_q_mode)5, (ap_o_mode)3, 0>)' into 'void nnet::dense_resource_rf_leq_nin<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>(ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>*, config5::weight_t*, config5::bias_t*)' (firmware/nnet_utils/nnet_dense_resource.h:56:17)\n", - "INFO: [HLS 214-131] Inlining function 'void nnet::dense<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>(ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>*, config2::weight_t*, config2::bias_t*)' into 'NN(ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>*)' (firmware/NN.cpp:38:2)\n", - "INFO: [HLS 214-131] Inlining function 'void nnet::dense<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>(ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>*, config5::weight_t*, config5::bias_t*)' into 'NN(ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>*)' (firmware/NN.cpp:57:5)\n", - "INFO: [HLS 214-291] Loop 'MultLoop' is marked as complete unroll implied by the pipeline pragma (firmware/nnet_utils/nnet_dense_resource.h:52:9)\n", - "INFO: [HLS 214-291] Loop 'Result' is marked as complete unroll implied by the pipeline pragma (firmware/nnet_utils/nnet_batchnorm.h:52:5)\n", - "INFO: [HLS 214-291] Loop 'VITIS_LOOP_43_1' is marked as complete unroll implied by the pipeline pragma (firmware/nnet_utils/nnet_activation.h:43:22)\n", - "INFO: [HLS 214-186] Unrolling loop 'Result' (firmware/nnet_utils/nnet_dense_resource.h:77:5) in function 'nnet::dense_resource_rf_leq_nin<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>' completely with a factor of 1 (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "INFO: [HLS 214-186] Unrolling loop 'MultLoop' (firmware/nnet_utils/nnet_dense_resource.h:52:9) in function 'nnet::dense_resource_rf_leq_nin<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>' completely with a factor of 1 (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "INFO: [HLS 214-186] Unrolling loop 'InitAccum' (firmware/nnet_utils/nnet_dense_resource.h:37:5) in function 'nnet::dense_resource_rf_leq_nin<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>' completely with a factor of 1 (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "INFO: [HLS 214-186] Unrolling loop 'Result' (firmware/nnet_utils/nnet_batchnorm.h:52:5) in function 'nnet::normalize<ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, config4>' completely with a factor of 4 (firmware/nnet_utils/nnet_batchnorm.h:33:0)\n", - "INFO: [HLS 214-186] Unrolling loop 'VITIS_LOOP_43_1' (firmware/nnet_utils/nnet_activation.h:43:22) in function 'nnet::relu<ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, relu_config3>' completely with a factor of 4 (firmware/nnet_utils/nnet_activation.h:39:0)\n", - "INFO: [HLS 214-186] Unrolling loop 'Result' (firmware/nnet_utils/nnet_dense_resource.h:77:5) in function 'nnet::dense_resource_rf_leq_nin<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>' completely with a factor of 4 (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "INFO: [HLS 214-186] Unrolling loop 'MultLoop' (firmware/nnet_utils/nnet_dense_resource.h:52:9) in function 'nnet::dense_resource_rf_leq_nin<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>' completely with a factor of 64 (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "INFO: [HLS 214-186] Unrolling loop 'InitAccum' (firmware/nnet_utils/nnet_dense_resource.h:37:5) in function 'nnet::dense_resource_rf_leq_nin<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>' completely with a factor of 4 (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "INFO: [HLS 214-178] Inlining function 'std::enable_if<!(std::is_same<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_uint<1> >::value), ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0> >::type nnet::cast<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>(config2::accum_t)' into 'void nnet::dense_resource_rf_leq_nin<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>(ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>*, config2::weight_t*, config2::bias_t*)' (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "INFO: [HLS 214-178] Inlining function 'std::enable_if<!(std::is_same<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_uint<1> >::value), ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0> >::type nnet::cast<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>(config5::accum_t)' into 'void nnet::dense_resource_rf_leq_nin<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>(ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>*, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>*, config5::weight_t*, config5::bias_t*)' (firmware/nnet_utils/nnet_dense_resource.h:15:0)\n", - "INFO: [HLS 214-248] Applying array_partition to 'b5': Complete partitioning on dimension 1. (firmware/weights/b5.h:12:0)\n", - "INFO: [HLS 214-248] Applying array_partition to 'b4': Complete partitioning on dimension 1. (firmware/weights/b4.h:12:0)\n", - "INFO: [HLS 214-248] Applying array_partition to 's4': Complete partitioning on dimension 1. (firmware/weights/s4.h:12:0)\n", - "INFO: [HLS 214-248] Applying array_partition to 'b2': Complete partitioning on dimension 1. (firmware/weights/b2.h:12:0)\n", - "INFO: [HLS 214-248] Applying array_partition to 'layer2_out': Complete partitioning on dimension 1. (firmware/NN.cpp:36:11)\n", - "INFO: [HLS 214-248] Applying array_partition to 'layer3_out': Complete partitioning on dimension 1. (firmware/NN.cpp:43:14)\n", - "INFO: [HLS 214-248] Applying array_partition to 'layer4_out': Complete partitioning on dimension 1. (firmware/NN.cpp:50:14)\n", - "INFO: [HLS 214-248] Applying array_partition to 'layer5_out': Complete partitioning on dimension 1. (firmware/NN.cpp:10:0)\n", - "WARNING: [HLS 214-292] Unsupported reshape pragma/directive on variable 'fc1_input'. The port size might be shrunk or fail cosim as the bit-width after reshape (11200) is larger than 8191\n", - "INFO: [HLS 214-248] Applying array_reshape to 'w2': Block reshaping with factor 64 on dimension 1. (firmware/weights/w2.h:12:0)\n", - "INFO: [HLS 214-248] Applying array_reshape to 'fc1_input': Complete reshaping on dimension 1. (firmware/NN.cpp:10:0)\n", - "INFO: [HLS 200-111] Finished Compiling Optimization and Transform: CPU user time: 1.79 seconds. CPU system time: 0.19 seconds. Elapsed time: 6.3 seconds; current allocated memory: 293.078 MB.\n", - "INFO: [HLS 200-111] Finished Checking Pragmas: CPU user time: 0 seconds. CPU system time: 0 seconds. Elapsed time: 0 seconds; current allocated memory: 293.078 MB.\n", - "INFO: [HLS 200-10] Starting code transformations ...\n", - "INFO: [HLS 200-111] Finished Standard Transforms: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0.02 seconds; current allocated memory: 295.414 MB.\n", - "INFO: [HLS 200-10] Checking synthesizability ...\n", - "WARNING: [SYNCHK 200-23] firmware/nnet_utils/nnet_dense_resource.h:43: variable-indexed range selection may cause suboptimal QoR.\n", - "INFO: [SYNCHK 200-10] 0 error(s), 1 warning(s).\n", - "INFO: [HLS 200-111] Finished Checking Synthesizability: CPU user time: 0.02 seconds. CPU system time: 0 seconds. Elapsed time: 0.02 seconds; current allocated memory: 297.141 MB.\n", - "INFO: [XFORM 203-712] Applying dataflow to function 'NN' (firmware/NN.cpp:36:1), detected/extracted 4 process function(s): \n", - "\t 'nnet::dense_resource<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>'\n", - "\t 'nnet::relu<ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, relu_config3>'\n", - "\t 'nnet::normalize<ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, config4>'\n", - "\t 'nnet::dense_resource<ap_fixed<24, 8, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<10, 5, (ap_q_mode)5, (ap_o_mode)3, 0>, config5>'.\n", - "INFO: [XFORM 203-11] Balancing expressions in function 'nnet::dense_resource_rf_leq_nin<ap_fixed<14, 14, (ap_q_mode)5, (ap_o_mode)3, 0>, ap_fixed<19, 18, (ap_q_mode)5, (ap_o_mode)3, 0>, config2>' (firmware/nnet_utils/nnet_dense_resource.h:43:5)...64 expression(s) balanced.\n", - "INFO: [HLS 200-111] Finished Loop, function and other optimizations: CPU user time: 0.07 seconds. CPU system time: 0.01 seconds. Elapsed time: 0.07 seconds; current allocated memory: 323.863 MB.\n", - "WARNING: [HLS 200-1992] Performance of loop 'ReuseLoop'(firmware/nnet_utils/nnet_dense_resource.h:43:5) in function 'dense_resource_rf_leq_nin<ap_fixed,ap_fixed<19,18,5,3,0>,config2>' can be improved with loop rewind inference if the loop is called from a region that can be executed in overlapped fashion such as a dataflow region or the top function.\n", - "WARNING: [HLS 200-1992] Performance of loop 'ReuseLoop'(firmware/nnet_utils/nnet_dense_resource.h:43:5) in function 'dense_resource_rf_leq_nin<ap_fixed,ap_fixed<10,5,5,3,0>,config5>' can be improved with loop rewind inference if the loop is called from a region that can be executed in overlapped fashion such as a dataflow region or the top function.\n", - "INFO: [XFORM 203-531] Rewinding loop 'ReuseLoop' (firmware/nnet_utils/nnet_dense_resource.h:43) in function 'dense_resource_rf_leq_nin<ap_fixed,ap_fixed<19,18,5,3,0>,config2>'.\n", - "INFO: [XFORM 203-531] Rewinding loop 'ReuseLoop' (firmware/nnet_utils/nnet_dense_resource.h:43) in function 'dense_resource_rf_leq_nin<ap_fixed,ap_fixed<10,5,5,3,0>,config5>'.\n", - "INFO: [HLS 200-111] Finished Architecture Synthesis: CPU user time: 0.06 seconds. CPU system time: 0.01 seconds. Elapsed time: 0.06 seconds; current allocated memory: 378.375 MB.\n", - "INFO: [HLS 200-10] Starting hardware synthesis ...\n", - "INFO: [HLS 200-10] Synthesizing 'NN' ...\n", - "WARNING: [SYN 201-103] Legalizing function name 'dense_resource_rf_leq_nin<ap_fixed,ap_fixed<19,18,5,3,0>,config2>' to 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s'.\n", - "WARNING: [SYN 201-103] Legalizing function name 'dense_resource<ap_fixed<14, 14, 5, 3, 0>, ap_fixed<19, 18, 5, 3, 0>, config2>' to 'dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s'.\n", - "WARNING: [SYN 201-103] Legalizing function name 'relu<ap_fixed<19, 18, 5, 3, 0>, ap_fixed<19, 18, 5, 3, 0>, relu_config3>' to 'relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s'.\n", - "WARNING: [SYN 201-103] Legalizing function name 'normalize<ap_fixed<19, 18, 5, 3, 0>, ap_fixed<24, 8, 5, 3, 0>, config4>' to 'normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s'.\n", - "WARNING: [SYN 201-103] Legalizing function name 'dense_resource_rf_leq_nin<ap_fixed,ap_fixed<10,5,5,3,0>,config5>' to 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s'.\n", - "WARNING: [SYN 201-103] Legalizing function name 'dense_resource<ap_fixed<24, 8, 5, 3, 0>, ap_fixed<10, 5, 5, 3, 0>, config5>' to 'dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s'.\n", - "WARNING: [SYN 201-223] Checking resource limit in 'normalize<ap_fixed<19, 18, 5, 3, 0>, ap_fixed<24, 8, 5, 3, 0>, config4>': cannot find any operation of 'mul'.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-42] -- Implementing module 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [SCHED 204-11] Starting scheduling ...\n", - "INFO: [SCHED 204-61] Pipelining loop 'ReuseLoop'.\n", - "INFO: [HLS 200-1470] Pipelining result : Target II = 1, Final II = 1, Depth = 5, loop 'ReuseLoop'\n", - "INFO: [SCHED 204-11] Finished scheduling.\n", - "INFO: [HLS 200-111] Finished Scheduling: CPU user time: 0.28 seconds. CPU system time: 0 seconds. Elapsed time: 0.3 seconds; current allocated memory: 385.273 MB.\n", - "INFO: [BIND 205-100] Starting micro-architecture generation ...\n", - "INFO: [BIND 205-101] Performing variable lifetime analysis.\n", - "INFO: [BIND 205-101] Exploring resource sharing.\n", - "INFO: [BIND 205-101] Binding ...\n", - "INFO: [BIND 205-100] Finished micro-architecture generation.\n", - "INFO: [HLS 200-111] Finished Binding: CPU user time: 0.04 seconds. CPU system time: 0 seconds. Elapsed time: 0.03 seconds; current allocated memory: 385.273 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-42] -- Implementing module 'dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [SCHED 204-11] Starting scheduling ...\n", - "INFO: [SCHED 204-11] Finished scheduling.\n", - "INFO: [HLS 200-111] Finished Scheduling: CPU user time: 0.03 seconds. CPU system time: 0 seconds. Elapsed time: 0.03 seconds; current allocated memory: 385.273 MB.\n", - "INFO: [BIND 205-100] Starting micro-architecture generation ...\n", - "INFO: [BIND 205-101] Performing variable lifetime analysis.\n", - "INFO: [BIND 205-101] Exploring resource sharing.\n", - "INFO: [BIND 205-101] Binding ...\n", - "INFO: [BIND 205-100] Finished micro-architecture generation.\n", - "INFO: [HLS 200-111] Finished Binding: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0.01 seconds; current allocated memory: 385.273 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-42] -- Implementing module 'relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [SCHED 204-11] Starting scheduling ...\n", - "INFO: [SCHED 204-61] Pipelining function 'relu<ap_fixed<19, 18, 5, 3, 0>, ap_fixed<19, 18, 5, 3, 0>, relu_config3>'.\n", - "INFO: [HLS 200-1470] Pipelining result : Target II = NA, Final II = 1, Depth = 2, function 'relu<ap_fixed<19, 18, 5, 3, 0>, ap_fixed<19, 18, 5, 3, 0>, relu_config3>'\n", - "INFO: [SCHED 204-11] Finished scheduling.\n", - "INFO: [HLS 200-111] Finished Scheduling: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0.02 seconds; current allocated memory: 385.273 MB.\n", - "INFO: [BIND 205-100] Starting micro-architecture generation ...\n", - "INFO: [BIND 205-101] Performing variable lifetime analysis.\n", - "INFO: [BIND 205-101] Exploring resource sharing.\n", - "INFO: [BIND 205-101] Binding ...\n", - "INFO: [BIND 205-100] Finished micro-architecture generation.\n", - "INFO: [HLS 200-111] Finished Binding: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0.01 seconds; current allocated memory: 385.273 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-42] -- Implementing module 'normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [SCHED 204-11] Starting scheduling ...\n", - "INFO: [SCHED 204-61] Pipelining function 'normalize<ap_fixed<19, 18, 5, 3, 0>, ap_fixed<24, 8, 5, 3, 0>, config4>'.\n", - "INFO: [HLS 200-1470] Pipelining result : Target II = 64, Final II = 2, Depth = 2, function 'normalize<ap_fixed<19, 18, 5, 3, 0>, ap_fixed<24, 8, 5, 3, 0>, config4>'\n", - "INFO: [SCHED 204-11] Finished scheduling.\n", - "INFO: [HLS 200-111] Finished Scheduling: CPU user time: 0.02 seconds. CPU system time: 0 seconds. Elapsed time: 0.02 seconds; current allocated memory: 385.273 MB.\n", - "INFO: [BIND 205-100] Starting micro-architecture generation ...\n", - "INFO: [BIND 205-101] Performing variable lifetime analysis.\n", - "INFO: [BIND 205-101] Exploring resource sharing.\n", - "INFO: [BIND 205-101] Binding ...\n", - "INFO: [BIND 205-100] Finished micro-architecture generation.\n", - "INFO: [HLS 200-111] Finished Binding: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0.01 seconds; current allocated memory: 385.273 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-42] -- Implementing module 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [SCHED 204-11] Starting scheduling ...\n", - "INFO: [SCHED 204-61] Pipelining loop 'ReuseLoop'.\n", - "INFO: [HLS 200-1470] Pipelining result : Target II = 1, Final II = 1, Depth = 6, loop 'ReuseLoop'\n", - "INFO: [SCHED 204-11] Finished scheduling.\n", - "INFO: [HLS 200-111] Finished Scheduling: CPU user time: 0.02 seconds. CPU system time: 0 seconds. Elapsed time: 0.02 seconds; current allocated memory: 385.328 MB.\n", - "INFO: [BIND 205-100] Starting micro-architecture generation ...\n", - "INFO: [BIND 205-101] Performing variable lifetime analysis.\n", - "INFO: [BIND 205-101] Exploring resource sharing.\n", - "INFO: [BIND 205-101] Binding ...\n", - "INFO: [BIND 205-100] Finished micro-architecture generation.\n", - "INFO: [HLS 200-111] Finished Binding: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0.01 seconds; current allocated memory: 385.328 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-42] -- Implementing module 'dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [SCHED 204-11] Starting scheduling ...\n", - "INFO: [SCHED 204-11] Finished scheduling.\n", - "INFO: [HLS 200-111] Finished Scheduling: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0.01 seconds; current allocated memory: 385.328 MB.\n", - "INFO: [BIND 205-100] Starting micro-architecture generation ...\n", - "INFO: [BIND 205-101] Performing variable lifetime analysis.\n", - "INFO: [BIND 205-101] Exploring resource sharing.\n", - "INFO: [BIND 205-101] Binding ...\n", - "INFO: [BIND 205-100] Finished micro-architecture generation.\n", - "INFO: [HLS 200-111] Finished Binding: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0 seconds; current allocated memory: 385.328 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-42] -- Implementing module 'NN' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [SCHED 204-11] Starting scheduling ...\n", - "INFO: [SCHED 204-11] Finished scheduling.\n", - "INFO: [HLS 200-111] Finished Scheduling: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0.02 seconds; current allocated memory: 385.328 MB.\n", - "INFO: [BIND 205-100] Starting micro-architecture generation ...\n", - "INFO: [BIND 205-101] Performing variable lifetime analysis.\n", - "INFO: [BIND 205-101] Exploring resource sharing.\n", - "INFO: [BIND 205-101] Binding ...\n", - "INFO: [BIND 205-100] Finished micro-architecture generation.\n", - "INFO: [HLS 200-111] Finished Binding: CPU user time: 0.01 seconds. CPU system time: 0 seconds. Elapsed time: 0.01 seconds; current allocated memory: 385.328 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-10] -- Generating RTL for module 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [SYN 201-210] Renamed object name 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_AUTO_1R' to 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb' due to the length limit 80\n", - "INFO: [HLS 200-1030] Apply Unified Pipeline Control on module 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s' pipeline 'ReuseLoop' pipeline type 'rewind pipeline'\n", - "INFO: [RTGEN 206-104] Estimated max fanout for 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s' is 22400 from HDL expression: (do_init_reg_359 == 1'd0)\n", - "INFO: [RTGEN 206-100] Generating core module 'mul_14s_5s_19_1_1': 1 instance(s).\n", - "INFO: [RTGEN 206-100] Generating core module 'mul_14s_6s_20_1_1': 63 instance(s).\n", - "INFO: [RTGEN 206-100] Finished creating RTL model for 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s'.\n", - "INFO: [RTMG 210-279] Implementing memory 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb' using auto ROMs.\n", - "INFO: [HLS 200-111] Finished Creating RTL model: CPU user time: 0.26 seconds. CPU system time: 0 seconds. Elapsed time: 0.26 seconds; current allocated memory: 390.098 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-10] -- Generating RTL for module 'dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [RTGEN 206-100] Finished creating RTL model for 'dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s'.\n", - "INFO: [HLS 200-111] Finished Creating RTL model: CPU user time: 0.1 seconds. CPU system time: 0.01 seconds. Elapsed time: 0.12 seconds; current allocated memory: 402.469 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-10] -- Generating RTL for module 'relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-1030] Apply Unified Pipeline Control on module 'relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s' pipeline 'relu<ap_fixed<19, 18, 5, 3, 0>, ap_fixed<19, 18, 5, 3, 0>, relu_config3>' pipeline type 'function pipeline'\n", - "INFO: [RTGEN 206-100] Finished creating RTL model for 'relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s'.\n", - "INFO: [HLS 200-111] Finished Creating RTL model: CPU user time: 0.03 seconds. CPU system time: 0 seconds. Elapsed time: 0.03 seconds; current allocated memory: 402.469 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-10] -- Generating RTL for module 'normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [RTGEN 206-100] Finished creating RTL model for 'normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s'.\n", - "INFO: [HLS 200-111] Finished Creating RTL model: CPU user time: 0.02 seconds. CPU system time: 0 seconds. Elapsed time: 0.02 seconds; current allocated memory: 402.469 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-10] -- Generating RTL for module 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-1030] Apply Unified Pipeline Control on module 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s' pipeline 'ReuseLoop' pipeline type 'rewind pipeline'\n", - "INFO: [RTGEN 206-100] Generating core module 'mul_24s_6s_26_3_1': 1 instance(s).\n", - "INFO: [RTGEN 206-100] Generating core module 'sparsemux_9_2_24_1_1': 1 instance(s).\n", - "INFO: [RTGEN 206-100] Finished creating RTL model for 'dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s'.\n", - "INFO: [RTMG 210-279] Implementing memory 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R' using auto ROMs.\n", - "INFO: [HLS 200-111] Finished Creating RTL model: CPU user time: 0.02 seconds. CPU system time: 0.01 seconds. Elapsed time: 0.03 seconds; current allocated memory: 402.469 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-10] -- Generating RTL for module 'dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [RTGEN 206-100] Finished creating RTL model for 'dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s'.\n", - "INFO: [HLS 200-111] Finished Creating RTL model: CPU user time: 0.03 seconds. CPU system time: 0 seconds. Elapsed time: 0.04 seconds; current allocated memory: 402.871 MB.\n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [HLS 200-10] -- Generating RTL for module 'NN' \n", - "INFO: [HLS 200-10] ----------------------------------------------------------------\n", - "INFO: [RTGEN 206-500] Setting interface mode on port 'NN/fc1_input' to 'ap_vld'.\n", - "INFO: [RTGEN 206-500] Setting interface mode on port 'NN/layer5_out' to 'ap_vld'.\n", - "INFO: [RTGEN 206-500] Setting interface mode on function 'NN' to 'ap_ctrl_hs'.\n", - "INFO: [RTGEN 206-100] Finished creating RTL model for 'NN'.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer2_out_U(NN_fifo_w19_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer2_out_1_U(NN_fifo_w19_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer2_out_2_U(NN_fifo_w19_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer2_out_3_U(NN_fifo_w19_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer3_out_U(NN_fifo_w18_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer3_out_1_U(NN_fifo_w18_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer3_out_2_U(NN_fifo_w18_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer3_out_3_U(NN_fifo_w18_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer4_out_U(NN_fifo_w24_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer4_out_1_U(NN_fifo_w24_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer4_out_2_U(NN_fifo_w24_d2_S)' using Shift Registers.\n", - "INFO: [RTMG 210-285] Implementing FIFO 'layer4_out_3_U(NN_fifo_w24_d2_S)' using Shift Registers.\n", - "INFO: [HLS 200-111] Finished Creating RTL model: CPU user time: 0.03 seconds. CPU system time: 0 seconds. Elapsed time: 0.04 seconds; current allocated memory: 403.934 MB.\n", - "INFO: [HLS 200-111] Finished Generating all RTL models: CPU user time: 0.09 seconds. CPU system time: 0.01 seconds. Elapsed time: 0.1 seconds; current allocated memory: 407.059 MB.\n", - "INFO: [HLS 200-111] Finished Updating report files: CPU user time: 0.18 seconds. CPU system time: 0.01 seconds. Elapsed time: 0.19 seconds; current allocated memory: 414.332 MB.\n", - "INFO: [VHDL 208-304] Generating VHDL RTL for NN.\n", - "INFO: [VLOG 209-307] Generating Verilog RTL for NN.\n", - "INFO: [HLS 200-789] **** Estimated Fmax: 432.15 MHz\n", - "INFO: [HLS 200-111] Finished Command csynth_design CPU user time: 6.63 seconds. CPU system time: 0.51 seconds. Elapsed time: 11.51 seconds; current allocated memory: 127.492 MB.\n", - "***** C/RTL SYNTHESIS COMPLETED IN 0h0m11s *****\n", - "***** VIVADO SYNTHESIS *****\n", - "\n", - "****** Vivado v2023.2.1 (64-bit)\n", - " **** SW Build 4081461 on Thu Dec 14 12:22:04 MST 2023\n", - " **** IP Build 4080415 on Thu Dec 14 21:01:57 MST 2023\n", - " **** SharedData Build 4077621 on Mon Dec 11 00:23:44 MST 2023\n", - " ** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.\n", - " ** Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.\n", - "\n", - "source vivado_synth.tcl\n", - "# set tcldir [file dirname [info script]]\n", - "# source [file join $tcldir project.tcl]\n", - "## variable project_name\n", - "## set project_name \"NN\"\n", - "## variable backend\n", - "## set backend \"vivado\"\n", - "## variable part\n", - "## set part \"xczu49dr-ffvf1760-2-e\"\n", - "## variable clock_period\n", - "## set clock_period 3.225\n", - "## variable clock_uncertainty\n", - "## set clock_uncertainty 27%\n", - "## variable version\n", - "## set version \"1.0.0\"\n", - "# add_files ${project_name}_prj/solution1/syn/vhdl\n", - "# synth_design -top ${project_name} -part $part\n", - "Command: synth_design -top NN -part xczu49dr-ffvf1760-2-e\n", - "Starting synth_design\n", - "Attempting to get a license for feature 'Synthesis' and/or device 'xczu49dr'\n", - "INFO: [Common 17-349] Got license for feature 'Synthesis' and/or device 'xczu49dr'\n", - "INFO: [Common 17-1686] The version limit for your license is '2024.10' and will not allow you to run AMD software released after that date (year & month). A version limit expiration means that while you will be able to continue to use the current version of tools or IP with this license, you will not be able to use any updates or new releases.\n", - "INFO: [Synth 8-7079] Multithreading enabled for synth_design using a maximum of 4 processes.\n", - "INFO: [Synth 8-7078] Launching helper process for spawning children vivado processes\n", - "INFO: [Synth 8-7075] Helper process launched with PID 758446\n", - "---------------------------------------------------------------------------------\n", - "Starting Synthesize : Time (s): cpu = 00:00:01 ; elapsed = 00:00:02 . Memory (MB): peak = 1922.281 ; gain = 359.699 ; free physical = 24641 ; free virtual = 102202\n", - "---------------------------------------------------------------------------------\n", - "INFO: [Synth 8-638] synthesizing module 'NN' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:26]\n", - "INFO: [Synth 8-3491] module 'NN_dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s.vhd:11' bound to instance 'dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0' of component 'NN_dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:295]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s.vhd:29]\n", - "INFO: [Synth 8-3491] module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:11' bound to instance 'grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14' of component 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s.vhd:83]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:27]\n", - "\tParameter DataWidth bound to: 383 - type: integer \n", - "\tParameter AddressRange bound to: 50 - type: integer \n", - "\tParameter AddressWidth bound to: 6 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb.vhd:10' bound to instance 'w2_99_U' of component 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:886]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb.vhd:28]\n", - "\tParameter DataWidth bound to: 383 - type: integer \n", - "\tParameter AddressWidth bound to: 6 - type: integer \n", - "\tParameter AddressRange bound to: 50 - type: integer \n", - "INFO: [Synth 8-256] done synthesizing module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb.vhd:28]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U1' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:898]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:24]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-256] done synthesizing module 'NN_mul_14s_6s_20_1_1' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:24]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U2' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:910]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U3' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:922]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U4' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:934]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U5' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:946]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U6' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:958]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U7' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:970]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U8' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:982]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U9' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:994]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U10' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1006]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U11' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1018]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U12' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1030]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U13' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1042]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U14' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1054]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U15' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1066]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U16' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1078]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U17' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1090]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U18' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1102]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U19' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1114]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U20' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1126]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U21' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1138]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U22' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1150]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U23' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1162]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U24' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1174]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U25' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1186]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U26' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1198]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U27' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1210]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U28' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1222]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U29' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1234]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U30' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1246]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U31' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1258]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U32' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1270]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U33' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1282]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U34' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1294]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U35' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1306]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U36' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1318]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U37' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1330]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U38' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1342]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U39' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1354]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U40' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1366]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U41' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1378]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U42' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1390]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U43' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1402]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U44' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1414]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U45' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1426]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U46' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1438]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U47' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1450]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U48' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1462]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U49' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1474]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U50' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1486]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U51' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1498]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U52' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1510]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U53' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1522]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U54' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1534]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U55' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1546]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U56' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1558]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U57' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1570]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U58' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1582]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U59' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1594]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U60' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1606]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U61' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1618]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U62' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1630]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 20 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_6s_20_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_6s_20_1_1.vhd:7' bound to instance 'mul_14s_6s_20_1_1_U63' of component 'NN_mul_14s_6s_20_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1642]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 5 - type: integer \n", - "\tParameter dout_WIDTH bound to: 19 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_14s_5s_19_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_5s_19_1_1.vhd:7' bound to instance 'mul_14s_5s_19_1_1_U64' of component 'NN_mul_14s_5s_19_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1654]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_mul_14s_5s_19_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_5s_19_1_1.vhd:24]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter din0_WIDTH bound to: 14 - type: integer \n", - "\tParameter din1_WIDTH bound to: 5 - type: integer \n", - "\tParameter dout_WIDTH bound to: 19 - type: integer \n", - "INFO: [Synth 8-256] done synthesizing module 'NN_mul_14s_5s_19_1_1' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_14s_5s_19_1_1.vhd:24]\n", - "INFO: [Synth 8-3491] module 'NN_flow_control_loop_pipe_no_ap_cont' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_flow_control_loop_pipe_no_ap_cont.vhd:13' bound to instance 'flow_control_loop_pipe_no_ap_cont_U' of component 'NN_flow_control_loop_pipe_no_ap_cont' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:1666]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_flow_control_loop_pipe_no_ap_cont' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_flow_control_loop_pipe_no_ap_cont.vhd:39]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_flow_control_loop_pipe_no_ap_cont' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_flow_control_loop_pipe_no_ap_cont.vhd:39]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s.vhd:27]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s.vhd:29]\n", - "INFO: [Synth 8-3491] module 'NN_relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s.vhd:11' bound to instance 'relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_U0' of component 'NN_relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:311]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s.vhd:31]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s.vhd:31]\n", - "INFO: [Synth 8-3491] module 'NN_normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s.vhd:11' bound to instance 'normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_U0' of component 'NN_normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:329]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s.vhd:31]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s.vhd:31]\n", - "INFO: [Synth 8-3491] module 'NN_dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s.vhd:11' bound to instance 'dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0' of component 'NN_dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:347]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s.vhd:29]\n", - "INFO: [Synth 8-3491] module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s.vhd:11' bound to instance 'grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49' of component 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s.vhd:81]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s.vhd:27]\n", - "\tParameter DataWidth bound to: 6 - type: integer \n", - "\tParameter AddressRange bound to: 4 - type: integer \n", - "\tParameter AddressWidth bound to: 2 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R.vhd:10' bound to instance 'w5_U' of component 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s.vhd:209]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R.vhd:28]\n", - "\tParameter DataWidth bound to: 6 - type: integer \n", - "\tParameter AddressWidth bound to: 2 - type: integer \n", - "\tParameter AddressRange bound to: 4 - type: integer \n", - "INFO: [Synth 8-256] done synthesizing module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R.vhd:28]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "\tParameter CASE0 bound to: 2'b00 \n", - "\tParameter din0_WIDTH bound to: 24 - type: integer \n", - "\tParameter CASE1 bound to: 2'b01 \n", - "\tParameter din1_WIDTH bound to: 24 - type: integer \n", - "\tParameter CASE2 bound to: 2'b10 \n", - "\tParameter din2_WIDTH bound to: 24 - type: integer \n", - "\tParameter CASE3 bound to: 2'b11 \n", - "\tParameter din3_WIDTH bound to: 24 - type: integer \n", - "\tParameter def_WIDTH bound to: 24 - type: integer \n", - "\tParameter sel_WIDTH bound to: 2 - type: integer \n", - "\tParameter dout_WIDTH bound to: 24 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_sparsemux_9_2_24_1_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_sparsemux_9_2_24_1_1.vhd:12' bound to instance 'sparsemux_9_2_24_1_1_U78' of component 'NN_sparsemux_9_2_24_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s.vhd:221]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_sparsemux_9_2_24_1_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_sparsemux_9_2_24_1_1.vhd:55]\n", - "\tParameter din0_WIDTH bound to: 24 - type: integer \n", - "\tParameter din1_WIDTH bound to: 24 - type: integer \n", - "\tParameter din2_WIDTH bound to: 24 - type: integer \n", - "\tParameter din3_WIDTH bound to: 24 - type: integer \n", - "\tParameter def_WIDTH bound to: 24 - type: integer \n", - "\tParameter sel_WIDTH bound to: 2 - type: integer \n", - "\tParameter dout_WIDTH bound to: 24 - type: integer \n", - "\tParameter CASE0 bound to: 2'b00 \n", - "\tParameter CASE1 bound to: 2'b01 \n", - "\tParameter CASE2 bound to: 2'b10 \n", - "\tParameter CASE3 bound to: 2'b11 \n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 1 - type: integer \n", - "INFO: [Synth 8-226] default block is never used [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_sparsemux_9_2_24_1_1.vhd:62]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_sparsemux_9_2_24_1_1' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_sparsemux_9_2_24_1_1.vhd:55]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 3 - type: integer \n", - "\tParameter din0_WIDTH bound to: 24 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 26 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_mul_24s_6s_26_3_1' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_24s_6s_26_3_1.vhd:7' bound to instance 'mul_24s_6s_26_3_1_U79' of component 'NN_mul_24s_6s_26_3_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s.vhd:245]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_mul_24s_6s_26_3_1' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_24s_6s_26_3_1.vhd:28]\n", - "\tParameter ID bound to: 1 - type: integer \n", - "\tParameter NUM_STAGE bound to: 3 - type: integer \n", - "\tParameter din0_WIDTH bound to: 24 - type: integer \n", - "\tParameter din1_WIDTH bound to: 6 - type: integer \n", - "\tParameter dout_WIDTH bound to: 26 - type: integer \n", - "INFO: [Synth 8-256] done synthesizing module 'NN_mul_24s_6s_26_3_1' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_mul_24s_6s_26_3_1.vhd:28]\n", - "INFO: [Synth 8-3491] module 'NN_flow_control_loop_pipe_no_ap_cont' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_flow_control_loop_pipe_no_ap_cont.vhd:13' bound to instance 'flow_control_loop_pipe_no_ap_cont_U' of component 'NN_flow_control_loop_pipe_no_ap_cont' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s.vhd:260]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s.vhd:27]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s.vhd:29]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w19_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:13' bound to instance 'layer2_out_U' of component 'NN_fifo_w19_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:363]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_fifo_w19_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:40]\n", - "\tParameter DATA_WIDTH bound to: 19 - type: integer \n", - "\tParameter ADDR_WIDTH bound to: 2 - type: integer \n", - "\tParameter DEPTH bound to: 2 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_fifo_w19_d2_S_ShiftReg' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:163' bound to instance 'U_NN_fifo_w19_d2_S_ShiftReg' of component 'NN_fifo_w19_d2_S_ShiftReg' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:65]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_fifo_w19_d2_S_ShiftReg' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:176]\n", - "\tParameter DATA_WIDTH bound to: 19 - type: integer \n", - "\tParameter ADDR_WIDTH bound to: 2 - type: integer \n", - "\tParameter DEPTH bound to: 2 - type: integer \n", - "INFO: [Synth 8-256] done synthesizing module 'NN_fifo_w19_d2_S_ShiftReg' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:176]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_fifo_w19_d2_S' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:40]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w19_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:13' bound to instance 'layer2_out_1_U' of component 'NN_fifo_w19_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:378]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w19_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:13' bound to instance 'layer2_out_2_U' of component 'NN_fifo_w19_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:393]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w19_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w19_d2_S.vhd:13' bound to instance 'layer2_out_3_U' of component 'NN_fifo_w19_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:408]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w18_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:13' bound to instance 'layer3_out_U' of component 'NN_fifo_w18_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:423]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_fifo_w18_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:40]\n", - "\tParameter DATA_WIDTH bound to: 18 - type: integer \n", - "\tParameter ADDR_WIDTH bound to: 2 - type: integer \n", - "\tParameter DEPTH bound to: 2 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_fifo_w18_d2_S_ShiftReg' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:163' bound to instance 'U_NN_fifo_w18_d2_S_ShiftReg' of component 'NN_fifo_w18_d2_S_ShiftReg' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:65]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_fifo_w18_d2_S_ShiftReg' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:176]\n", - "\tParameter DATA_WIDTH bound to: 18 - type: integer \n", - "\tParameter ADDR_WIDTH bound to: 2 - type: integer \n", - "\tParameter DEPTH bound to: 2 - type: integer \n", - "INFO: [Synth 8-256] done synthesizing module 'NN_fifo_w18_d2_S_ShiftReg' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:176]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_fifo_w18_d2_S' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:40]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w18_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:13' bound to instance 'layer3_out_1_U' of component 'NN_fifo_w18_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:438]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w18_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:13' bound to instance 'layer3_out_2_U' of component 'NN_fifo_w18_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:453]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w18_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w18_d2_S.vhd:13' bound to instance 'layer3_out_3_U' of component 'NN_fifo_w18_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:468]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w24_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:13' bound to instance 'layer4_out_U' of component 'NN_fifo_w24_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:483]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_fifo_w24_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:40]\n", - "\tParameter DATA_WIDTH bound to: 24 - type: integer \n", - "\tParameter ADDR_WIDTH bound to: 2 - type: integer \n", - "\tParameter DEPTH bound to: 2 - type: integer \n", - "INFO: [Synth 8-3491] module 'NN_fifo_w24_d2_S_ShiftReg' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:163' bound to instance 'U_NN_fifo_w24_d2_S_ShiftReg' of component 'NN_fifo_w24_d2_S_ShiftReg' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:65]\n", - "INFO: [Synth 8-638] synthesizing module 'NN_fifo_w24_d2_S_ShiftReg' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:176]\n", - "\tParameter DATA_WIDTH bound to: 24 - type: integer \n", - "\tParameter ADDR_WIDTH bound to: 2 - type: integer \n", - "\tParameter DEPTH bound to: 2 - type: integer \n", - "INFO: [Synth 8-256] done synthesizing module 'NN_fifo_w24_d2_S_ShiftReg' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:176]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN_fifo_w24_d2_S' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:40]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w24_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:13' bound to instance 'layer4_out_1_U' of component 'NN_fifo_w24_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:498]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w24_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:13' bound to instance 'layer4_out_2_U' of component 'NN_fifo_w24_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:513]\n", - "INFO: [Synth 8-3491] module 'NN_fifo_w24_d2_S' declared at '/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN_fifo_w24_d2_S.vhd:13' bound to instance 'layer4_out_3_U' of component 'NN_fifo_w24_d2_S' [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:528]\n", - "INFO: [Synth 8-256] done synthesizing module 'NN' (0#1) [/data/jcampos/XDR/ml-quantum-readout/hls4ml_projects/sl-100_ws-400_hn-4/NN_prj/solution1/syn/vhdl/NN.vhd:26]\n", - "WARNING: [Synth 8-7129] Port addr[1] in module NN_fifo_w24_d2_S_ShiftReg is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port addr[1] in module NN_fifo_w18_d2_S_ShiftReg is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port addr[1] in module NN_fifo_w19_d2_S_ShiftReg is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port ap_done_int in module NN_flow_control_loop_pipe_no_ap_cont is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port reset in module NN_mul_24s_6s_26_3_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[23] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[22] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[21] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[20] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[19] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[18] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[17] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[16] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[15] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[14] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[13] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[12] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[11] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[10] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[9] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[8] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[7] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[6] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[5] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[4] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[3] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[2] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[1] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port def[0] in module NN_sparsemux_9_2_24_1_1 is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port reset in module NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R is either unconnected or has no load\n", - "WARNING: [Synth 8-7129] Port reset in module NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb is either unconnected or has no load\n", - "---------------------------------------------------------------------------------\n", - "Finished Synthesize : Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 2030.828 ; gain = 468.246 ; free physical = 24522 ; free virtual = 102087\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Finished Constraint Validation : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 2048.641 ; gain = 486.059 ; free physical = 24511 ; free virtual = 102077\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Loading Part and Timing Information\n", - "---------------------------------------------------------------------------------\n", - "Loading part: xczu49dr-ffvf1760-2-e\n", - "INFO: [Synth 8-6742] Reading net delay rules and data\n", - "---------------------------------------------------------------------------------\n", - "INFO: [Device 21-403] Loading part xczu49dr-ffvf1760-2-e\n", - "Finished Loading Part and Timing Information : Time (s): cpu = 00:00:03 ; elapsed = 00:00:03 . Memory (MB): peak = 2059.613 ; gain = 497.031 ; free physical = 24507 ; free virtual = 102073\n", - "---------------------------------------------------------------------------------\n", - "INFO: [Synth 8-4490] FSM extraction disabled for register 'ap_CS_fsm_reg' through user attribute\n", - "INFO: [Synth 8-4490] FSM extraction disabled for register 'ap_CS_fsm_reg' through user attribute\n", - "INFO: [Synth 8-4490] FSM extraction disabled for register 'ap_CS_fsm_reg' through user attribute\n", - "INFO: [Synth 8-4490] FSM extraction disabled for register 'ap_CS_fsm_reg' through user attribute\n", - "INFO: [Synth 8-4490] FSM extraction disabled for register 'ap_CS_fsm_reg' through user attribute\n", - "---------------------------------------------------------------------------------\n", - "Finished RTL Optimization Phase 2 : Time (s): cpu = 00:00:05 ; elapsed = 00:00:04 . Memory (MB): peak = 2933.504 ; gain = 1370.922 ; free physical = 23641 ; free virtual = 101208\n", - "---------------------------------------------------------------------------------\n", - "No constraint files found.\n", - "---------------------------------------------------------------------------------\n", - "Start RTL Component Statistics \n", - "---------------------------------------------------------------------------------\n", - "Detailed RTL Component Info : \n", - "+---Adders : \n", - "\t 3 Input 22 Bit Adders := 4 \n", - "\t 5 Input 19 Bit Adders := 4 \n", - "\t 2 Input 18 Bit Adders := 16 \n", - "\t 2 Input 17 Bit Adders := 32 \n", - "\t 2 Input 14 Bit Adders := 5 \n", - "\t 2 Input 13 Bit Adders := 4 \n", - "\t 2 Input 12 Bit Adders := 5 \n", - "\t 3 Input 11 Bit Adders := 2 \n", - "\t 2 Input 10 Bit Adders := 2 \n", - "\t 2 Input 6 Bit Adders := 1 \n", - "\t 2 Input 3 Bit Adders := 24 \n", - "\t 2 Input 2 Bit Adders := 1 \n", - "+---XORs : \n", - "\t 2 Input 1 Bit XORs := 24 \n", - "+---Registers : \n", - "\t 11200 Bit Registers := 2 \n", - "\t 356 Bit Registers := 1 \n", - "\t 24 Bit Registers := 21 \n", - "\t 19 Bit Registers := 16 \n", - "\t 18 Bit Registers := 34 \n", - "\t 16 Bit Registers := 63 \n", - "\t 15 Bit Registers := 1 \n", - "\t 14 Bit Registers := 22 \n", - "\t 13 Bit Registers := 4 \n", - "\t 12 Bit Registers := 5 \n", - "\t 11 Bit Registers := 1 \n", - "\t 10 Bit Registers := 4 \n", - "\t 6 Bit Registers := 68 \n", - "\t 5 Bit Registers := 1 \n", - "\t 3 Bit Registers := 24 \n", - "\t 2 Bit Registers := 5 \n", - "\t 1 Bit Registers := 93 \n", - "+---ROMs : \n", - "\t ROMs := 1 \n", - "+---Muxes : \n", - "\t 2 Input 11200 Bit Muxes := 17 \n", - "\t 2 Input 24 Bit Muxes := 20 \n", - "\t 4 Input 24 Bit Muxes := 1 \n", - "\t 2 Input 19 Bit Muxes := 16 \n", - "\t 2 Input 18 Bit Muxes := 20 \n", - "\t 2 Input 13 Bit Muxes := 6 \n", - "\t 2 Input 12 Bit Muxes := 4 \n", - "\t 2 Input 11 Bit Muxes := 5 \n", - "\t 2 Input 10 Bit Muxes := 6 \n", - "\t 2 Input 6 Bit Muxes := 7 \n", - "\t 5 Input 6 Bit Muxes := 1 \n", - "\t 4 Input 2 Bit Muxes := 3 \n", - "\t 2 Input 2 Bit Muxes := 43 \n", - "\t 2 Input 1 Bit Muxes := 61 \n", - "---------------------------------------------------------------------------------\n", - "Finished RTL Component Statistics \n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Part Resource Summary\n", - "---------------------------------------------------------------------------------\n", - "Part Resources:\n", - "DSPs: 4272 (col length:192)\n", - "BRAMs: 2160 (col length: RAMB18 192 RAMB36 96)\n", - "---------------------------------------------------------------------------------\n", - "Finished Part Resource Summary\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Cross Boundary and Area Optimization\n", - "---------------------------------------------------------------------------------\n", - "DSP Report: Generating DSP dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/buff0_reg, operation Mode is: (A''*B'')'.\n", - "DSP Report: register dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/w_reg_349_reg is absorbed into DSP dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/buff0_reg.\n", - "DSP Report: register dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/b_reg_reg is absorbed into DSP dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/buff0_reg.\n", - "DSP Report: register dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/a_reg_344_reg is absorbed into DSP dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/buff0_reg.\n", - "DSP Report: register dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/a_reg_reg is absorbed into DSP dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/buff0_reg.\n", - "DSP Report: register dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/buff0_reg is absorbed into DSP dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/buff0_reg.\n", - "DSP Report: operator dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/tmp_product is absorbed into DSP dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/buff0_reg.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U2/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_1_reg_3629_reg is absorbed into DSP mul_14s_6s_20_1_1_U2/tmp_product.\n", - "DSP Report: register a_1_reg_3624_reg is absorbed into DSP mul_14s_6s_20_1_1_U2/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U2/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U2/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U1/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_reg_3619_reg is absorbed into DSP mul_14s_6s_20_1_1_U1/tmp_product.\n", - "DSP Report: register a_reg_3614_reg is absorbed into DSP mul_14s_6s_20_1_1_U1/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U1/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U1/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U4/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_3_reg_3649_reg is absorbed into DSP mul_14s_6s_20_1_1_U4/tmp_product.\n", - "DSP Report: register a_3_reg_3644_reg is absorbed into DSP mul_14s_6s_20_1_1_U4/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U4/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U4/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U3/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_2_reg_3639_reg is absorbed into DSP mul_14s_6s_20_1_1_U3/tmp_product.\n", - "DSP Report: register a_2_reg_3634_reg is absorbed into DSP mul_14s_6s_20_1_1_U3/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U3/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U3/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U10/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_9_reg_3709_reg is absorbed into DSP mul_14s_6s_20_1_1_U10/tmp_product.\n", - "DSP Report: register a_9_reg_3704_reg is absorbed into DSP mul_14s_6s_20_1_1_U10/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U10/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U10/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U9/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_8_reg_3699_reg is absorbed into DSP mul_14s_6s_20_1_1_U9/tmp_product.\n", - "DSP Report: register a_8_reg_3694_reg is absorbed into DSP mul_14s_6s_20_1_1_U9/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U9/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U9/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U12/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_11_reg_3729_reg is absorbed into DSP mul_14s_6s_20_1_1_U12/tmp_product.\n", - "DSP Report: register a_11_reg_3724_reg is absorbed into DSP mul_14s_6s_20_1_1_U12/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U12/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U12/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U11/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_10_reg_3719_reg is absorbed into DSP mul_14s_6s_20_1_1_U11/tmp_product.\n", - "DSP Report: register a_10_reg_3714_reg is absorbed into DSP mul_14s_6s_20_1_1_U11/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U11/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U11/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U6/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_5_reg_3669_reg is absorbed into DSP mul_14s_6s_20_1_1_U6/tmp_product.\n", - "DSP Report: register a_5_reg_3664_reg is absorbed into DSP mul_14s_6s_20_1_1_U6/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U6/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U6/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U5/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_4_reg_3659_reg is absorbed into DSP mul_14s_6s_20_1_1_U5/tmp_product.\n", - "DSP Report: register a_4_reg_3654_reg is absorbed into DSP mul_14s_6s_20_1_1_U5/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U5/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U5/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U8/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_7_reg_3689_reg is absorbed into DSP mul_14s_6s_20_1_1_U8/tmp_product.\n", - "DSP Report: register a_7_reg_3684_reg is absorbed into DSP mul_14s_6s_20_1_1_U8/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U8/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U8/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U7/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_6_reg_3679_reg is absorbed into DSP mul_14s_6s_20_1_1_U7/tmp_product.\n", - "DSP Report: register a_6_reg_3674_reg is absorbed into DSP mul_14s_6s_20_1_1_U7/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U7/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U7/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U14/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_13_reg_3749_reg is absorbed into DSP mul_14s_6s_20_1_1_U14/tmp_product.\n", - "DSP Report: register a_13_reg_3744_reg is absorbed into DSP mul_14s_6s_20_1_1_U14/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U14/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U14/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U13/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_12_reg_3739_reg is absorbed into DSP mul_14s_6s_20_1_1_U13/tmp_product.\n", - "DSP Report: register a_12_reg_3734_reg is absorbed into DSP mul_14s_6s_20_1_1_U13/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U13/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U13/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U16/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_15_reg_3770_reg is absorbed into DSP mul_14s_6s_20_1_1_U16/tmp_product.\n", - "DSP Report: register a_15_reg_3764_reg is absorbed into DSP mul_14s_6s_20_1_1_U16/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U16/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U16/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U15/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_14_reg_3759_reg is absorbed into DSP mul_14s_6s_20_1_1_U15/tmp_product.\n", - "DSP Report: register a_14_reg_3754_reg is absorbed into DSP mul_14s_6s_20_1_1_U15/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U15/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U15/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U18/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_17_reg_3780_reg is absorbed into DSP mul_14s_6s_20_1_1_U18/tmp_product.\n", - "DSP Report: register a_1_reg_3624_reg is absorbed into DSP mul_14s_6s_20_1_1_U18/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U18/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U18/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U17/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_16_reg_3775_reg is absorbed into DSP mul_14s_6s_20_1_1_U17/tmp_product.\n", - "DSP Report: register a_reg_3614_reg is absorbed into DSP mul_14s_6s_20_1_1_U17/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U17/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U17/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U20/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_19_reg_3790_reg is absorbed into DSP mul_14s_6s_20_1_1_U20/tmp_product.\n", - "DSP Report: register a_3_reg_3644_reg is absorbed into DSP mul_14s_6s_20_1_1_U20/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U20/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U20/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U19/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_18_reg_3785_reg is absorbed into DSP mul_14s_6s_20_1_1_U19/tmp_product.\n", - "DSP Report: register a_2_reg_3634_reg is absorbed into DSP mul_14s_6s_20_1_1_U19/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U19/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U19/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U26/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_25_reg_3820_reg is absorbed into DSP mul_14s_6s_20_1_1_U26/tmp_product.\n", - "DSP Report: register a_9_reg_3704_reg is absorbed into DSP mul_14s_6s_20_1_1_U26/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U26/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U26/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U25/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_24_reg_3815_reg is absorbed into DSP mul_14s_6s_20_1_1_U25/tmp_product.\n", - "DSP Report: register a_8_reg_3694_reg is absorbed into DSP mul_14s_6s_20_1_1_U25/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U25/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U25/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U28/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_27_reg_3830_reg is absorbed into DSP mul_14s_6s_20_1_1_U28/tmp_product.\n", - "DSP Report: register a_11_reg_3724_reg is absorbed into DSP mul_14s_6s_20_1_1_U28/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U28/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U28/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U27/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_26_reg_3825_reg is absorbed into DSP mul_14s_6s_20_1_1_U27/tmp_product.\n", - "DSP Report: register a_10_reg_3714_reg is absorbed into DSP mul_14s_6s_20_1_1_U27/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U27/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U27/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U22/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_21_reg_3800_reg is absorbed into DSP mul_14s_6s_20_1_1_U22/tmp_product.\n", - "DSP Report: register a_5_reg_3664_reg is absorbed into DSP mul_14s_6s_20_1_1_U22/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U22/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U22/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U21/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_20_reg_3795_reg is absorbed into DSP mul_14s_6s_20_1_1_U21/tmp_product.\n", - "DSP Report: register a_4_reg_3654_reg is absorbed into DSP mul_14s_6s_20_1_1_U21/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U21/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U21/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U24/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_23_reg_3810_reg is absorbed into DSP mul_14s_6s_20_1_1_U24/tmp_product.\n", - "DSP Report: register a_7_reg_3684_reg is absorbed into DSP mul_14s_6s_20_1_1_U24/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U24/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U24/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U23/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_22_reg_3805_reg is absorbed into DSP mul_14s_6s_20_1_1_U23/tmp_product.\n", - "DSP Report: register a_6_reg_3674_reg is absorbed into DSP mul_14s_6s_20_1_1_U23/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U23/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U23/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U30/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_29_reg_3840_reg is absorbed into DSP mul_14s_6s_20_1_1_U30/tmp_product.\n", - "DSP Report: register a_13_reg_3744_reg is absorbed into DSP mul_14s_6s_20_1_1_U30/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U30/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U30/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U29/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_28_reg_3835_reg is absorbed into DSP mul_14s_6s_20_1_1_U29/tmp_product.\n", - "DSP Report: register a_12_reg_3734_reg is absorbed into DSP mul_14s_6s_20_1_1_U29/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U29/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U29/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U32/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_31_reg_3850_reg is absorbed into DSP mul_14s_6s_20_1_1_U32/tmp_product.\n", - "DSP Report: register a_15_reg_3764_reg is absorbed into DSP mul_14s_6s_20_1_1_U32/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U32/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U32/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U31/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_30_reg_3845_reg is absorbed into DSP mul_14s_6s_20_1_1_U31/tmp_product.\n", - "DSP Report: register a_14_reg_3754_reg is absorbed into DSP mul_14s_6s_20_1_1_U31/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U31/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U31/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U34/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_33_reg_3860_reg is absorbed into DSP mul_14s_6s_20_1_1_U34/tmp_product.\n", - "DSP Report: register a_1_reg_3624_reg is absorbed into DSP mul_14s_6s_20_1_1_U34/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U34/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U34/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U33/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_32_reg_3855_reg is absorbed into DSP mul_14s_6s_20_1_1_U33/tmp_product.\n", - "DSP Report: register a_reg_3614_reg is absorbed into DSP mul_14s_6s_20_1_1_U33/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U33/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U33/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U36/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_35_reg_3870_reg is absorbed into DSP mul_14s_6s_20_1_1_U36/tmp_product.\n", - "DSP Report: register a_3_reg_3644_reg is absorbed into DSP mul_14s_6s_20_1_1_U36/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U36/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U36/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U35/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_34_reg_3865_reg is absorbed into DSP mul_14s_6s_20_1_1_U35/tmp_product.\n", - "DSP Report: register a_2_reg_3634_reg is absorbed into DSP mul_14s_6s_20_1_1_U35/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U35/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U35/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U42/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_41_reg_3900_reg is absorbed into DSP mul_14s_6s_20_1_1_U42/tmp_product.\n", - "DSP Report: register a_9_reg_3704_reg is absorbed into DSP mul_14s_6s_20_1_1_U42/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U42/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U42/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U41/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_40_reg_3895_reg is absorbed into DSP mul_14s_6s_20_1_1_U41/tmp_product.\n", - "DSP Report: register a_8_reg_3694_reg is absorbed into DSP mul_14s_6s_20_1_1_U41/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U41/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U41/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U44/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_43_reg_3910_reg is absorbed into DSP mul_14s_6s_20_1_1_U44/tmp_product.\n", - "DSP Report: register a_11_reg_3724_reg is absorbed into DSP mul_14s_6s_20_1_1_U44/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U44/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U44/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U43/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_42_reg_3905_reg is absorbed into DSP mul_14s_6s_20_1_1_U43/tmp_product.\n", - "DSP Report: register a_10_reg_3714_reg is absorbed into DSP mul_14s_6s_20_1_1_U43/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U43/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U43/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U38/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_37_reg_3880_reg is absorbed into DSP mul_14s_6s_20_1_1_U38/tmp_product.\n", - "DSP Report: register a_5_reg_3664_reg is absorbed into DSP mul_14s_6s_20_1_1_U38/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U38/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U38/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U37/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_36_reg_3875_reg is absorbed into DSP mul_14s_6s_20_1_1_U37/tmp_product.\n", - "DSP Report: register a_4_reg_3654_reg is absorbed into DSP mul_14s_6s_20_1_1_U37/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U37/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U37/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U40/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_39_reg_3890_reg is absorbed into DSP mul_14s_6s_20_1_1_U40/tmp_product.\n", - "DSP Report: register a_7_reg_3684_reg is absorbed into DSP mul_14s_6s_20_1_1_U40/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U40/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U40/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U39/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_38_reg_3885_reg is absorbed into DSP mul_14s_6s_20_1_1_U39/tmp_product.\n", - "DSP Report: register a_6_reg_3674_reg is absorbed into DSP mul_14s_6s_20_1_1_U39/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U39/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U39/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U46/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_45_reg_3920_reg is absorbed into DSP mul_14s_6s_20_1_1_U46/tmp_product.\n", - "DSP Report: register a_13_reg_3744_reg is absorbed into DSP mul_14s_6s_20_1_1_U46/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U46/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U46/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U45/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_44_reg_3915_reg is absorbed into DSP mul_14s_6s_20_1_1_U45/tmp_product.\n", - "DSP Report: register a_12_reg_3734_reg is absorbed into DSP mul_14s_6s_20_1_1_U45/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U45/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U45/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U48/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_47_reg_3930_reg is absorbed into DSP mul_14s_6s_20_1_1_U48/tmp_product.\n", - "DSP Report: register a_15_reg_3764_reg is absorbed into DSP mul_14s_6s_20_1_1_U48/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U48/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U48/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U47/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_46_reg_3925_reg is absorbed into DSP mul_14s_6s_20_1_1_U47/tmp_product.\n", - "DSP Report: register a_14_reg_3754_reg is absorbed into DSP mul_14s_6s_20_1_1_U47/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U47/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U47/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U50/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_49_reg_3940_reg is absorbed into DSP mul_14s_6s_20_1_1_U50/tmp_product.\n", - "DSP Report: register a_1_reg_3624_reg is absorbed into DSP mul_14s_6s_20_1_1_U50/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U50/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U50/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U49/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_48_reg_3935_reg is absorbed into DSP mul_14s_6s_20_1_1_U49/tmp_product.\n", - "DSP Report: register a_reg_3614_reg is absorbed into DSP mul_14s_6s_20_1_1_U49/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U49/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U49/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U52/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_51_reg_3950_reg is absorbed into DSP mul_14s_6s_20_1_1_U52/tmp_product.\n", - "DSP Report: register a_3_reg_3644_reg is absorbed into DSP mul_14s_6s_20_1_1_U52/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U52/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U52/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U51/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_50_reg_3945_reg is absorbed into DSP mul_14s_6s_20_1_1_U51/tmp_product.\n", - "DSP Report: register a_2_reg_3634_reg is absorbed into DSP mul_14s_6s_20_1_1_U51/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U51/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U51/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U58/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_57_reg_3980_reg is absorbed into DSP mul_14s_6s_20_1_1_U58/tmp_product.\n", - "DSP Report: register a_9_reg_3704_reg is absorbed into DSP mul_14s_6s_20_1_1_U58/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U58/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U58/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U57/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_56_reg_3975_reg is absorbed into DSP mul_14s_6s_20_1_1_U57/tmp_product.\n", - "DSP Report: register a_8_reg_3694_reg is absorbed into DSP mul_14s_6s_20_1_1_U57/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U57/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U57/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U60/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_59_reg_3990_reg is absorbed into DSP mul_14s_6s_20_1_1_U60/tmp_product.\n", - "DSP Report: register a_11_reg_3724_reg is absorbed into DSP mul_14s_6s_20_1_1_U60/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U60/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U60/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U59/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_58_reg_3985_reg is absorbed into DSP mul_14s_6s_20_1_1_U59/tmp_product.\n", - "DSP Report: register a_10_reg_3714_reg is absorbed into DSP mul_14s_6s_20_1_1_U59/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U59/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U59/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U54/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_53_reg_3960_reg is absorbed into DSP mul_14s_6s_20_1_1_U54/tmp_product.\n", - "DSP Report: register a_5_reg_3664_reg is absorbed into DSP mul_14s_6s_20_1_1_U54/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U54/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U54/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U53/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_52_reg_3955_reg is absorbed into DSP mul_14s_6s_20_1_1_U53/tmp_product.\n", - "DSP Report: register a_4_reg_3654_reg is absorbed into DSP mul_14s_6s_20_1_1_U53/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U53/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U53/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U56/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_55_reg_3970_reg is absorbed into DSP mul_14s_6s_20_1_1_U56/tmp_product.\n", - "DSP Report: register a_7_reg_3684_reg is absorbed into DSP mul_14s_6s_20_1_1_U56/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U56/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U56/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U55/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_54_reg_3965_reg is absorbed into DSP mul_14s_6s_20_1_1_U55/tmp_product.\n", - "DSP Report: register a_6_reg_3674_reg is absorbed into DSP mul_14s_6s_20_1_1_U55/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U55/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U55/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U62/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_61_reg_4000_reg is absorbed into DSP mul_14s_6s_20_1_1_U62/tmp_product.\n", - "DSP Report: register a_13_reg_3744_reg is absorbed into DSP mul_14s_6s_20_1_1_U62/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U62/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U62/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U61/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_60_reg_3995_reg is absorbed into DSP mul_14s_6s_20_1_1_U61/tmp_product.\n", - "DSP Report: register a_12_reg_3734_reg is absorbed into DSP mul_14s_6s_20_1_1_U61/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U61/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U61/tmp_product.\n", - "DSP Report: Generating DSP mul_14s_6s_20_1_1_U63/tmp_product, operation Mode is: A2*B2.\n", - "DSP Report: register w_62_reg_4005_reg is absorbed into DSP mul_14s_6s_20_1_1_U63/tmp_product.\n", - "DSP Report: register a_14_reg_3754_reg is absorbed into DSP mul_14s_6s_20_1_1_U63/tmp_product.\n", - "DSP Report: operator mul_14s_6s_20_1_1_U63/tmp_product is absorbed into DSP mul_14s_6s_20_1_1_U63/tmp_product.\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_10_reg_3580_reg[12]' (FDE) to 'add_ln56_10_reg_3580_reg[11]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_10_reg_3580_reg[2]' (FDE) to 'add_ln56_14_reg_3600_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_10_reg_3580_reg[1]' (FDE) to 'add_ln56_13_reg_3595_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_13_reg_3595_reg[1]' (FDE) to 'add_ln56_14_reg_3600_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_13_reg_3595_reg[2]' (FDE) to 'add_ln56_11_reg_3585_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_13_reg_3595_reg[3]' (FDE) to 'add_ln56_5_reg_3555_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_13_reg_3595_reg[12]' (FDE) to 'add_ln56_14_reg_3600_reg[12]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_13_reg_3595_reg[13]' (FDE) to 'add_ln56_14_reg_3600_reg[13]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_14_reg_3600_reg[1]' (FDE) to 'add_ln56_11_reg_3585_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_14_reg_3600_reg[2]' (FDE) to 'add_ln56_12_reg_3590_reg[2]'\n", - "INFO: [Synth 8-3333] propagating constant 0 across sequential element (\\add_ln56_14_reg_3600_reg[12] )\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_14_reg_3600_reg[13]' (FDE) to 'add_ln56_7_reg_3565_reg[12]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_11_reg_3585_reg[1]' (FDE) to 'add_ln56_12_reg_3590_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_11_reg_3585_reg[2]' (FDE) to 'add_ln56_5_reg_3555_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_11_reg_3585_reg[3]' (FDE) to 'add_ln56_3_reg_3545_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_11_reg_3585_reg[4]' (FDE) to 'add_ln56_3_reg_3545_reg[4]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_11_reg_3585_reg[11]' (FDE) to 'add_ln56_11_reg_3585_reg[12]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_12_reg_3590_reg[1]' (FDE) to 'add_ln56_5_reg_3555_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_12_reg_3590_reg[2]' (FDE) to 'add_ln56_6_reg_3560_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_12_reg_3590_reg[11]' (FDE) to 'add_ln56_12_reg_3590_reg[12]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_5_reg_3555_reg[1]' (FDE) to 'add_ln56_6_reg_3560_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_5_reg_3555_reg[2]' (FDE) to 'add_ln56_3_reg_3545_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_5_reg_3555_reg[3]' (FDE) to 'add_ln56_9_reg_3575_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_6_reg_3560_reg[1]' (FDE) to 'add_ln56_3_reg_3545_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_6_reg_3560_reg[2]' (FDE) to 'add_ln56_4_reg_3550_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_3_reg_3545_reg[1]' (FDE) to 'add_ln56_4_reg_3550_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_3_reg_3545_reg[2]' (FDE) to 'add_ln56_9_reg_3575_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_3_reg_3545_reg[3]' (FDE) to 'add_ln56_7_reg_3565_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_4_reg_3550_reg[1]' (FDE) to 'add_ln56_9_reg_3575_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_4_reg_3550_reg[2]' (FDE) to 'add_ln56_8_reg_3570_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_9_reg_3575_reg[1]' (FDE) to 'add_ln56_7_reg_3565_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_9_reg_3575_reg[2]' (FDE) to 'add_ln56_7_reg_3565_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_9_reg_3575_reg[3]' (FDE) to 'add_ln56_1_reg_3535_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_7_reg_3565_reg[1]' (FDE) to 'add_ln56_8_reg_3570_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_7_reg_3565_reg[2]' (FDE) to 'add_ln56_1_reg_3535_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_7_reg_3565_reg[3]' (FDE) to 'sub_ln56_cast3_reg_3520_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_7_reg_3565_reg[4]' (FDE) to 'sub_ln56_cast3_reg_3520_reg[4]'\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_7_reg_3565_reg[12] )\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_8_reg_3570_reg[1]' (FDE) to 'add_ln56_1_reg_3535_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_8_reg_3570_reg[2]' (FDE) to 'add_ln56_2_reg_3540_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_1_reg_3535_reg[1]' (FDE) to 'add_ln56_2_reg_3540_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_1_reg_3535_reg[2]' (FDE) to 'sub_ln56_cast3_reg_3520_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_2_reg_3540_reg[1]' (FDE) to 'sub_ln56_cast3_reg_3520_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'sub_ln56_cast3_reg_3520_reg[1]' (FDE) to 'add_ln56_reg_3530_reg[1]'\n", - "INFO: [Synth 8-3886] merging instance 'sub_ln56_cast3_reg_3520_reg[10]' (FDE) to 'sub_ln56_cast3_reg_3520_reg[11]'\n", - "INFO: [Synth 8-3886] merging instance 'sub_ln56_cast3_reg_3520_reg[11]' (FDE) to 'sub_ln56_cast3_reg_3520_reg[12]'\n", - "INFO: [Synth 8-3886] merging instance 'sub_ln56_cast3_reg_3520_reg[12]' (FDE) to 'sub_ln56_cast3_reg_3520_reg[13]'\n", - "INFO: [Synth 8-3333] propagating constant 0 across sequential element (ap_done_reg_reg)\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\ap_CS_fsm_reg[0] )\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_10_reg_3580_reg[4]' (FDE) to 'add_ln56_2_reg_3540_reg[4]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_10_reg_3580_reg[3]' (FDE) to 'add_ln56_14_reg_3600_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_13_reg_3595_reg[4]' (FDE) to 'add_ln56_5_reg_3555_reg[4]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_14_reg_3600_reg[3]' (FDE) to 'add_ln56_6_reg_3560_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_14_reg_3600_reg[4]' (FDE) to 'add_ln56_6_reg_3560_reg[4]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_12_reg_3590_reg[3]' (FDE) to 'add_ln56_4_reg_3550_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_12_reg_3590_reg[4]' (FDE) to 'add_ln56_4_reg_3550_reg[4]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_6_reg_3560_reg[3]' (FDE) to 'add_ln56_2_reg_3540_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_4_reg_3550_reg[3]' (FDE) to 'add_ln56_8_reg_3570_reg[3]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_9_reg_3575_reg[4]' (FDE) to 'add_ln56_1_reg_3535_reg[4]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_2_reg_3540_reg[2]' (FDE) to 'add_ln56_reg_3530_reg[2]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_10_reg_3580_reg[11]' (FDE) to 'add_ln56_10_reg_3580_reg[10]'\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_10_reg_3580_reg[10]' (FDE) to 'add_ln56_10_reg_3580_reg[9]'\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_14_reg_3600_reg[11] )\n", - "INFO: [Synth 8-3333] propagating constant 0 across sequential element (\\add_ln56_11_reg_3585_reg[12] )\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_11_reg_3585_reg[13] )\n", - "INFO: [Synth 8-3333] propagating constant 0 across sequential element (\\add_ln56_12_reg_3590_reg[12] )\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_12_reg_3590_reg[13] )\n", - "INFO: [Synth 8-3333] propagating constant 0 across sequential element (\\add_ln56_5_reg_3555_reg[10] )\n", - "INFO: [Synth 8-3333] propagating constant 0 across sequential element (\\add_ln56_5_reg_3555_reg[11] )\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_5_reg_3555_reg[12] )\n", - "INFO: [Synth 8-3333] propagating constant 0 across sequential element (\\add_ln56_6_reg_3560_reg[11] )\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_6_reg_3560_reg[12] )\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_3_reg_3545_reg[11] )\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_4_reg_3550_reg[10]' (FDE) to 'add_ln56_4_reg_3550_reg[11]'\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_9_reg_3575_reg[11] )\n", - "INFO: [Synth 8-3886] merging instance 'add_ln56_8_reg_3570_reg[3]' (FDE) to 'add_ln56_reg_3530_reg[3]'\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_8_reg_3570_reg[11] )\n", - "INFO: [Synth 8-3333] propagating constant 0 across sequential element (\\add_ln56_2_reg_3540_reg[10] )\n", - "INFO: [Synth 8-3333] propagating constant 1 across sequential element (\\add_ln56_2_reg_3540_reg[11] )\n", - "INFO: [Synth 8-3333] propagating constant 0 across sequential element (\\sub_ln56_cast3_reg_3520_reg[13] )\n", - "---------------------------------------------------------------------------------\n", - "Finished Cross Boundary and Area Optimization : Time (s): cpu = 00:00:20 ; elapsed = 00:00:34 . Memory (MB): peak = 3300.062 ; gain = 1737.480 ; free physical = 14967 ; free virtual = 92589\n", - "---------------------------------------------------------------------------------\n", - " Sort Area is NN__GC0 dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/mul_24s_6s_26_3_1_U79/buff0_reg_0 : 0 0 : 927 927 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U1/tmp_product_f : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U10/tmp_product_c : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U11/tmp_product_9 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U12/tmp_product_a : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U13/tmp_product_3 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U14/tmp_product_4 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U15/tmp_product_0 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U16/tmp_product_2 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U17/tmp_product_1f : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U18/tmp_product_20 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U19/tmp_product_1d : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U2/tmp_product_10 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U20/tmp_product_1e : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U21/tmp_product_17 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U22/tmp_product_18 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U23/tmp_product_15 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U24/tmp_product_16 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U25/tmp_product_1b : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U26/tmp_product_1c : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U27/tmp_product_19 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U28/tmp_product_1a : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U29/tmp_product_13 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U3/tmp_product_d : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U30/tmp_product_14 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U31/tmp_product_11 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U32/tmp_product_12 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U33/tmp_product_2f : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U34/tmp_product_30 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U35/tmp_product_2d : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U36/tmp_product_2e : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U37/tmp_product_27 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U38/tmp_product_28 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U39/tmp_product_25 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U4/tmp_product_e : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U40/tmp_product_26 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U41/tmp_product_2b : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U42/tmp_product_2c : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U43/tmp_product_29 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U44/tmp_product_2a : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U45/tmp_product_23 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U46/tmp_product_24 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U47/tmp_product_21 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U48/tmp_product_22 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U49/tmp_product_3e : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U5/tmp_product_7 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U50/tmp_product_3f : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U51/tmp_product_3c : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U52/tmp_product_3d : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U53/tmp_product_36 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U54/tmp_product_37 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U55/tmp_product_34 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U56/tmp_product_35 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U57/tmp_product_3a : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U58/tmp_product_3b : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U59/tmp_product_38 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U6/tmp_product_8 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U60/tmp_product_39 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U61/tmp_product_32 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U62/tmp_product_33 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U63/tmp_product_31 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U7/tmp_product_5 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U8/tmp_product_6 : 0 0 : 521 521 : Used 1 time 0\n", - " Sort Area is NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 mul_14s_6s_20_1_1_U9/tmp_product_b : 0 0 : 521 521 : Used 1 time 0\n", - "---------------------------------------------------------------------------------\n", - "Start ROM, RAM, DSP, Shift Register and Retiming Reporting\n", - "---------------------------------------------------------------------------------\n", - "\n", - "DSP: Preliminary Mapping Report (see note below. The ' indicates corresponding REG is set)\n", - "+--------------------------------------------------------------------------+-------------+--------+--------+--------+--------+--------+------+------+------+------+-------+------+------+\n", - "|Module Name | DSP Mapping | A Size | B Size | C Size | D Size | P Size | AREG | BREG | CREG | DREG | ADREG | MREG | PREG | \n", - "+--------------------------------------------------------------------------+-------------+--------+--------+--------+--------+--------+------+------+------+------+-------+------+------+\n", - "|NN | (A''*B'')' | 24 | 6 | - | - | 30 | 2 | 2 | - | - | - | 1 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | A2*B2 | 14 | 6 | - | - | 20 | 1 | 1 | - | - | - | 0 | 0 | \n", - "+--------------------------------------------------------------------------+-------------+--------+--------+--------+--------+--------+------+------+------+------+-------+------+------+\n", - "\n", - "Note: The table above is a preliminary report that shows the DSPs inferred at the current stage of the synthesis flow. Some DSP may be reimplemented as non DSP primitives later in the synthesis flow. Multiple instantiated DSPs are reported only once.\n", - "---------------------------------------------------------------------------------\n", - "Finished ROM, RAM, DSP, Shift Register and Retiming Reporting\n", - "---------------------------------------------------------------------------------\n", - "No constraint files found.\n", - "---------------------------------------------------------------------------------\n", - "Start Timing Optimization\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Finished Timing Optimization : Time (s): cpu = 00:00:24 ; elapsed = 00:00:38 . Memory (MB): peak = 3306.562 ; gain = 1743.980 ; free physical = 14821 ; free virtual = 92553\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Technology Mapping\n", - "---------------------------------------------------------------------------------\n", - "INFO: [Synth 8-3886] merging instance 'grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/add_ln56_13_reg_3595_reg[9]' (FDE) to 'grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/add_ln56_13_reg_3595_reg[10]'\n", - "INFO: [Synth 8-3886] merging instance 'grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/add_ln56_8_reg_3570_reg[4]' (FDE) to 'grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/add_ln56_reg_3530_reg[4]'\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_0 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_0 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_1 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_1 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_2 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_2 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_3 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_3 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_4 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14i_7/dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_4 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "---------------------------------------------------------------------------------\n", - "Finished Technology Mapping : Time (s): cpu = 00:00:27 ; elapsed = 00:00:41 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 14606 ; free virtual = 92428\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start IO Insertion\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Flattening Before IO Insertion\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Finished Flattening Before IO Insertion\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Final Netlist Cleanup\n", - "---------------------------------------------------------------------------------\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_0 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_0 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_1 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_1 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_2 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_2 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_3 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_3 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_4 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "INFO: [Synth 8-7052] The timing for the instance dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_4 (implemented as a Block RAM) might be sub-optimal as no optional output register could be merged into the ram block. Providing additional output register may help in improving timing.\n", - "---------------------------------------------------------------------------------\n", - "Finished Final Netlist Cleanup\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Finished IO Insertion : Time (s): cpu = 00:00:31 ; elapsed = 00:00:46 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 14423 ; free virtual = 92427\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Renaming Generated Instances\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Finished Renaming Generated Instances : Time (s): cpu = 00:00:32 ; elapsed = 00:00:46 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 14420 ; free virtual = 92425\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Rebuilding User Hierarchy\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Finished Rebuilding User Hierarchy : Time (s): cpu = 00:00:33 ; elapsed = 00:00:48 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 14443 ; free virtual = 92449\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Renaming Generated Ports\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Finished Renaming Generated Ports : Time (s): cpu = 00:00:33 ; elapsed = 00:00:48 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 14449 ; free virtual = 92454\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Handling Custom Attributes\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Finished Handling Custom Attributes : Time (s): cpu = 00:00:34 ; elapsed = 00:00:48 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 14458 ; free virtual = 92463\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Renaming Generated Nets\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Finished Renaming Generated Nets : Time (s): cpu = 00:00:34 ; elapsed = 00:00:48 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 14458 ; free virtual = 92463\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start ROM, RAM, DSP, Shift Register and Retiming Reporting\n", - "---------------------------------------------------------------------------------\n", - "\n", - "Static Shift Register Report:\n", - "+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+-------+--------------+--------------------+-------------------+--------+---------+\n", - "|Module Name | RTL Name | Length | Width | Reset Signal | Pull out first Reg | Pull out last Reg | SRL16E | SRLC32E | \n", - "+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+-------+--------------+--------------------+-------------------+--------+---------+\n", - "|NN | dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/icmp_ln43_reg_3610_pp0_iter3_reg_reg[0] | 3 | 1 | NO | NO | YES | 1 | 0 | \n", - "|NN | dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/ap_loop_init_pp0_iter4_reg_reg | 4 | 1 | NO | NO | YES | 1 | 0 | \n", - "|NN | dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/ap_loop_exit_ready_pp0_iter4_reg_reg | 4 | 1 | NO | NO | YES | 1 | 0 | \n", - "|NN | dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/icmp_ln43_reg_340_pp0_iter4_reg_reg[0] | 4 | 1 | NO | NO | YES | 1 | 0 | \n", - "|NN | dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/ap_loop_init_pp0_iter5_reg_reg | 5 | 1 | NO | NO | YES | 1 | 0 | \n", - "|NN | dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49/ap_loop_exit_ready_pp0_iter5_reg_reg | 5 | 1 | NO | NO | YES | 1 | 0 | \n", - "+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+-------+--------------+--------------------+-------------------+--------+---------+\n", - "\n", - "---------------------------------------------------------------------------------\n", - "Finished ROM, RAM, DSP, Shift Register and Retiming Reporting\n", - "---------------------------------------------------------------------------------\n", - "---------------------------------------------------------------------------------\n", - "Start Writing Synthesis Report\n", - "---------------------------------------------------------------------------------\n", - "\n", - "DSP Final Report (the ' indicates corresponding REG is set)\n", - "+--------------------------------------------------------------------------+---------------+--------+--------+--------+--------+--------+------+------+------+------+-------+------+------+\n", - "|Module Name | DSP Mapping | A Size | B Size | C Size | D Size | P Size | AREG | BREG | CREG | DREG | ADREG | MREG | PREG | \n", - "+--------------------------------------------------------------------------+---------------+--------+--------+--------+--------+--------+------+------+------+------+-------+------+------+\n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s__GB5 | (A'*B')' | 30 | 18 | - | - | 20 | 1 | 1 | - | - | - | 0 | 1 | \n", - "|NN | ((A''*B'')')' | 30 | 18 | - | - | 26 | 2 | 2 | - | - | - | 1 | 1 | \n", - "+--------------------------------------------------------------------------+---------------+--------+--------+--------+--------+--------+------+------+------+------+-------+------+------+\n", - "\n", - "\n", - "Report BlackBoxes: \n", - "+-+--------------+----------+\n", - "| |BlackBox name |Instances |\n", - "+-+--------------+----------+\n", - "+-+--------------+----------+\n", - "\n", - "Report Cell Usage: \n", - "+------+---------+------+\n", - "| |Cell |Count |\n", - "+------+---------+------+\n", - "|1 |BUFG | 1|\n", - "|2 |CARRY8 | 200|\n", - "|3 |DSP48E2 | 64|\n", - "|4 |LUT1 | 52|\n", - "|5 |LUT2 | 918|\n", - "|6 |LUT3 | 11699|\n", - "|7 |LUT4 | 1058|\n", - "|8 |LUT5 | 4401|\n", - "|9 |LUT6 | 19252|\n", - "|10 |MUXF7 | 10228|\n", - "|11 |MUXF8 | 4880|\n", - "|12 |RAMB36E2 | 5|\n", - "|13 |SRL16E | 6|\n", - "|14 |FDRE | 24319|\n", - "|15 |FDSE | 134|\n", - "|16 |IBUF | 11204|\n", - "|17 |OBUF | 14|\n", - "+------+---------+------+\n", - "\n", - "Report Instance Areas: \n", - "+------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------+------+\n", - "| |Instance |Module |Cells |\n", - "+------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------+------+\n", - "|1 |top | | 88435|\n", - "|2 | dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0 |NN_dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s | 75175|\n", - "|3 | grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14 |NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s | 75170|\n", - "|4 | flow_control_loop_pipe_no_ap_cont_U |NN_flow_control_loop_pipe_no_ap_cont_18 | 515|\n", - "|5 | mul_14s_5s_19_1_1_U64 |NN_mul_14s_5s_19_1_1 | 77|\n", - "|6 | mul_14s_6s_20_1_1_U1 |NN_mul_14s_6s_20_1_1 | 21|\n", - "|7 | mul_14s_6s_20_1_1_U10 |NN_mul_14s_6s_20_1_1_19 | 1|\n", - "|8 | mul_14s_6s_20_1_1_U11 |NN_mul_14s_6s_20_1_1_20 | 41|\n", - "|9 | mul_14s_6s_20_1_1_U12 |NN_mul_14s_6s_20_1_1_21 | 1|\n", - "|10 | mul_14s_6s_20_1_1_U13 |NN_mul_14s_6s_20_1_1_22 | 21|\n", - "|11 | mul_14s_6s_20_1_1_U14 |NN_mul_14s_6s_20_1_1_23 | 1|\n", - "|12 | mul_14s_6s_20_1_1_U15 |NN_mul_14s_6s_20_1_1_24 | 41|\n", - "|13 | mul_14s_6s_20_1_1_U16 |NN_mul_14s_6s_20_1_1_25 | 1|\n", - "|14 | mul_14s_6s_20_1_1_U17 |NN_mul_14s_6s_20_1_1_26 | 21|\n", - "|15 | mul_14s_6s_20_1_1_U18 |NN_mul_14s_6s_20_1_1_27 | 1|\n", - "|16 | mul_14s_6s_20_1_1_U19 |NN_mul_14s_6s_20_1_1_28 | 41|\n", - "|17 | mul_14s_6s_20_1_1_U2 |NN_mul_14s_6s_20_1_1_29 | 1|\n", - "|18 | mul_14s_6s_20_1_1_U20 |NN_mul_14s_6s_20_1_1_30 | 1|\n", - "|19 | mul_14s_6s_20_1_1_U21 |NN_mul_14s_6s_20_1_1_31 | 21|\n", - "|20 | mul_14s_6s_20_1_1_U22 |NN_mul_14s_6s_20_1_1_32 | 1|\n", - "|21 | mul_14s_6s_20_1_1_U23 |NN_mul_14s_6s_20_1_1_33 | 41|\n", - "|22 | mul_14s_6s_20_1_1_U24 |NN_mul_14s_6s_20_1_1_34 | 1|\n", - "|23 | mul_14s_6s_20_1_1_U25 |NN_mul_14s_6s_20_1_1_35 | 21|\n", - "|24 | mul_14s_6s_20_1_1_U26 |NN_mul_14s_6s_20_1_1_36 | 1|\n", - "|25 | mul_14s_6s_20_1_1_U27 |NN_mul_14s_6s_20_1_1_37 | 41|\n", - "|26 | mul_14s_6s_20_1_1_U28 |NN_mul_14s_6s_20_1_1_38 | 1|\n", - "|27 | mul_14s_6s_20_1_1_U29 |NN_mul_14s_6s_20_1_1_39 | 21|\n", - "|28 | mul_14s_6s_20_1_1_U3 |NN_mul_14s_6s_20_1_1_40 | 41|\n", - "|29 | mul_14s_6s_20_1_1_U30 |NN_mul_14s_6s_20_1_1_41 | 1|\n", - "|30 | mul_14s_6s_20_1_1_U31 |NN_mul_14s_6s_20_1_1_42 | 41|\n", - "|31 | mul_14s_6s_20_1_1_U32 |NN_mul_14s_6s_20_1_1_43 | 1|\n", - "|32 | mul_14s_6s_20_1_1_U33 |NN_mul_14s_6s_20_1_1_44 | 21|\n", - "|33 | mul_14s_6s_20_1_1_U34 |NN_mul_14s_6s_20_1_1_45 | 1|\n", - "|34 | mul_14s_6s_20_1_1_U35 |NN_mul_14s_6s_20_1_1_46 | 41|\n", - "|35 | mul_14s_6s_20_1_1_U36 |NN_mul_14s_6s_20_1_1_47 | 1|\n", - "|36 | mul_14s_6s_20_1_1_U37 |NN_mul_14s_6s_20_1_1_48 | 21|\n", - "|37 | mul_14s_6s_20_1_1_U38 |NN_mul_14s_6s_20_1_1_49 | 1|\n", - "|38 | mul_14s_6s_20_1_1_U39 |NN_mul_14s_6s_20_1_1_50 | 41|\n", - "|39 | mul_14s_6s_20_1_1_U4 |NN_mul_14s_6s_20_1_1_51 | 1|\n", - "|40 | mul_14s_6s_20_1_1_U40 |NN_mul_14s_6s_20_1_1_52 | 1|\n", - "|41 | mul_14s_6s_20_1_1_U41 |NN_mul_14s_6s_20_1_1_53 | 21|\n", - "|42 | mul_14s_6s_20_1_1_U42 |NN_mul_14s_6s_20_1_1_54 | 1|\n", - "|43 | mul_14s_6s_20_1_1_U43 |NN_mul_14s_6s_20_1_1_55 | 41|\n", - "|44 | mul_14s_6s_20_1_1_U44 |NN_mul_14s_6s_20_1_1_56 | 1|\n", - "|45 | mul_14s_6s_20_1_1_U45 |NN_mul_14s_6s_20_1_1_57 | 21|\n", - "|46 | mul_14s_6s_20_1_1_U46 |NN_mul_14s_6s_20_1_1_58 | 1|\n", - "|47 | mul_14s_6s_20_1_1_U47 |NN_mul_14s_6s_20_1_1_59 | 41|\n", - "|48 | mul_14s_6s_20_1_1_U48 |NN_mul_14s_6s_20_1_1_60 | 1731|\n", - "|49 | mul_14s_6s_20_1_1_U49 |NN_mul_14s_6s_20_1_1_61 | 1591|\n", - "|50 | mul_14s_6s_20_1_1_U5 |NN_mul_14s_6s_20_1_1_62 | 21|\n", - "|51 | mul_14s_6s_20_1_1_U50 |NN_mul_14s_6s_20_1_1_63 | 1975|\n", - "|52 | mul_14s_6s_20_1_1_U51 |NN_mul_14s_6s_20_1_1_64 | 3883|\n", - "|53 | mul_14s_6s_20_1_1_U52 |NN_mul_14s_6s_20_1_1_65 | 975|\n", - "|54 | mul_14s_6s_20_1_1_U53 |NN_mul_14s_6s_20_1_1_66 | 1995|\n", - "|55 | mul_14s_6s_20_1_1_U54 |NN_mul_14s_6s_20_1_1_67 | 7643|\n", - "|56 | mul_14s_6s_20_1_1_U55 |NN_mul_14s_6s_20_1_1_68 | 1015|\n", - "|57 | mul_14s_6s_20_1_1_U56 |NN_mul_14s_6s_20_1_1_69 | 1975|\n", - "|58 | mul_14s_6s_20_1_1_U57 |NN_mul_14s_6s_20_1_1_70 | 3863|\n", - "|59 | mul_14s_6s_20_1_1_U58 |NN_mul_14s_6s_20_1_1_71 | 1975|\n", - "|60 | mul_14s_6s_20_1_1_U59 |NN_mul_14s_6s_20_1_1_72 | 1135|\n", - "|61 | mul_14s_6s_20_1_1_U6 |NN_mul_14s_6s_20_1_1_73 | 1|\n", - "|62 | mul_14s_6s_20_1_1_U60 |NN_mul_14s_6s_20_1_1_74 | 12919|\n", - "|63 | mul_14s_6s_20_1_1_U61 |NN_mul_14s_6s_20_1_1_75 | 995|\n", - "|64 | mul_14s_6s_20_1_1_U62 |NN_mul_14s_6s_20_1_1_76 | 3011|\n", - "|65 | mul_14s_6s_20_1_1_U63 |NN_mul_14s_6s_20_1_1_77 | 1986|\n", - "|66 | mul_14s_6s_20_1_1_U7 |NN_mul_14s_6s_20_1_1_78 | 41|\n", - "|67 | mul_14s_6s_20_1_1_U8 |NN_mul_14s_6s_20_1_1_79 | 1|\n", - "|68 | mul_14s_6s_20_1_1_U9 |NN_mul_14s_6s_20_1_1_80 | 21|\n", - "|69 | w2_99_U |NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_w2_99_ROM_Abkb | 5|\n", - "|70 | dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0 |NN_dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s | 451|\n", - "|71 | grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_fu_49 |NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s | 437|\n", - "|72 | flow_control_loop_pipe_no_ap_cont_U |NN_flow_control_loop_pipe_no_ap_cont | 38|\n", - "|73 | mul_24s_6s_26_3_1_U79 |NN_mul_24s_6s_26_3_1 | 156|\n", - "|74 | w5_U |NN_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_10_5_5_3_0_config5_s_w5_ROM_AUTO_1R | 4|\n", - "|75 | layer2_out_1_U |NN_fifo_w19_d2_S | 90|\n", - "|76 | U_NN_fifo_w19_d2_S_ShiftReg |NN_fifo_w19_d2_S_ShiftReg_17 | 76|\n", - "|77 | layer2_out_2_U |NN_fifo_w19_d2_S_0 | 87|\n", - "|78 | U_NN_fifo_w19_d2_S_ShiftReg |NN_fifo_w19_d2_S_ShiftReg_16 | 76|\n", - "|79 | layer2_out_3_U |NN_fifo_w19_d2_S_1 | 87|\n", - "|80 | U_NN_fifo_w19_d2_S_ShiftReg |NN_fifo_w19_d2_S_ShiftReg_15 | 76|\n", - "|81 | layer2_out_U |NN_fifo_w19_d2_S_2 | 90|\n", - "|82 | U_NN_fifo_w19_d2_S_ShiftReg |NN_fifo_w19_d2_S_ShiftReg | 76|\n", - "|83 | layer3_out_1_U |NN_fifo_w18_d2_S | 88|\n", - "|84 | U_NN_fifo_w18_d2_S_ShiftReg |NN_fifo_w18_d2_S_ShiftReg_14 | 76|\n", - "|85 | layer3_out_2_U |NN_fifo_w18_d2_S_3 | 65|\n", - "|86 | U_NN_fifo_w18_d2_S_ShiftReg |NN_fifo_w18_d2_S_ShiftReg_13 | 54|\n", - "|87 | layer3_out_3_U |NN_fifo_w18_d2_S_4 | 86|\n", - "|88 | U_NN_fifo_w18_d2_S_ShiftReg |NN_fifo_w18_d2_S_ShiftReg_12 | 75|\n", - "|89 | layer3_out_U |NN_fifo_w18_d2_S_5 | 64|\n", - "|90 | U_NN_fifo_w18_d2_S_ShiftReg |NN_fifo_w18_d2_S_ShiftReg | 54|\n", - "|91 | layer4_out_1_U |NN_fifo_w24_d2_S | 73|\n", - "|92 | U_NN_fifo_w24_d2_S_ShiftReg |NN_fifo_w24_d2_S_ShiftReg_11 | 63|\n", - "|93 | layer4_out_2_U |NN_fifo_w24_d2_S_6 | 73|\n", - "|94 | U_NN_fifo_w24_d2_S_ShiftReg |NN_fifo_w24_d2_S_ShiftReg_10 | 63|\n", - "|95 | layer4_out_3_U |NN_fifo_w24_d2_S_7 | 73|\n", - "|96 | U_NN_fifo_w24_d2_S_ShiftReg |NN_fifo_w24_d2_S_ShiftReg_9 | 63|\n", - "|97 | layer4_out_U |NN_fifo_w24_d2_S_8 | 73|\n", - "|98 | U_NN_fifo_w24_d2_S_ShiftReg |NN_fifo_w24_d2_S_ShiftReg | 63|\n", - "|99 | normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_U0 |NN_normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s | 304|\n", - "|100 | relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_U0 |NN_relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s | 320|\n", - "+------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------+------+\n", - "---------------------------------------------------------------------------------\n", - "Finished Writing Synthesis Report : Time (s): cpu = 00:00:34 ; elapsed = 00:00:48 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 14458 ; free virtual = 92464\n", - "---------------------------------------------------------------------------------\n", - "Synthesis finished with 0 errors, 0 critical warnings and 31 warnings.\n", - "Synthesis Optimization Runtime : Time (s): cpu = 00:00:35 ; elapsed = 00:00:49 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 23076 ; free virtual = 101081\n", - "Synthesis Optimization Complete : Time (s): cpu = 00:00:35 ; elapsed = 00:00:49 . Memory (MB): peak = 3396.332 ; gain = 1833.750 ; free physical = 23167 ; free virtual = 101078\n", - "INFO: [Project 1-571] Translating synthesized netlist\n", - "Netlist sorting complete. Time (s): cpu = 00:00:00.31 ; elapsed = 00:00:00.32 . Memory (MB): peak = 3396.332 ; gain = 0.000 ; free physical = 23150 ; free virtual = 101062\n", - "INFO: [Netlist 29-17] Analyzing 26577 Unisim elements for replacement\n", - "INFO: [Netlist 29-28] Unisim Transformation completed in 0 CPU seconds\n", - "INFO: [Project 1-570] Preparing netlist for logic optimization\n", - "INFO: [Opt 31-138] Pushed 0 inverter(s) to 0 load pin(s).\n", - "INFO: [Opt 31-422] The CLOCK_DOMAINS attribute on the BRAM cell dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_0 has been changed from INDEPENDENT to COMMON to match the clocking topology used for the BRAM.\n", - "INFO: [Opt 31-422] The CLOCK_DOMAINS attribute on the BRAM cell dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_1 has been changed from INDEPENDENT to COMMON to match the clocking topology used for the BRAM.\n", - "INFO: [Opt 31-422] The CLOCK_DOMAINS attribute on the BRAM cell dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_2 has been changed from INDEPENDENT to COMMON to match the clocking topology used for the BRAM.\n", - "INFO: [Opt 31-422] The CLOCK_DOMAINS attribute on the BRAM cell dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_3 has been changed from INDEPENDENT to COMMON to match the clocking topology used for the BRAM.\n", - "INFO: [Opt 31-422] The CLOCK_DOMAINS attribute on the BRAM cell dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0/grp_dense_resource_rf_leq_nin_ap_fixed_ap_fixed_19_18_5_3_0_config2_s_fu_14/w2_99_U/q0_reg_4 has been changed from INDEPENDENT to COMMON to match the clocking topology used for the BRAM.\n", - "Netlist sorting complete. Time (s): cpu = 00:00:00.01 ; elapsed = 00:00:00.01 . Memory (MB): peak = 3511.996 ; gain = 0.000 ; free physical = 23074 ; free virtual = 100983\n", - "INFO: [Project 1-111] Unisim Transformation Summary:\n", - " A total of 11269 instances were transformed.\n", - " BUFG => BUFGCE: 1 instance \n", - " DSP48E2 => DSP48E2 (DSP_ALU, DSP_A_B_DATA, DSP_C_DATA, DSP_MULTIPLIER, DSP_M_DATA, DSP_OUTPUT, DSP_PREADD, DSP_PREADD_DATA): 64 instances\n", - " IBUF => IBUF (IBUFCTRL, INBUF): 11204 instances\n", - "\n", - "Synth Design complete | Checksum: e51fcfb2\n", - "INFO: [Common 17-83] Releasing license: Synthesis\n", - "258 Infos, 31 Warnings, 0 Critical Warnings and 0 Errors encountered.\n", - "synth_design completed successfully\n", - "synth_design: Time (s): cpu = 00:00:44 ; elapsed = 00:00:58 . Memory (MB): peak = 3512.031 ; gain = 1957.492 ; free physical = 23071 ; free virtual = 100982\n", - "INFO: [Common 17-2834] synth_design peak Physical Memory [PSS] (MB): overall = 11159.258; main = 2777.964; forked = 8818.778\n", - "INFO: [Common 17-2834] synth_design peak Virtual Memory [VSS] (MB): overall = 19302.676; main = 3512.000; forked = 15910.258\n", - "# report_utilization -file vivado_synth.rpt\n", - "INFO: [Common 17-206] Exiting Vivado at Sun Oct 6 16:33:15 2024...\n", - "***** VIVADO SYNTHESIS COMPLETED IN 0h1m13s *****\n", - "INFO: [HLS 200-112] Total CPU user time: 57.36 seconds. Total CPU system time: 2.22 seconds. Total elapsed time: 86.12 seconds; peak allocated memory: 414.789 MB.\n", - "INFO: [Common 17-206] Exiting vitis_hls at Sun Oct 6 16:33:26 2024...\n", - "Cosim report not found.\n", - "Timing report not found.\n" - ] - }, - { - "data": { - "text/plain": [ - "{'CSynthesisReport': {'TargetClockPeriod': '3.22',\n", - " 'EstimatedClockPeriod': '2.314',\n", - " 'BestLatency': '68',\n", - " 'WorstLatency': '70',\n", - " 'IntervalMin': '55',\n", - " 'IntervalMax': '56',\n", - " 'BRAM_18K': '11',\n", - " 'DSP': '65',\n", - " 'FF': '26737',\n", - " 'LUT': '39009',\n", - " 'URAM': '0',\n", - " 'AvailableBRAM_18K': '2160',\n", - " 'AvailableDSP': '4272',\n", - " 'AvailableFF': '850560',\n", - " 'AvailableLUT': '425280',\n", - " 'AvailableURAM': '80'},\n", - " 'VivadoSynthReport': {'LUT': '31270',\n", - " 'FF': '24453',\n", - " 'BRAM_18K': '5',\n", - " 'URAM': '0',\n", - " 'DSP48E': '64'}}" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "hls_model.build(\n", " csim=False,\n", @@ -2994,232 +683,9 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found 1 solution(s) in ../hls4ml_projects/sl-100_ws-400_hn-4/NN_prj.\n", - "Reports for solution \"solution1\":\n", - "\n", - "C simulation report not found.\n", - "SYNTHESIS REPORT:\n", - "================================================================\n", - "== Vitis HLS Report for 'NN'\n", - "================================================================\n", - "* Date: Sun Oct 6 16:32:12 2024\n", - "\n", - "* Version: 2023.2.1 (Build 4070103 on Dec 13 2023)\n", - "* Project: NN_prj\n", - "* Solution: solution1 (Vivado IP Flow Target)\n", - "* Product family: zynquplusRFSOC\n", - "* Target device: xczu49dr-ffvf1760-2-e\n", - "\n", - "\n", - "================================================================\n", - "== Performance Estimates\n", - "================================================================\n", - "+ Timing: \n", - " * Summary: \n", - " +--------+---------+----------+------------+\n", - " | Clock | Target | Estimated| Uncertainty|\n", - " +--------+---------+----------+------------+\n", - " |ap_clk | 3.22 ns| 2.314 ns| 0.87 ns|\n", - " +--------+---------+----------+------------+\n", - "\n", - "+ Latency: \n", - " * Summary: \n", - " +---------+---------+----------+----------+-----+-----+----------+\n", - " | Latency (cycles) | Latency (absolute) | Interval | Pipeline |\n", - " | min | max | min | max | min | max | Type |\n", - " +---------+---------+----------+----------+-----+-----+----------+\n", - " | 68| 70| 0.219 us| 0.226 us| 55| 56| dataflow|\n", - " +---------+---------+----------+----------+-----+-----+----------+\n", - "\n", - " + Detail: \n", - " * Instance: \n", - " +---------------------------------------------------------------------+--------------------------------------------------------------------+---------+---------+-----------+-----------+-----+-----+---------+\n", - " | | | Latency (cycles) | Latency (absolute) | Interval | Pipeline|\n", - " | Instance | Module | min | max | min | max | min | max | Type |\n", - " +---------------------------------------------------------------------+--------------------------------------------------------------------+---------+---------+-----------+-----------+-----+-----+---------+\n", - " |dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0 |dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s | 54| 55| 0.174 us| 0.177 us| 54| 55| no|\n", - " |relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_U0 |relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s | 1| 1| 3.225 ns| 3.225 ns| 1| 1| yes|\n", - " |normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_U0 |normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s | 1| 1| 3.225 ns| 3.225 ns| 2| 2| yes|\n", - " |dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0 |dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s | 9| 10| 29.025 ns| 32.250 ns| 9| 10| no|\n", - " +---------------------------------------------------------------------+--------------------------------------------------------------------+---------+---------+-----------+-----------+-----+-----+---------+\n", - "\n", - " * Loop: \n", - " N/A\n", - "\n", - "\n", - "\n", - "================================================================\n", - "== Utilization Estimates\n", - "================================================================\n", - "* Summary: \n", - "+-----------------+---------+------+--------+--------+-----+\n", - "| Name | BRAM_18K| DSP | FF | LUT | URAM|\n", - "+-----------------+---------+------+--------+--------+-----+\n", - "|DSP | -| -| -| -| -|\n", - "|Expression | -| -| 0| 62| -|\n", - "|FIFO | -| -| 1188| 804| -|\n", - "|Instance | 11| 65| 25537| 38035| -|\n", - "|Memory | -| -| -| -| -|\n", - "|Multiplexer | -| -| -| 108| -|\n", - "|Register | -| -| 12| -| -|\n", - "+-----------------+---------+------+--------+--------+-----+\n", - "|Total | 11| 65| 26737| 39009| 0|\n", - "+-----------------+---------+------+--------+--------+-----+\n", - "|Available | 2160| 4272| 850560| 425280| 80|\n", - "+-----------------+---------+------+--------+--------+-----+\n", - "|Utilization (%) | ~0| 1| 3| 9| 0|\n", - "+-----------------+---------+------+--------+--------+-----+\n", - "\n", - "+ Detail: \n", - " * Instance: \n", - " +---------------------------------------------------------------------+--------------------------------------------------------------------+---------+----+-------+-------+-----+\n", - " | Instance | Module | BRAM_18K| DSP| FF | LUT | URAM|\n", - " +---------------------------------------------------------------------+--------------------------------------------------------------------+---------+----+-------+-------+-----+\n", - " |dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0 |dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_s | 11| 64| 24757| 37188| 0|\n", - " |dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0 |dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_s | 0| 1| 494| 363| 0|\n", - " |normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_U0 |normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_s | 0| 0| 135| 263| 0|\n", - " |relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_U0 |relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_s | 0| 0| 151| 221| 0|\n", - " +---------------------------------------------------------------------+--------------------------------------------------------------------+---------+----+-------+-------+-----+\n", - " |Total | | 11| 65| 25537| 38035| 0|\n", - " +---------------------------------------------------------------------+--------------------------------------------------------------------+---------+----+-------+-------+-----+\n", - "\n", - " * DSP: \n", - " N/A\n", - "\n", - " * Memory: \n", - " N/A\n", - "\n", - " * FIFO: \n", - " +----------------+---------+----+----+-----+------+-----+---------+\n", - " | Name | BRAM_18K| FF | LUT| URAM| Depth| Bits| Size:D*B|\n", - " +----------------+---------+----+----+-----+------+-----+---------+\n", - " |layer2_out_1_U | 0| 99| 0| -| 2| 19| 38|\n", - " |layer2_out_2_U | 0| 99| 0| -| 2| 19| 38|\n", - " |layer2_out_3_U | 0| 99| 0| -| 2| 19| 38|\n", - " |layer2_out_U | 0| 99| 0| -| 2| 19| 38|\n", - " |layer3_out_1_U | 0| 99| 0| -| 2| 18| 36|\n", - " |layer3_out_2_U | 0| 99| 0| -| 2| 18| 36|\n", - " |layer3_out_3_U | 0| 99| 0| -| 2| 18| 36|\n", - " |layer3_out_U | 0| 99| 0| -| 2| 18| 36|\n", - " |layer4_out_1_U | 0| 99| 0| -| 2| 24| 48|\n", - " |layer4_out_2_U | 0| 99| 0| -| 2| 24| 48|\n", - " |layer4_out_3_U | 0| 99| 0| -| 2| 24| 48|\n", - " |layer4_out_U | 0| 99| 0| -| 2| 24| 48|\n", - " +----------------+---------+----+----+-----+------+-----+---------+\n", - " |Total | 0|1188| 0| 0| 24| 244| 488|\n", - " +----------------+---------+----+----+-----+------+-----+---------+\n", - "\n", - " * Expression: \n", - " +---------------------------------------------------------------------------------+----------+----+---+----+------------+------------+\n", - " | Variable Name | Operation| DSP| FF| LUT| Bitwidth P0| Bitwidth P1|\n", - " +---------------------------------------------------------------------------------+----------+----+---+----+------------+------------+\n", - " |ap_channel_done_layer2_out | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer2_out_1 | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer2_out_2 | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer2_out_3 | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer3_out | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer3_out_1 | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer3_out_2 | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer3_out_3 | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer4_out | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer4_out_1 | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer4_out_2 | and| 0| 0| 2| 1| 1|\n", - " |ap_channel_done_layer4_out_3 | and| 0| 0| 2| 1| 1|\n", - " |ap_idle | and| 0| 0| 2| 1| 1|\n", - " |dense_resource_ap_fixed_14_14_5_3_0_ap_fixed_19_18_5_3_0_config2_U0_ap_continue | and| 0| 0| 2| 1| 1|\n", - " |dense_resource_ap_fixed_24_8_5_3_0_ap_fixed_10_5_5_3_0_config5_U0_ap_start | and| 0| 0| 2| 1| 1|\n", - " |normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_U0_ap_continue | and| 0| 0| 2| 1| 1|\n", - " |normalize_ap_fixed_19_18_5_3_0_ap_fixed_24_8_5_3_0_config4_U0_ap_start | and| 0| 0| 2| 1| 1|\n", - " |relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_U0_ap_continue | and| 0| 0| 2| 1| 1|\n", - " |relu_ap_fixed_19_18_5_3_0_ap_fixed_19_18_5_3_0_relu_config3_U0_ap_start | and| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer2_out | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer2_out_1 | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer2_out_2 | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer2_out_3 | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer3_out | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer3_out_1 | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer3_out_2 | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer3_out_3 | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer4_out | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer4_out_1 | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer4_out_2 | or| 0| 0| 2| 1| 1|\n", - " |ap_sync_channel_write_layer4_out_3 | or| 0| 0| 2| 1| 1|\n", - " +---------------------------------------------------------------------------------+----------+----+---+----+------------+------------+\n", - " |Total | | 0| 0| 62| 31| 31|\n", - " +---------------------------------------------------------------------------------+----------+----+---+----+------------+------------+\n", - "\n", - " * Multiplexer: \n", - " +----------------------------------------+----+-----------+-----+-----------+\n", - " | Name | LUT| Input Size| Bits| Total Bits|\n", - " +----------------------------------------+----+-----------+-----+-----------+\n", - " |ap_sync_reg_channel_write_layer2_out | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer2_out_1 | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer2_out_2 | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer2_out_3 | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer3_out | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer3_out_1 | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer3_out_2 | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer3_out_3 | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer4_out | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer4_out_1 | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer4_out_2 | 9| 2| 1| 2|\n", - " |ap_sync_reg_channel_write_layer4_out_3 | 9| 2| 1| 2|\n", - " +----------------------------------------+----+-----------+-----+-----------+\n", - " |Total | 108| 24| 12| 24|\n", - " +----------------------------------------+----+-----------+-----+-----------+\n", - "\n", - " * Register: \n", - " +----------------------------------------+---+----+-----+-----------+\n", - " | Name | FF| LUT| Bits| Const Bits|\n", - " +----------------------------------------+---+----+-----+-----------+\n", - " |ap_sync_reg_channel_write_layer2_out | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer2_out_1 | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer2_out_2 | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer2_out_3 | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer3_out | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer3_out_1 | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer3_out_2 | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer3_out_3 | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer4_out | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer4_out_1 | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer4_out_2 | 1| 0| 1| 0|\n", - " |ap_sync_reg_channel_write_layer4_out_3 | 1| 0| 1| 0|\n", - " +----------------------------------------+---+----+-----+-----------+\n", - " |Total | 12| 0| 12| 0|\n", - " +----------------------------------------+---+----+-----+-----------+\n", - "\n", - "\n", - "\n", - "================================================================\n", - "== Interface\n", - "================================================================\n", - "* Summary: \n", - "+-------------------+-----+-------+------------+--------------+--------------+\n", - "| RTL Ports | Dir | Bits | Protocol | Source Object| C Type |\n", - "+-------------------+-----+-------+------------+--------------+--------------+\n", - "|fc1_input | in| 11200| ap_vld| fc1_input| pointer|\n", - "|fc1_input_ap_vld | in| 1| ap_vld| fc1_input| pointer|\n", - "|layer5_out | out| 10| ap_vld| layer5_out| pointer|\n", - "|layer5_out_ap_vld | out| 1| ap_vld| layer5_out| pointer|\n", - "|ap_clk | in| 1| ap_ctrl_hs| NN| return value|\n", - "|ap_rst | in| 1| ap_ctrl_hs| NN| return value|\n", - "|ap_start | in| 1| ap_ctrl_hs| NN| return value|\n", - "|ap_done | out| 1| ap_ctrl_hs| NN| return value|\n", - "|ap_ready | out| 1| ap_ctrl_hs| NN| return value|\n", - "|ap_idle | out| 1| ap_ctrl_hs| NN| return value|\n", - "+-------------------+-----+-------+------------+--------------+--------------+\n", - "\n", - "Co-simulation report not found.\n" - ] - } - ], + "outputs": [], "source": [ "hls4ml.report.read_vivado_report(output_dir)" ]